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