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