Revision 1b696c26
b/snf-cyclades-app/synnefo/api/flavors.py | ||
---|---|---|
56 | 56 |
|
57 | 57 |
def flavor_to_dict(flavor, detail=True): |
58 | 58 |
d = {'id': flavor.id, 'name': flavor.name} |
59 |
d['links'] = util.flavor_to_links(flavor.id) |
|
59 | 60 |
if detail: |
60 | 61 |
d['ram'] = flavor.ram |
61 | 62 |
d['disk'] = flavor.disk |
b/snf-cyclades-app/synnefo/api/networks.py | ||
---|---|---|
85 | 85 |
|
86 | 86 |
def network_to_dict(network, user_id, detail=True): |
87 | 87 |
d = {'id': str(network.id), 'name': network.name} |
88 |
d['links'] = util.network_to_links(network.id) |
|
88 | 89 |
if detail: |
89 | 90 |
d['cidr'] = network.subnet |
90 | 91 |
d['cidr6'] = network.subnet6 |
b/snf-cyclades-app/synnefo/api/servers.py | ||
---|---|---|
126 | 126 |
|
127 | 127 |
def vm_to_dict(vm, detail=False): |
128 | 128 |
d = dict(id=vm.id, name=vm.name) |
129 |
d['links'] = util.vm_to_links(vm.id) |
|
129 | 130 |
if detail: |
130 | 131 |
d['status'] = get_rsapi_state(vm) |
131 | 132 |
d['progress'] = 100 if get_rsapi_state(vm) == 'ACTIVE' \ |
... | ... | |
133 | 134 |
d['hostId'] = vm.hostid |
134 | 135 |
d['updated'] = utils.isoformat(vm.updated) |
135 | 136 |
d['created'] = utils.isoformat(vm.created) |
136 |
d['flavor'] = vm.flavor.id |
|
137 |
d['image'] = vm.imageid |
|
137 |
d['flavor'] = {"id": vm.flavor.id, |
|
138 |
"links": util.flavor_to_links(vm.flavor.id)} |
|
139 |
d['image'] = {"id": vm.imageid, |
|
140 |
"links": util.image_to_links(vm.imageid)} |
|
138 | 141 |
d['suspended'] = vm.suspended |
139 | 142 |
|
140 | 143 |
metadata = dict((m.meta_key, m.meta_value) for m in vm.metadata.all()) |
141 |
if metadata: |
|
142 |
d['metadata'] = metadata |
|
144 |
d['metadata'] = metadata |
|
143 | 145 |
|
144 | 146 |
vm_nics = vm.nics.filter(state="ACTIVE").order_by("index") |
145 | 147 |
attachments = map(nic_to_dict, vm_nics) |
... | ... | |
149 | 151 |
diagnostic = vm.get_last_diagnostic() |
150 | 152 |
if diagnostic: |
151 | 153 |
d['diagnostics'] = diagnostics_to_dict([diagnostic]) |
154 |
else: |
|
155 |
d['diagnostics'] = [] |
|
152 | 156 |
|
153 | 157 |
return d |
154 | 158 |
|
b/snf-cyclades-app/synnefo/api/test/servers.py | ||
---|---|---|
90 | 90 |
self.assertSuccess(response) |
91 | 91 |
servers = json.loads(response.content)['servers'] |
92 | 92 |
db_server = self.vm1 |
93 |
self.assertEqual(servers, [{'name': db_server.name, |
|
94 |
'id': db_server.id}]) |
|
93 |
server = servers[0] |
|
94 |
self.assertEqual(server["name"], db_server.name) |
|
95 |
self.assertEqual(server["id"], db_server.id) |
|
95 | 96 |
|
96 | 97 |
def test_server_list_detail(self): |
97 | 98 |
"""Test if the servers list details are returned.""" |
... | ... | |
104 | 105 |
self.assertEqual(len(servers), len(user_vms)) |
105 | 106 |
for api_vm in servers: |
106 | 107 |
db_vm = user_vms[api_vm['id']] |
107 |
self.assertEqual(api_vm['flavor'], db_vm.flavor.id) |
|
108 |
self.assertEqual(api_vm['flavor']["id"], db_vm.flavor.id)
|
|
108 | 109 |
self.assertEqual(api_vm['hostId'], db_vm.hostid) |
109 | 110 |
self.assertEqual(api_vm['id'], db_vm.id) |
110 |
self.assertEqual(api_vm['image'], db_vm.imageid) |
|
111 |
self.assertEqual(api_vm['image']["id"], db_vm.imageid)
|
|
111 | 112 |
self.assertEqual(api_vm['name'], db_vm.name) |
112 | 113 |
self.assertEqual(api_vm['status'], get_rsapi_state(db_vm)) |
113 | 114 |
self.assertSuccess(response) |
... | ... | |
124 | 125 |
response = self.myget('servers/%d' % db_vm.id, user) |
125 | 126 |
server = json.loads(response.content)['server'] |
126 | 127 |
|
127 |
self.assertEqual(server['flavor'], db_vm.flavor.id) |
|
128 |
self.assertEqual(server['flavor']["id"], db_vm.flavor.id)
|
|
128 | 129 |
self.assertEqual(server['hostId'], db_vm.hostid) |
129 | 130 |
self.assertEqual(server['id'], db_vm.id) |
130 |
self.assertEqual(server['image'], db_vm.imageid) |
|
131 |
self.assertEqual(server['image']["id"], db_vm.imageid)
|
|
131 | 132 |
self.assertEqual(server['name'], db_vm.name) |
132 | 133 |
self.assertEqual(server['status'], get_rsapi_state(db_vm)) |
133 | 134 |
api_nic = server['attachments'][0] |
b/snf-cyclades-app/synnefo/api/util.py | ||
---|---|---|
66 | 66 |
from synnefo.plankton.utils import image_backend |
67 | 67 |
from synnefo.settings import MAX_CIDR_BLOCK |
68 | 68 |
|
69 |
from synnefo.cyclades_settings import cyclades_services, BASE_HOST |
|
70 |
from synnefo.lib.services import get_service_path |
|
71 |
from synnefo.lib import join_urls |
|
72 |
|
|
73 |
COMPUTE_URL = \ |
|
74 |
join_urls(BASE_HOST, |
|
75 |
get_service_path(cyclades_services, "compute", version="v2.0")) |
|
76 |
SERVERS_URL = join_urls(COMPUTE_URL, "servers/") |
|
77 |
NETWORKS_URL = join_urls(COMPUTE_URL, "networks/") |
|
78 |
FLAVORS_URL = join_urls(COMPUTE_URL, "flavors/") |
|
79 |
IMAGES_URL = join_urls(COMPUTE_URL, "images/") |
|
80 |
PLANKTON_URL = \ |
|
81 |
join_urls(BASE_HOST, |
|
82 |
get_service_path(cyclades_services, "image", version="v1.0")) |
|
83 |
IMAGES_PLANKTON_URL = join_urls(PLANKTON_URL, "images/") |
|
84 |
|
|
69 | 85 |
|
70 | 86 |
log = getLogger('synnefo.api') |
71 | 87 |
|
... | ... | |
454 | 470 |
|
455 | 471 |
return set(list(keypairusernames) + list(serverusernames) + |
456 | 472 |
list(networkusernames)) |
473 |
|
|
474 |
|
|
475 |
def vm_to_links(vm_id): |
|
476 |
link = join_urls(SERVERS_URL, str(vm_id)) |
|
477 |
return [{"ref": rel, "link": link} for rel in ("self", "bookmark")] |
|
478 |
|
|
479 |
|
|
480 |
def network_to_links(network_id): |
|
481 |
link = join_urls(NETWORKS_URL, str(network_id)) |
|
482 |
return [{"ref": rel, "link": link} for rel in ("self", "bookmark")] |
|
483 |
|
|
484 |
|
|
485 |
def flavor_to_links(flavor_id): |
|
486 |
link = join_urls(FLAVORS_URL, str(flavor_id)) |
|
487 |
return [{"ref": rel, "link": link} for rel in ("self", "bookmark")] |
|
488 |
|
|
489 |
|
|
490 |
def image_to_links(image_id): |
|
491 |
link = join_urls(IMAGES_URL, str(image_id)) |
|
492 |
links = [{"ref": rel, "link": link} for rel in ("self", "bookmark")] |
|
493 |
links.append({"rel": "alternate", |
|
494 |
"link": join_urls(IMAGES_PLANKTON_URL, str(image_id))}) |
|
495 |
return links |
Also available in: Unified diff