Revision ccd0d474 api/servers.py
b/api/servers.py | ||
---|---|---|
33 | 33 |
|
34 | 34 |
import logging |
35 | 35 |
|
36 |
from django.conf import settings |
|
36 | 37 |
from django.conf.urls.defaults import patterns |
37 | 38 |
from django.http import HttpResponse |
38 | 39 |
from django.template.loader import render_to_string |
39 | 40 |
from django.utils import simplejson as json |
40 | 41 |
|
41 |
from synnefo.api import util |
|
42 |
from synnefo.api import faults, util
|
|
42 | 43 |
from synnefo.api.actions import server_actions |
43 | 44 |
from synnefo.api.common import method_not_allowed |
44 |
from synnefo.api.faults import BadRequest, ItemNotFound, ServiceUnavailable |
|
45 | 45 |
from synnefo.db.models import VirtualMachine, VirtualMachineMetadata |
46 | 46 |
from synnefo.logic.backend import create_instance, delete_instance |
47 | 47 |
from synnefo.logic.utils import get_rsapi_state |
... | ... | |
199 | 199 |
image_id = server['imageRef'] |
200 | 200 |
flavor_id = server['flavorRef'] |
201 | 201 |
except (KeyError, AssertionError): |
202 |
raise BadRequest('Malformed request.')
|
|
202 |
raise faults.BadRequest("Malformed request")
|
|
203 | 203 |
|
204 | 204 |
image = util.get_image(image_id, owner) |
205 | 205 |
flavor = util.get_flavor(flavor_id) |
206 | 206 |
password = util.random_password() |
207 | 207 |
|
208 |
count = VirtualMachine.objects.filter(owner=owner, deleted=False).count() |
|
209 |
if count >= settings.MAX_VMS_PER_USER: |
|
210 |
raise faults.OverLimit("Maximum number of servers reached") |
|
211 |
|
|
208 | 212 |
# We must save the VM instance now, so that it gets a valid vm.backend_id. |
209 | 213 |
vm = VirtualMachine.objects.create( |
210 | 214 |
name=name, |
... | ... | |
216 | 220 |
create_instance(vm, flavor, image, password) |
217 | 221 |
except GanetiApiError: |
218 | 222 |
vm.delete() |
219 |
raise ServiceUnavailable('Could not create server.')
|
|
223 |
raise faults.ServiceUnavailable("Could not create server")
|
|
220 | 224 |
|
221 | 225 |
for key, val in metadata.items(): |
222 | 226 |
VirtualMachineMetadata.objects.create( |
... | ... | |
263 | 267 |
try: |
264 | 268 |
name = req['server']['name'] |
265 | 269 |
except (TypeError, KeyError): |
266 |
raise BadRequest('Malformed request.')
|
|
270 |
raise faults.BadRequest("Malformed request")
|
|
267 | 271 |
|
268 | 272 |
vm = util.get_vm(server_id, request.user) |
269 | 273 |
vm.name = name |
... | ... | |
291 | 295 |
vm = util.get_vm(server_id, request.user) |
292 | 296 |
req = util.get_request_dict(request) |
293 | 297 |
if len(req) != 1: |
294 |
raise BadRequest('Malformed request.')
|
|
298 |
raise faults.BadRequest("Malformed request")
|
|
295 | 299 |
|
296 | 300 |
key = req.keys()[0] |
297 | 301 |
val = req[key] |
... | ... | |
300 | 304 |
assert isinstance(val, dict) |
301 | 305 |
return server_actions[key](request, vm, req[key]) |
302 | 306 |
except KeyError: |
303 |
raise BadRequest('Unknown action.')
|
|
307 |
raise faults.BadRequest("Unknown action")
|
|
304 | 308 |
except AssertionError: |
305 |
raise BadRequest('Invalid argument.')
|
|
309 |
raise faults.BadRequest("Invalid argument")
|
|
306 | 310 |
|
307 | 311 |
@util.api_method('GET') |
308 | 312 |
def list_addresses(request, server_id): |
... | ... | |
376 | 380 |
metadata = req['metadata'] |
377 | 381 |
assert isinstance(metadata, dict) |
378 | 382 |
except (KeyError, AssertionError): |
379 |
raise BadRequest('Malformed request.')
|
|
383 |
raise faults.BadRequest("Malformed request")
|
|
380 | 384 |
|
381 | 385 |
updated = {} |
382 | 386 |
|
... | ... | |
428 | 432 |
assert len(metadict) == 1 |
429 | 433 |
assert key in metadict |
430 | 434 |
except (KeyError, AssertionError): |
431 |
raise BadRequest('Malformed request.')
|
|
435 |
raise faults.BadRequest("Malformed request")
|
|
432 | 436 |
|
433 | 437 |
meta, created = VirtualMachineMetadata.objects.get_or_create( |
434 | 438 |
meta_key=key, |
Also available in: Unified diff