Revision 1f638a85 snf-cyclades-app/synnefo/api/servers.py

b/snf-cyclades-app/synnefo/api/servers.py
124 124
    return d
125 125

  
126 126

  
127
def nics_to_addresses(nics):
128
    addresses = {}
129
    for nic in nics:
130
        net_nics = []
131
        net_nics.append({"version": 4, "addr": nic.ipv4})
132
        if nic.ipv6:
133
            net_nics.append({"version": 6, "addr": nic.ipv6})
134
        addresses[nic.network.id] = net_nics
135
    return addresses
136

  
137

  
127 138
def vm_to_dict(vm, detail=False):
128 139
    d = dict(id=vm.id, name=vm.name)
129 140
    d['links'] = util.vm_to_links(vm.id)
......
148 159
        vm_nics = vm.nics.filter(state="ACTIVE").order_by("index")
149 160
        attachments = map(nic_to_dict, vm_nics)
150 161
        d['attachments'] = attachments
162
        d['addresses'] = nics_to_addresses(vm_nics)
151 163

  
152 164
        # include the latest vm diagnostic, if set
153 165
        diagnostic = vm.get_last_diagnostic()
......
299 311

  
300 312
@transaction.commit_manually
301 313
def do_create_server(userid, name, password, flavor, image, metadata={},
302
                  personality=[], network=None, backend=None):
314
                     personality=[], network=None, backend=None):
303 315
    if backend is None:
304 316
        # Allocate backend to host the server. Commit after allocation to
305 317
        # release the locks hold by the backend allocator.
......
544 556

  
545 557
    log.debug('list_addresses %s', server_id)
546 558
    vm = util.get_vm(server_id, request.user_uniq)
547
    addresses = [nic_to_dict(nic) for nic in vm.nics.all()]
559
    attachments = [nic_to_dict(nic) for nic in vm.nics.all()]
560
    addresses = nics_to_addresses(vm.nics.all())
548 561

  
549 562
    if request.serialization == 'xml':
550 563
        data = render_to_string('list_addresses.xml', {'addresses': addresses})
551 564
    else:
552
        data = json.dumps({'addresses': addresses})
565
        data = json.dumps({'addresses': addresses, 'attachments': attachments})
553 566

  
554 567
    return HttpResponse(data, status=200)
555 568

  
......
567 580
    log.debug('list_addresses_by_network %s %s', server_id, network_id)
568 581
    machine = util.get_vm(server_id, request.user_uniq)
569 582
    network = util.get_network(network_id, request.user_uniq)
570
    nic = util.get_nic(machine, network)
571
    address = nic_to_dict(nic)
583
    nics = machine.nics.filter(network=network).all()
584
    addresses = nics_to_addresses(nics)
572 585

  
573 586
    if request.serialization == 'xml':
574
        data = render_to_string('address.xml', {'address': address})
587
        data = render_to_string('address.xml', {'addresses': addresses})
575 588
    else:
576
        data = json.dumps({'network': address})
589
        data = json.dumps({'network': addresses})
577 590

  
578 591
    return HttpResponse(data, status=200)
579 592

  

Also available in: Unified diff