Revision b19653d1 api/networks.py
b/api/networks.py | ||
---|---|---|
13 | 13 |
urlpatterns = patterns('synnefo.api.networks', |
14 | 14 |
(r'^(?:/|.json|.xml)?$', 'demux'), |
15 | 15 |
(r'^/detail(?:.json|.xml)?$', 'list_networks', {'detail': True}), |
16 |
(r'^/(\w+)(?:.json|.xml)?$', 'network_demux'),
|
|
17 |
(r'^/(\w+)/action(?:.json|.xml)?$', 'network_action'),
|
|
16 |
(r'^/(\d+)(?:.json|.xml)?$', 'network_demux'),
|
|
17 |
(r'^/(\d+)/action(?:.json|.xml)?$', 'network_action'),
|
|
18 | 18 |
) |
19 | 19 |
|
20 | 20 |
|
... | ... | |
26 | 26 |
else: |
27 | 27 |
return method_not_allowed(request) |
28 | 28 |
|
29 |
def network_demux(request, network): |
|
29 |
def network_demux(request, network_id):
|
|
30 | 30 |
if request.method == 'GET': |
31 |
return get_network_details(request, network) |
|
31 |
return get_network_details(request, network_id)
|
|
32 | 32 |
elif request.method == 'PUT': |
33 |
return update_network_name(request, network) |
|
33 |
return update_network_name(request, network_id)
|
|
34 | 34 |
elif request.method == 'DELETE': |
35 |
return delete_network(request, network) |
|
35 |
return delete_network(request, network_id)
|
|
36 | 36 |
else: |
37 | 37 |
return method_not_allowed(request) |
38 | 38 |
|
39 | 39 |
|
40 | 40 |
def network_to_dict(network, detail=True): |
41 |
d = {'name': network.name} |
|
41 |
d = {'id': network.id, 'name': network.name}
|
|
42 | 42 |
if detail: |
43 | 43 |
d['servers'] = {'values': [vm.id for vm in network.machines.all()]} |
44 | 44 |
return d |
... | ... | |
96 | 96 |
except (KeyError, ValueError): |
97 | 97 |
raise BadRequest('Malformed request.') |
98 | 98 |
|
99 |
network, created = Network.objects.get_or_create(name=name, owner=request.user) |
|
100 |
if not created: |
|
101 |
raise BadRequest('Network already exists.') |
|
99 |
network = Network.objects.create(name=name, owner=request.user) |
|
102 | 100 |
networkdict = network_to_dict(network) |
103 | 101 |
return render_network(request, networkdict, status=202) |
104 | 102 |
|
105 | 103 |
@api_method('GET') |
106 |
def get_network_details(request, network): |
|
104 |
def get_network_details(request, network_id):
|
|
107 | 105 |
# Normal Response Codes: 200, 203 |
108 | 106 |
# Error Response Codes: computeFault (400, 500), |
109 | 107 |
# serviceUnavailable (503), |
... | ... | |
112 | 110 |
# itemNotFound (404), |
113 | 111 |
# overLimit (413) |
114 | 112 |
|
115 |
net = get_network(network, request.user) |
|
113 |
net = get_network(network_id, request.user)
|
|
116 | 114 |
netdict = network_to_dict(net) |
117 | 115 |
return render_network(request, netdict) |
118 | 116 |
|
119 | 117 |
@api_method('PUT') |
120 |
def update_network_name(request, network): |
|
118 |
def update_network_name(request, network_id):
|
|
121 | 119 |
# Normal Response Code: 204 |
122 | 120 |
# Error Response Codes: computeFault (400, 500), |
123 | 121 |
# serviceUnavailable (503), |
... | ... | |
134 | 132 |
except (TypeError, KeyError): |
135 | 133 |
raise BadRequest('Malformed request.') |
136 | 134 |
|
137 |
net = get_network(network, request.user) |
|
135 |
net = get_network(network_id, request.user)
|
|
138 | 136 |
net.name = name |
139 | 137 |
net.save() |
140 | 138 |
return HttpResponse(status=204) |
141 | 139 |
|
142 | 140 |
@api_method('DELETE') |
143 |
def delete_network(request, network): |
|
141 |
def delete_network(request, network_id):
|
|
144 | 142 |
# Normal Response Code: 204 |
145 | 143 |
# Error Response Codes: computeFault (400, 500), |
146 | 144 |
# serviceUnavailable (503), |
... | ... | |
149 | 147 |
# unauthorized (401), |
150 | 148 |
# overLimit (413) |
151 | 149 |
|
152 |
net = get_network(network, request.user) |
|
150 |
net = get_network(network_id, request.user)
|
|
153 | 151 |
net.delete() |
154 | 152 |
return HttpResponse(status=204) |
155 | 153 |
|
156 | 154 |
@api_method('POST') |
157 |
def network_action(request, network): |
|
158 |
net = get_network(network, request.user) |
|
155 |
def network_action(request, network_id):
|
|
156 |
net = get_network(network_id, request.user)
|
|
159 | 157 |
req = get_request_dict(request) |
160 | 158 |
if len(req) != 1: |
161 | 159 |
raise BadRequest('Malformed request.') |
Also available in: Unified diff