Revision fae6e5f0 snf-cyclades-app/synnefo/api/ports.py

b/snf-cyclades-app/synnefo/api/ports.py
44 44

  
45 45
from synnefo.api import util
46 46
from synnefo.db.models import NetworkInterface
47
from synnefo.logic import ports
47
from synnefo.logic import servers
48 48

  
49 49
from logging import getLogger
50 50

  
......
98 98

  
99 99

  
100 100
@api.api_method(http_method='POST', user_required=True, logger=log)
101
@transaction.commit_on_success
101 102
def create_port(request):
102 103
    user_id = request.user_uniq
103 104
    req = api.utils.get_request_dict(request)
......
105 106

  
106 107
    port_dict = api.utils.get_attribute(req, "port")
107 108
    net_id = api.utils.get_attribute(port_dict, "network_id")
108
    dev_id = api.utils.get_attribute(port_dict, "device_id")
109 109

  
110 110
    network = util.get_network(net_id, user_id, non_deleted=True)
111 111

  
......
143 143
        ipaddress = util.allocate_ip(network, user_id,
144 144
                                     address=fixed_ip_address)
145 145

  
146
    vm = util.get_vm(dev_id, user_id, for_update=True, non_deleted=True,
147
                     non_suspended=True)
146
    device_id = api.utils.get_attribute(port_dict, "device_id", required=False)
147
    vm = None
148
    if device_id is not None:
149
        vm = util.get_vm(device_id, user_id, for_update=True, non_deleted=True,
150
                         non_suspended=True)
148 151

  
149 152
    name = api.utils.get_attribute(port_dict, "name", required=False)
150 153
    if name is None:
......
161 164
            sg = util.get_security_group(int(gid))
162 165
            sg_list.append(sg)
163 166

  
164
    new_port = ports.create(network, vm, ipaddress=ipaddress,
165
                            security_groups=sg_list)
167
    new_port = servers.create_port(user_id, network, use_ipaddress=ipaddress,
168
                                   machine=vm)
166 169

  
167 170
    response = render_port(request, port_to_dict(new_port), status=201)
168 171

  
......
215 218
    log.info('delete_port %s', port_id)
216 219
    user_id = request.user_uniq
217 220
    port = util.get_port(port_id, user_id, for_update=True)
218
    ports.delete(port)
221
    servers.delete_port(port)
219 222
    return HttpResponse(status=204)
220 223

  
221 224
#util functions
......
224 227
def port_to_dict(port, detail=True):
225 228
    d = {'id': str(port.id), 'name': port.name}
226 229
    if detail:
227
        user_id = port.machine.id
230
        user_id = port.userid
231
        machine_id = port.machine_id
228 232
        d['user_id'] = user_id
229 233
        d['tenant_id'] = user_id
230
        d['device_id'] = str(port.machine.id)
234
        d['device_id'] = str(machine_id) if machine_id else None
231 235
        # TODO: Change this based on the status of VM
232 236
        d['admin_state_up'] = True
233 237
        d['mac_address'] = port.mac

Also available in: Unified diff