Revision bd40abfa snf-cyclades-app/synnefo/api/networks.py
b/snf-cyclades-app/synnefo/api/networks.py | ||
---|---|---|
41 | 41 |
from django.template.loader import render_to_string |
42 | 42 |
from django.utils import simplejson as json |
43 | 43 |
|
44 |
from snf_django.lib.api import faults |
|
44 | 45 |
from synnefo.api import util |
45 | 46 |
from synnefo.api.actions import network_actions |
46 | 47 |
from synnefo.api.common import method_not_allowed |
47 |
from synnefo.api.faults import (ServiceUnavailable, BadRequest, Forbidden, |
|
48 |
NetworkInUse, OverLimit) |
|
49 | 48 |
from synnefo import quotas |
50 | 49 |
from synnefo.db.models import Network |
51 | 50 |
from synnefo.db.pools import EmptyPool |
... | ... | |
169 | 168 |
d = req['network'] |
170 | 169 |
name = d['name'] |
171 | 170 |
except KeyError: |
172 |
raise BadRequest("Malformed request") |
|
171 |
raise faults.BadRequest("Malformed request")
|
|
173 | 172 |
|
174 | 173 |
# Get and validate flavor. Flavors are still exposed as 'type' in the |
175 | 174 |
# API. |
176 | 175 |
flavor = d.get("type", None) |
177 | 176 |
if flavor is None: |
178 |
raise BadRequest("Missing request parameter 'type'") |
|
177 |
raise faults.BadRequest("Missing request parameter 'type'")
|
|
179 | 178 |
elif flavor not in Network.FLAVORS.keys(): |
180 |
raise BadRequest("Invalid network type '%s'" % flavor) |
|
179 |
raise faults.BadRequest("Invalid network type '%s'" % flavor)
|
|
181 | 180 |
elif flavor not in settings.API_ENABLED_NETWORK_FLAVORS: |
182 |
raise Forbidden("Can not create network of type '%s'" % flavor) |
|
181 |
raise faults.Forbidden("Can not create network of type '%s'" % flavor)
|
|
183 | 182 |
|
184 | 183 |
public = d.get("public", False) |
185 | 184 |
if public: |
186 |
raise Forbidden("Can not create a public network.") |
|
185 |
raise faults.Forbidden("Can not create a public network.")
|
|
187 | 186 |
|
188 | 187 |
dhcp = d.get('dhcp', True) |
189 | 188 |
|
... | ... | |
224 | 223 |
except EmptyPool: |
225 | 224 |
log.error("Failed to allocate resources for network of type: %s", |
226 | 225 |
flavor) |
227 |
raise ServiceUnavailable("Failed to allocate network resources") |
|
226 |
raise faults.ServiceUnavailable("Failed to allocate network resources")
|
|
228 | 227 |
|
229 | 228 |
# Create BackendNetwork entries for each Backend |
230 | 229 |
network.create_backend_network() |
... | ... | |
277 | 276 |
try: |
278 | 277 |
name = req['network']['name'] |
279 | 278 |
except (TypeError, KeyError): |
280 |
raise BadRequest('Malformed request.') |
|
279 |
raise faults.BadRequest('Malformed request.')
|
|
281 | 280 |
|
282 | 281 |
net = util.get_network(network_id, request.user_uniq) |
283 | 282 |
if net.public: |
284 |
raise Forbidden('Can not rename the public network.') |
|
283 |
raise faults.Forbidden('Can not rename the public network.')
|
|
285 | 284 |
if net.deleted: |
286 | 285 |
raise Network.DeletedError |
287 | 286 |
net.name = name |
... | ... | |
303 | 302 |
log.info('delete_network %s', network_id) |
304 | 303 |
net = util.get_network(network_id, request.user_uniq, for_update=True) |
305 | 304 |
if net.public: |
306 |
raise Forbidden('Can not delete the public network.') |
|
305 |
raise faults.Forbidden('Can not delete the public network.')
|
|
307 | 306 |
|
308 | 307 |
if net.deleted: |
309 | 308 |
raise Network.DeletedError |
310 | 309 |
|
311 | 310 |
if net.machines.all(): # Nics attached on network |
312 |
raise NetworkInUse('Machines are connected to network.') |
|
311 |
raise faults.NetworkInUse('Machines are connected to network.')
|
|
313 | 312 |
|
314 | 313 |
net.action = 'DESTROY' |
315 | 314 |
net.save() |
... | ... | |
323 | 322 |
req = util.get_request_dict(request) |
324 | 323 |
log.debug('network_action %s %s', network_id, req) |
325 | 324 |
if len(req) != 1: |
326 |
raise BadRequest('Malformed request.') |
|
325 |
raise faults.BadRequest('Malformed request.')
|
|
327 | 326 |
|
328 | 327 |
net = util.get_network(network_id, request.user_uniq) |
329 | 328 |
if net.public: |
330 |
raise Forbidden('Can not modify the public network.') |
|
329 |
raise faults.Forbidden('Can not modify the public network.')
|
|
331 | 330 |
if net.deleted: |
332 | 331 |
raise Network.DeletedError |
333 | 332 |
|
... | ... | |
337 | 336 |
assert isinstance(val, dict) |
338 | 337 |
return network_actions[key](request, net, req[key]) |
339 | 338 |
except KeyError: |
340 |
raise BadRequest('Unknown action.') |
|
339 |
raise faults.BadRequest('Unknown action.')
|
|
341 | 340 |
except AssertionError: |
342 |
raise BadRequest('Invalid argument.') |
|
341 |
raise faults.BadRequest('Invalid argument.') |
Also available in: Unified diff