Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / neutron / subnet_views.py @ d6b24130

History | View | Annotate | Download (3.3 kB)

1
from django.http import HttpResponse
2
from django.utils import simplejson as json
3

    
4
from snf_django.lib import api
5
from snf_django.lib.api import utils
6

    
7
from models import Network
8

    
9
from logging import getLogger
10

    
11
log = getLogger(__name__)
12

    
13
def demux(request):
14
    if request.method == 'GET':
15
        return list_networks(request)
16
        #return HttpResponse("in subnet get")
17
    elif request.method == 'POST':
18
        #return create_network(request)
19
        return HttpResponse("in subnet POST")
20
    else:
21
        return api.api_method_not_allowed(request)
22

    
23
def subnet_demux(request,offset):
24
    if request.method == 'GET':
25
        #return get_network(request,offset)
26
        return HttpResponse("in subnet det get")
27
    elif request.method == 'DELETE':
28
        #return delete_network(request,offset)
29
        return HttpResponse("in subnet det delete")
30
    elif request.method == 'PUT':
31
        #return update_network(request,offset)
32
        return HttpResponse("in subnet det put")
33
    else:
34
        return api.api_method_not_allowed(request)
35

    
36
@api.api_method(http_method='GET', user_required=True, logger=log)
37
def list_networks(request):
38
    user_networks = Network.objects.all()
39
    networks_dict = [network_to_dict(net)
40
                    for net in user_networks.order_by('name')]
41
    data = json.dumps({'networks': networks_dict})
42
    return HttpResponse(data, status=200)
43

    
44
@api.api_method(http_method='POST', user_required=True, logger=log)
45
def create_network(request):
46
    dic = utils.get_request_dict(request)
47
    try:
48
            net = dic["network"]
49
            name = net["name"]
50
            user_id = request.user_uniq
51
    except KeyError:
52
        raise api.faults.BadRequest("Wrong data")
53
    # get more info from the JSON
54
    new_net = Network(name=name,user_id=user_id)
55
    new_net.save()
56
    net_dic = network_to_dict(new_net)
57
    data = json.dumps({'network':net_dic})
58
    return HttpResponse("hello world")
59

    
60

    
61
@api.api_method(http_method='GET', user_required=True, logger=log)
62
def get_network(request,offset):
63
    try:
64
        net = Network.objects.get(id=offset)
65
    except Network.DoesNotExist:
66
        raise api.faults.ItemNotFound("Network not found")
67

    
68
    net_dic = network_to_dict(net)
69
    data = json.dumps({'network': net_dic})
70
    return HttpResponse(data,status=200)
71

    
72
@api.api_method(http_method='DELETE', user_required=True, logger=log)
73
def delete_network(request,offset):
74
   try:
75
        net = Network.objects.get(id=offset)
76
   except Network.DoesNotExist:
77
        raise api.faults.ItemNotFound("Network not found")
78

    
79
   net.delete()
80
   return HttpResponse(status=204)
81

    
82
@api.api_method(http_method='PUT', user_required=True, logger=log)
83
def update_network(request,offset):
84
    try:
85
        net = Network.objects.get(id=offset)
86
    except Network.DoesNotExist:
87
        raise api.faults.ItemNotFound("Network not found")
88
    info = utils.get_request_dict(request)
89
    updatable = set(["name","driver"])
90
    try:
91
                new_vals = info["network"]
92
    except Keyerror:
93
        raise api.faults.BadRequest()
94

    
95
    for key,val in new_vals.iteritems():
96
        if key in updatable:
97
            setattr(net,key,val)
98
        else:
99
            raise api.faults.BadRequest()
100
        net.save()
101
    net_dic = network_to_dict(net)
102
    data = json.dumps({"network":net_dic})
103
    return HttpResponse(data)
104

    
105
def network_to_dict(net):
106
    d = dict(name=net.name,driver=net.driver,driver_ops=net.driver_ops,id=net.id,user_id=net.user_id)
107
    return d
108

    
109