Revision 08b079e2 snf-cyclades-app/synnefo/api/actions.py
b/snf-cyclades-app/synnefo/api/actions.py | ||
---|---|---|
39 | 39 |
from django.template.loader import render_to_string |
40 | 40 |
from django.utils import simplejson as json |
41 | 41 |
|
42 |
from synnefo.api.faults import BadRequest, ServiceUnavailable |
|
43 |
from synnefo.api.util import random_password, get_vm |
|
42 |
from synnefo.api.faults import BadRequest, ServiceUnavailable, ItemNotFound
|
|
43 |
from synnefo.api.util import random_password, get_vm, get_nic_from_index
|
|
44 | 44 |
from synnefo.db.models import NetworkInterface |
45 | 45 |
from synnefo.logic import backend |
46 | 46 |
from synnefo.logic.utils import get_rsapi_state |
... | ... | |
316 | 316 |
# itemNotFound (404), |
317 | 317 |
# overLimit (413) |
318 | 318 |
|
319 |
server_id = args.get('serverRef', None) |
|
320 |
if not server_id: |
|
319 |
try: #attachment string: nic-<vm-id>-<nic-index> |
|
320 |
server_id = args.get('attachment', None).split('-')[1] |
|
321 |
nic_index = args.get('attachment', None).split('-')[2] |
|
322 |
except IndexError: |
|
323 |
raise BadRequest('Malformed Network Interface Id') |
|
324 |
|
|
325 |
if not server_id or not nic_index: |
|
321 | 326 |
raise BadRequest('Malformed Request.') |
322 | 327 |
vm = get_vm(server_id, request.user_uniq) |
323 |
backend.disconnect_from_network(vm, net) |
|
328 |
nic = get_nic_from_index(vm, nic_index) |
|
329 |
backend.disconnect_nic_from_vm(vm, nic) |
|
324 | 330 |
return HttpResponse(status=202) |
Also available in: Unified diff