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 |
|