Revision 03493855 kamaki/clients/test/cyclades.py
b/kamaki/clients/test/cyclades.py | ||
---|---|---|
30 | 30 |
# documentation are those of the authors and should not be |
31 | 31 |
# interpreted as representing official policies, either expressed |
32 | 32 |
# or implied, of GRNET S.A. |
33 |
from mock import patch, Mock |
|
34 |
from unittest import TestCase |
|
35 |
from json import loads |
|
36 |
|
|
37 |
from kamaki.clients import Client, ClientError |
|
38 |
|
|
39 |
img_ref = "1m4g3-r3f3r3nc3" |
|
40 |
vm_name = "my new VM" |
|
41 |
fid = 42 |
|
42 |
vm_send = dict(server=dict( |
|
43 |
flavorRef=fid, |
|
44 |
name=vm_name, |
|
45 |
imageRef=img_ref, |
|
46 |
metadata=dict(os="debian", users="root"))) |
|
47 |
vm_recv = dict(server=dict( |
|
48 |
status="BUILD", |
|
49 |
updated="2013-03-01T10:04:00.637152+00:00", |
|
50 |
hostId="", |
|
51 |
name=vm_name, imageRef=img_ref, |
|
52 |
created="2013-03-01T10:04:00.087324+00:00", |
|
53 |
flavorRef=fid, |
|
54 |
adminPass="n0n3sh@11p@55", |
|
55 |
suspended=False, |
|
56 |
progress=0, |
|
57 |
id=31173, |
|
58 |
metadata=dict(values=dict(os="debian", users="root")))) |
|
59 |
img_recv = dict(image=dict( |
|
60 |
status="ACTIVE", |
|
61 |
updated="2013-02-26T11:10:14+00:00", |
|
62 |
name="Debian Base", |
|
63 |
created="2013-02-26T11:03:29+00:00", |
|
64 |
progress=100, |
|
65 |
id=img_ref, |
|
66 |
metadata=dict(values=dict( |
|
67 |
partition_table="msdos", |
|
68 |
kernel="2.6.32", |
|
69 |
osfamily="linux", |
|
70 |
users="root", |
|
71 |
gui="No GUI", |
|
72 |
sortorder="1", |
|
73 |
os="debian", |
|
74 |
root_partition="1", |
|
75 |
description="Debian 6.0.7 (Squeeze) Base System")))) |
|
76 |
|
|
77 |
|
|
78 |
class Cyclades(TestCase): |
|
79 |
|
|
80 |
def assert_dicts_are_deeply_equal(self, d1, d2): |
|
81 |
for k, v in d1.items(): |
|
82 |
self.assertTrue(k in d2) |
|
83 |
if isinstance(v, dict): |
|
84 |
self.assert_dicts_are_deeply_equal(v, d2[k]) |
|
85 |
else: |
|
86 |
self.assertEqual(unicode(v), unicode(d2[k])) |
|
87 |
|
|
88 |
class FR(object): |
|
89 |
"""FR stands for Fake Response""" |
|
90 |
json = vm_recv |
|
91 |
headers = {} |
|
92 |
content = json |
|
93 |
status = None |
|
94 |
status_code = 200 |
|
95 |
|
|
96 |
def release(self): |
|
97 |
pass |
|
33 | 98 |
|
34 |
import time |
|
35 |
|
|
36 |
from kamaki.clients import livetest, ClientError |
|
37 |
from kamaki.clients.cyclades import CycladesClient |
|
38 |
|
|
39 |
|
|
40 |
class Cyclades(livetest.Generic): |
|
41 | 99 |
"""Set up a Cyclades thorough test""" |
42 | 100 |
def setUp(self): |
43 |
|
|
44 |
with open(self['image', 'details']) as f: |
|
45 |
self.img_details = eval(f.read()) |
|
46 |
self.img = self.img_details['id'] |
|
47 |
with open(self['flavor', 'details']) as f: |
|
48 |
self._flavor_details = eval(f.read()) |
|
49 |
self.PROFILES = ('ENABLED', 'DISABLED', 'PROTECTED') |
|
50 |
|
|
51 |
self.servers = {} |
|
52 |
self.now = time.mktime(time.gmtime()) |
|
53 |
self.servname1 = 'serv' + unicode(self.now) |
|
54 |
self.servname2 = self.servname1 + '_v2' |
|
55 |
self.servname1 += '_v1' |
|
56 |
self.flavorid = 1 |
|
57 |
#servers have to be created at the begining... |
|
58 |
self.networks = {} |
|
59 |
self.netname1 = 'net' + unicode(self.now) |
|
60 |
self.netname2 = 'net' + unicode(self.now) + '_v2' |
|
61 |
|
|
62 |
self.client = CycladesClient(self['compute', 'url'], self['token']) |
|
101 |
self.url = 'http://cyclades.example.com' |
|
102 |
self.token = 'cyc14d3s70k3n' |
|
103 |
from kamaki.clients.cyclades import CycladesClient |
|
104 |
self.client = CycladesClient(self.url, self.token) |
|
105 |
from kamaki.clients.connection.kamakicon import KamakiHTTPConnection |
|
106 |
self.C = KamakiHTTPConnection |
|
63 | 107 |
|
64 | 108 |
def tearDown(self): |
65 |
"""Destoy servers used in testing""" |
|
66 |
for net in self.networks.keys(): |
|
67 |
self._delete_network(net) |
|
68 |
for server in self.servers.values(): |
|
69 |
self._delete_server(server['id']) |
|
70 |
print('DEL VM %s (%s)' % (server['id'], server['name'])) |
|
71 |
|
|
72 |
def test_000(self): |
|
73 |
"Prepare a full Cyclades test scenario" |
|
74 |
self.server1 = self._create_server( |
|
75 |
self.servname1, |
|
76 |
self.flavorid, |
|
77 |
self.img) |
|
78 |
self.server2 = self._create_server( |
|
79 |
self.servname2, |
|
80 |
self.flavorid + 2, |
|
81 |
self.img) |
|
82 |
super(self.__class__, self).test_000() |
|
83 |
|
|
84 |
def _create_server(self, servername, flavorid, imageid, personality=None): |
|
85 |
server = self.client.create_server( |
|
86 |
servername, |
|
87 |
flavorid, |
|
88 |
imageid, |
|
89 |
personality) |
|
90 |
print('CREATE VM %s (%s)' % (server['id'], server['name'])) |
|
91 |
self.servers[servername] = server |
|
92 |
return server |
|
93 |
|
|
94 |
def _delete_server(self, servid): |
|
95 |
try: |
|
96 |
current_state = self.client.get_server_details(servid) |
|
97 |
current_state = current_state['status'] |
|
98 |
if current_state == 'DELETED': |
|
99 |
return |
|
100 |
self.client.delete_server(servid) |
|
101 |
self._wait_for_status(servid, current_state) |
|
102 |
self.client.delete_server(servid) |
|
103 |
except: |
|
104 |
return |
|
105 |
|
|
106 |
def _create_network(self, netname, **kwargs): |
|
107 |
net = self.client.create_network(netname, **kwargs) |
|
108 |
self.networks[net['id']] = net |
|
109 |
return net |
|
110 |
|
|
111 |
def _delete_network(self, netid): |
|
112 |
if not netid in self.networks: |
|
113 |
return None |
|
114 |
print('Disconnect nics of network %s' % netid) |
|
115 |
self.client.disconnect_network_nics(netid) |
|
116 |
|
|
117 |
def netwait(wait): |
|
118 |
try: |
|
119 |
self.client.delete_network(netid) |
|
120 |
except ClientError: |
|
121 |
time.sleep(wait) |
|
122 |
self.do_with_progress_bar( |
|
123 |
netwait, |
|
124 |
'Delete network %s' % netid, |
|
125 |
self._waits[:7]) |
|
126 |
return self.networks.pop(netid) |
|
127 |
|
|
128 |
def _wait_for_network(self, netid, status): |
|
129 |
|
|
130 |
def netwait(wait): |
|
131 |
r = self.client.get_network_details(netid) |
|
132 |
if r['status'] == status: |
|
133 |
return |
|
134 |
time.sleep(wait) |
|
135 |
self.do_with_progress_bar( |
|
136 |
netwait, |
|
137 |
'Wait network %s to reach status %s' % (netid, status), |
|
138 |
self._waits[:5]) |
|
139 |
|
|
140 |
def _wait_for_nic(self, netid, servid, in_creation=True): |
|
141 |
self._wait_for_network(netid, 'ACTIVE') |
|
142 |
|
|
143 |
def nicwait(wait): |
|
144 |
nics = self.client.list_server_nics(servid) |
|
145 |
for net in nics: |
|
146 |
found_nic = net['network_id'] == netid |
|
147 |
if (in_creation and found_nic) or not ( |
|
148 |
in_creation or found_nic): |
|
149 |
return |
|
150 |
time.sleep(wait) |
|
151 |
self.do_with_progress_bar( |
|
152 |
nicwait, |
|
153 |
'Wait nic-%s-%s to %sconnect' % ( |
|
154 |
netid, |
|
155 |
servid, |
|
156 |
'' if in_creation else 'dis'), |
|
157 |
self._waits[:5]) |
|
158 |
for net in self.client.list_server_nics(servid): |
|
159 |
if netid == net['network_id']: |
|
160 |
return True |
|
161 |
return False |
|
162 |
|
|
163 |
def _has_status(self, servid, status): |
|
164 |
r = self.client.get_server_details(servid) |
|
165 |
return r['status'] == status |
|
166 |
|
|
167 |
def _wait_for_status(self, servid, status): |
|
168 |
(wait_bar, wait_cb) = self._safe_progress_bar( |
|
169 |
'Server %s in %s' % (servid, status)) |
|
170 |
self.client.wait_server(servid, status, wait_cb=wait_cb) |
|
171 |
self._safe_progress_bar_finish(wait_bar) |
|
172 |
|
|
173 |
def test_parallel_creation(self): |
|
174 |
"""test create with multiple threads |
|
175 |
Do not use this in regular livetest |
|
176 |
""" |
|
177 |
from kamaki.clients import SilentEvent |
|
178 |
c1 = SilentEvent( |
|
179 |
self._create_server, |
|
180 |
self.servname1, |
|
181 |
self.flavorid, |
|
182 |
self.img) |
|
183 |
c2 = SilentEvent( |
|
184 |
self._create_server, |
|
185 |
self.servname2, |
|
186 |
self.flavorid + 2, |
|
187 |
self.img) |
|
188 |
c3 = SilentEvent( |
|
189 |
self._create_server, |
|
190 |
self.servname1, |
|
191 |
self.flavorid, |
|
192 |
self.img) |
|
193 |
c4 = SilentEvent( |
|
194 |
self._create_server, |
|
195 |
self.servname2, |
|
196 |
self.flavorid + 2, |
|
197 |
self.img) |
|
198 |
c5 = SilentEvent( |
|
199 |
self._create_server, |
|
200 |
self.servname1, |
|
201 |
self.flavorid, |
|
202 |
self.img) |
|
203 |
c6 = SilentEvent( |
|
204 |
self._create_server, |
|
205 |
self.servname2, |
|
206 |
self.flavorid + 2, |
|
207 |
self.img) |
|
208 |
c7 = SilentEvent( |
|
209 |
self._create_server, |
|
210 |
self.servname1, |
|
211 |
self.flavorid, |
|
212 |
self.img) |
|
213 |
c8 = SilentEvent( |
|
214 |
self._create_server, |
|
215 |
self.servname2, |
|
216 |
self.flavorid + 2, |
|
217 |
self.img) |
|
218 |
c1.start() |
|
219 |
c2.start() |
|
220 |
c3.start() |
|
221 |
c4.start() |
|
222 |
c5.start() |
|
223 |
c6.start() |
|
224 |
c7.start() |
|
225 |
c8.start() |
|
109 |
pass |
|
226 | 110 |
|
227 | 111 |
def test_create_server(self): |
228 |
"""Test create_server""" |
|
229 |
self.server1 = self._create_server( |
|
230 |
self.servname1, |
|
231 |
self.flavorid, |
|
232 |
self.img) |
|
233 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
234 |
self._test_0010_create_server() |
|
235 |
|
|
236 |
def _test_0010_create_server(self): |
|
237 |
self.assertEqual(self.server1["name"], self.servname1) |
|
238 |
self.assertEqual(self.server1["flavorRef"], self.flavorid) |
|
239 |
self.assertEqual(self.server1["imageRef"], self.img) |
|
240 |
self.assertEqual(self.server1["status"], "BUILD") |
|
112 |
self.client.get_image_details = Mock(return_value=img_recv['image']) |
|
113 |
with patch.object(Client, 'request', side_effect=ClientError( |
|
114 |
'REQUEST ENTITY TOO LARGE', |
|
115 |
status=403)): |
|
116 |
self.assertRaises( |
|
117 |
ClientError, |
|
118 |
self.client.create_server, |
|
119 |
vm_name, fid, img_ref) |
|
120 |
|
|
121 |
with patch.object( |
|
122 |
self.C, |
|
123 |
'perform_request', |
|
124 |
return_value=self.FR()) as perform_req: |
|
125 |
self.assertRaises( |
|
126 |
ClientError, |
|
127 |
self.client.create_server, |
|
128 |
vm_name, fid, img_ref) |
|
129 |
self.FR.status_code = 202 |
|
130 |
r = self.client.create_server(vm_name, fid, img_ref) |
|
131 |
self.assertEqual(self.client.http_client.url, self.url) |
|
132 |
self.assertEqual(self.client.http_client.path, '/servers') |
|
133 |
(method, data, a_headers, a_params) = perform_req.call_args[0] |
|
134 |
self.assert_dicts_are_deeply_equal(loads(data), vm_send) |
|
135 |
self.assert_dicts_are_deeply_equal(r, vm_recv['server']) |
|
136 |
prsn = 'Personality string (does not work with real servers)' |
|
137 |
self.client.create_server(vm_name, fid, img_ref, prsn) |
|
138 |
(method, data, a_headers, a_params) = perform_req.call_args[0] |
|
139 |
data = loads(data) |
|
140 |
self.assertTrue('personality' in data['server']) |
|
141 |
self.assertEqual(prsn, data['server']['personality']) |
|
241 | 142 |
|
143 |
""" |
|
242 | 144 |
def test_list_servers(self): |
243 |
"""Test list servers""" |
|
244 |
self.server1 = self._create_server( |
|
245 |
self.servname1, |
|
246 |
self.flavorid, |
|
247 |
self.img) |
|
248 |
self.server2 = self._create_server( |
|
249 |
self.servname2, |
|
250 |
self.flavorid + 2, |
|
251 |
self.img) |
|
252 |
self._test_0020_list_servers() |
|
253 | 145 |
|
254 |
def _test_0020_list_servers(self): |
|
255 | 146 |
servers = self.client.list_servers() |
256 | 147 |
dservers = self.client.list_servers(detail=True) |
257 | 148 |
|
258 |
"""detailed and simple are same size"""
|
|
149 |
""detailed and simple are same size""
|
|
259 | 150 |
self.assertEqual(len(dservers), len(servers)) |
260 | 151 |
for i in range(len(servers)): |
261 | 152 |
for field in ( |
... | ... | |
269 | 160 |
self.assertFalse(field in servers[i]) |
270 | 161 |
self.assertTrue(field in dservers[i]) |
271 | 162 |
|
272 |
"""detailed and simple contain same names"""
|
|
163 |
""detailed and simple contain same names""
|
|
273 | 164 |
names = sorted(map(lambda x: x["name"], servers)) |
274 | 165 |
dnames = sorted(map(lambda x: x["name"], dservers)) |
275 | 166 |
self.assertEqual(names, dnames) |
276 | 167 |
|
277 | 168 |
def _test_0030_wait_test_servers_to_build(self): |
278 |
"""Pseudo-test to wait for VMs to load""" |
|
279 |
print('') |
|
280 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
281 |
self._wait_for_status(self.server2['id'], 'BUILD') |
|
282 |
|
|
283 |
def test_get_server_details(self): |
|
284 |
"""Test get_server_details""" |
|
285 | 169 |
self.server1 = self._create_server( |
286 | 170 |
self.servname1, |
287 | 171 |
self.flavorid, |
... | ... | |
290 | 174 |
self._test_0040_get_server_details() |
291 | 175 |
|
292 | 176 |
def _test_0040_get_server_details(self): |
293 |
r = self.client.get_server_details(self.server1['id']) |
|
294 |
self.assertEqual(r["name"], self.servname1) |
|
295 |
self.assertEqual(r["flavorRef"], self.flavorid) |
|
296 |
self.assertEqual(r["imageRef"], self.img) |
|
297 |
self.assertEqual(r["status"], "ACTIVE") |
|
298 |
|
|
299 |
def test_update_server_name(self): |
|
300 |
"""Test update_server_name""" |
|
301 | 177 |
self.server1 = self._create_server( |
302 | 178 |
self.servname1, |
303 | 179 |
self.flavorid, |
... | ... | |
316 | 192 |
self.servers[new_name] = changed |
317 | 193 |
|
318 | 194 |
def test_reboot_server(self): |
319 |
"""Test reboot server""" |
|
320 |
self.server1 = self._create_server( |
|
321 |
self.servname1, |
|
322 |
self.flavorid, |
|
323 |
self.img) |
|
324 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
325 |
self.server2 = self._create_server( |
|
326 |
self.servname2, |
|
327 |
self.flavorid + 1, |
|
328 |
self.img) |
|
329 |
self._wait_for_status(self.server2['id'], 'BUILD') |
|
330 |
self._test_0060_reboot_server() |
|
331 |
self._wait_for_status(self.server1['id'], 'REBOOT') |
|
332 |
self._wait_for_status(self.server2['id'], 'REBOOT') |
|
333 |
|
|
334 |
def _test_0060_reboot_server(self): |
|
335 |
self.client.reboot_server(self.server1['id']) |
|
336 |
self.assertTrue(self._has_status(self.server1['id'], 'REBOOT')) |
|
337 |
self.client.reboot_server(self.server2['id'], hard=True) |
|
338 |
self.assertTrue(self._has_status(self.server2['id'], 'REBOOT')) |
|
339 |
|
|
340 |
def _test_0070_wait_test_servers_to_reboot(self): |
|
341 |
"""Pseudo-test to wait for VMs to load""" |
|
342 | 195 |
print('') |
343 | 196 |
self._wait_for_status(self.server1['id'], 'REBOOT') |
344 | 197 |
self._wait_for_status(self.server2['id'], 'REBOOT') |
345 | 198 |
|
346 | 199 |
def test_create_server_metadata(self): |
347 |
"""Test create_server_metadata""" |
|
348 |
self.server1 = self._create_server( |
|
349 |
self.servname1, |
|
350 |
self.flavorid, |
|
351 |
self.img) |
|
352 |
self._test_0080_create_server_metadata() |
|
353 |
|
|
354 |
def _test_0080_create_server_metadata(self): |
|
355 | 200 |
r1 = self.client.create_server_metadata( |
356 | 201 |
self.server1['id'], |
357 | 202 |
'mymeta', |
... | ... | |
361 | 206 |
self.assert_dicts_are_deeply_equal(r1, r2) |
362 | 207 |
|
363 | 208 |
def test_get_server_metadata(self): |
364 |
"""Test get server_metadata""" |
|
365 |
self.server1 = self._create_server( |
|
366 |
self.servname1, |
|
367 |
self.flavorid, |
|
368 |
self.img) |
|
369 |
self._test_0090_get_server_metadata() |
|
370 |
|
|
371 |
def _test_0090_get_server_metadata(self): |
|
372 | 209 |
self.client.create_server_metadata( |
373 | 210 |
self.server1['id'], |
374 | 211 |
'mymeta_0', |
... | ... | |
377 | 214 |
self.assertEqual(r['mymeta_0'], 'val_0') |
378 | 215 |
|
379 | 216 |
def test_update_server_metadata(self): |
380 |
"""Test update_server_metadata""" |
|
381 |
self.server1 = self._create_server( |
|
382 |
self.servname1, |
|
383 |
self.flavorid, |
|
384 |
self.img) |
|
385 |
self._test_0100_update_server_metadata() |
|
386 |
|
|
387 |
def _test_0100_update_server_metadata(self): |
|
388 | 217 |
r1 = self.client.create_server_metadata( |
389 | 218 |
self.server1['id'], |
390 | 219 |
'mymeta3', |
... | ... | |
396 | 225 |
self.assertTrue(r2['mymeta3'], 'val3') |
397 | 226 |
|
398 | 227 |
def test_delete_server_metadata(self): |
399 |
"""Test delete_server_metadata""" |
|
400 |
self.server1 = self._create_server( |
|
401 |
self.servname1, |
|
402 |
self.flavorid, |
|
403 |
self.img) |
|
404 |
self._test_0110_delete_server_metadata() |
|
405 |
|
|
406 |
def _test_0110_delete_server_metadata(self): |
|
407 | 228 |
r1 = self.client.create_server_metadata( |
408 | 229 |
self.server1['id'], |
409 | 230 |
'mymeta', |
... | ... | |
417 | 238 |
self.assertEqual(err.status, 404) |
418 | 239 |
|
419 | 240 |
def test_list_flavors(self): |
420 |
"""Test flavors_get""" |
|
421 |
self._test_0120_list_flavors() |
|
422 |
|
|
423 |
def _test_0120_list_flavors(self): |
|
424 | 241 |
r = self.client.list_flavors() |
425 | 242 |
self.assertTrue(len(r) > 1) |
426 | 243 |
r = self.client.list_flavors(detail=True) |
427 | 244 |
self.assertTrue('SNF:disk_template' in r[0]) |
428 | 245 |
|
429 | 246 |
def test_get_flavor_details(self): |
430 |
"""Test test_get_flavor_details""" |
|
431 |
self._test_0130_get_flavor_details() |
|
432 |
|
|
433 |
def _test_0130_get_flavor_details(self): |
|
434 | 247 |
r = self.client.get_flavor_details(self.flavorid) |
435 | 248 |
self.assert_dicts_are_deeply_equal(self._flavor_details, r) |
436 | 249 |
|
437 | 250 |
def test_list_images(self): |
438 |
"""Test list_images""" |
|
439 |
self._test_0140_list_images() |
|
440 |
|
|
441 |
def _test_0140_list_images(self): |
|
442 | 251 |
r = self.client.list_images() |
443 | 252 |
self.assertTrue(len(r) > 1) |
444 | 253 |
r = self.client.list_images(detail=True) |
... | ... | |
448 | 257 |
self.assert_dicts_are_deeply_equal(detailed_img, self.img_details) |
449 | 258 |
|
450 | 259 |
def test_get_image_details(self): |
451 |
"""Test image_details""" |
|
452 |
self._test_0150_get_image_details() |
|
453 |
|
|
454 |
def _test_0150_get_image_details(self): |
|
455 | 260 |
r = self.client.get_image_details(self.img) |
456 | 261 |
self.assert_dicts_are_deeply_equal(r, self.img_details) |
457 | 262 |
|
458 | 263 |
def test_get_image_metadata(self): |
459 |
"""Test get_image_metadata""" |
|
460 |
self._test_0160_get_image_metadata() |
|
461 |
|
|
462 |
def _test_0160_get_image_metadata(self): |
|
463 | 264 |
r = self.client.get_image_metadata(self.img) |
464 | 265 |
self.assert_dicts_are_deeply_equal( |
465 | 266 |
self.img_details['metadata']['values'], r) |
... | ... | |
468 | 269 |
self.assertEqual(r[key], val) |
469 | 270 |
|
470 | 271 |
def test_shutdown_server(self): |
471 |
"""Test shutdown_server""" |
|
472 |
self.server1 = self._create_server( |
|
473 |
self.servname1, |
|
474 |
self.flavorid, |
|
475 |
self.img) |
|
476 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
477 |
self._test_0170_shutdown_server() |
|
478 |
|
|
479 |
def _test_0170_shutdown_server(self): |
|
480 | 272 |
self.client.shutdown_server(self.server1['id']) |
481 | 273 |
self._wait_for_status(self.server1['id'], 'ACTIVE') |
482 | 274 |
r = self.client.get_server_details(self.server1['id']) |
483 | 275 |
self.assertEqual(r['status'], 'STOPPED') |
484 | 276 |
|
485 | 277 |
def test_start_server(self): |
486 |
"""Test start_server""" |
|
487 |
self.server1 = self._create_server( |
|
488 |
self.servname1, |
|
489 |
self.flavorid, |
|
490 |
self.img) |
|
491 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
492 |
self.client.shutdown_server(self.server1['id']) |
|
493 |
self._wait_for_status(self.server1['id'], 'ACTIVE') |
|
494 |
self._test_0180_start_server() |
|
495 |
|
|
496 |
def _test_0180_start_server(self): |
|
497 | 278 |
self.client.start_server(self.server1['id']) |
498 | 279 |
self._wait_for_status(self.server1['id'], 'STOPPED') |
499 | 280 |
r = self.client.get_server_details(self.server1['id']) |
500 | 281 |
self.assertEqual(r['status'], 'ACTIVE') |
501 | 282 |
|
502 | 283 |
def test_get_server_console(self): |
503 |
"""Test get_server_console""" |
|
504 |
self.server2 = self._create_server( |
|
505 |
self.servname2, |
|
506 |
self.flavorid + 2, |
|
507 |
self.img) |
|
508 |
self._wait_for_status(self.server2['id'], 'BUILD') |
|
509 |
self._test_0190_get_server_console() |
|
510 |
|
|
511 |
def _test_0190_get_server_console(self): |
|
512 | 284 |
r = self.client.get_server_console(self.server2['id']) |
513 | 285 |
self.assertTrue('host' in r) |
514 | 286 |
self.assertTrue('password' in r) |
... | ... | |
516 | 288 |
self.assertTrue('type' in r) |
517 | 289 |
|
518 | 290 |
def test_get_firewall_profile(self): |
519 |
"""Test get_firewall_profile""" |
|
520 |
self.server1 = self._create_server( |
|
521 |
self.servname1, |
|
522 |
self.flavorid, |
|
523 |
self.img) |
|
524 |
self._test_0200_get_firewall_profile() |
|
525 |
|
|
526 |
def _test_0200_get_firewall_profile(self): |
|
527 | 291 |
self._wait_for_status(self.server1['id'], 'BUILD') |
528 | 292 |
fprofile = self.client.get_firewall_profile(self.server1['id']) |
529 | 293 |
self.assertTrue(fprofile in self.PROFILES) |
530 | 294 |
|
531 | 295 |
def test_set_firewall_profile(self): |
532 |
"""Test set_firewall_profile""" |
|
533 |
self.server1 = self._create_server( |
|
534 |
self.servname1, |
|
535 |
self.flavorid, |
|
536 |
self.img) |
|
537 |
self._test_0210_set_firewall_profile() |
|
538 |
|
|
539 |
def _test_0210_set_firewall_profile(self): |
|
540 |
|
|
541 | 296 |
self._wait_for_status(self.server1['id'], 'BUILD') |
542 | 297 |
PROFILES = ['DISABLED', 'ENABLED', 'DISABLED', 'PROTECTED'] |
543 | 298 |
fprofile = self.client.get_firewall_profile(self.server1['id']) |
... | ... | |
568 | 323 |
count_success += 1 |
569 | 324 |
|
570 | 325 |
def test_get_server_stats(self): |
571 |
self.server1 = self._create_server( |
|
572 |
self.servname1, |
|
573 |
self.flavorid, |
|
574 |
self.img) |
|
575 |
self._test_0220_get_server_stats() |
|
576 |
|
|
577 |
def _test_0220_get_server_stats(self): |
|
578 | 326 |
r = self.client.get_server_stats(self.server1['id']) |
579 | 327 |
it = ('cpuBar', 'cpuTimeSeries', 'netBar', 'netTimeSeries', 'refresh') |
580 | 328 |
for term in it: |
581 | 329 |
self.assertTrue(term in r) |
582 | 330 |
|
583 | 331 |
def test_create_network(self): |
584 |
"""Test create_network""" |
|
585 |
self._test_0230_create_network() |
|
586 |
|
|
587 |
def _test_0230_create_network(self): |
|
588 | 332 |
print('\twith no params') |
589 | 333 |
self.network1 = self._create_network(self.netname1) |
590 | 334 |
self._wait_for_network(self.network1['id'], 'ACTIVE') |
... | ... | |
612 | 356 |
self.assertEqual(self.network1[param], val) |
613 | 357 |
|
614 | 358 |
def test_connect_server(self): |
615 |
"""Test connect_server""" |
|
616 |
self.server1 = self._create_server( |
|
617 |
self.servname1, |
|
618 |
self.flavorid, |
|
619 |
self.img) |
|
620 |
self.network1 = self._create_network(self.netname1) |
|
621 |
self._wait_for_status(self.server1['id'], 'BUILD') |
|
622 |
self._wait_for_network(self.network1['id'], 'ACTIVE') |
|
623 |
self._test_0240_connect_server() |
|
624 |
|
|
625 |
def _test_0250_connect_server(self): |
|
626 | 359 |
self.client.connect_server(self.server1['id'], self.network1['id']) |
627 | 360 |
self.assertTrue(self._wait_for_nic( |
628 | 361 |
self.network1['id'], |
629 | 362 |
self.server1['id'])) |
630 | 363 |
|
631 | 364 |
def test_disconnect_server(self): |
632 |
"""Test disconnect_server""" |
|
633 |
self.test_connect_server() |
|
634 |
self._test_0250_disconnect_server() |
|
635 |
|
|
636 |
def _test_0250_disconnect_server(self): |
|
637 | 365 |
self.client.disconnect_server(self.server1['id'], self.network1['id']) |
638 | 366 |
self.assertTrue(self._wait_for_nic( |
639 | 367 |
self.network1['id'], |
... | ... | |
641 | 369 |
in_creation=False)) |
642 | 370 |
|
643 | 371 |
def _test_0260_wait_for_second_network(self): |
644 |
self.network2 = self._create_network(self.netname2) |
|
645 |
self._wait_for_network(self.network2['id'], 'ACTIVE') |
|
646 |
|
|
647 |
def test_list_server_nics(self): |
|
648 |
"""Test list_server_nics""" |
|
649 | 372 |
self.server1 = self._create_server( |
650 | 373 |
self.servname1, |
651 | 374 |
self.flavorid, |
... | ... | |
666 | 389 |
self.assertTrue(len(r) > len0) |
667 | 390 |
|
668 | 391 |
def test_list_networks(self): |
669 |
"""Test list_network""" |
|
670 |
self.network1 = self._create_network(self.netname1) |
|
671 |
self._wait_for_network(self.network1['id'], 'ACTIVE') |
|
672 |
self._test_0290_list_networks() |
|
673 |
|
|
674 |
def _test_0290_list_networks(self): |
|
675 | 392 |
r = self.client.list_networks() |
676 | 393 |
self.assertTrue(len(r) > 1) |
677 | 394 |
ids = [net['id'] for net in r] |
... | ... | |
691 | 408 |
self.assertTrue(term in net.keys()) |
692 | 409 |
|
693 | 410 |
def test_get_network_details(self): |
694 |
"""Test get_network_details""" |
|
695 |
self.network1 = self._create_network(self.netname1) |
|
696 |
self._test_0300_get_network_details() |
|
697 |
|
|
698 |
def _test_0300_get_network_details(self): |
|
699 | 411 |
r = self.client.get_network_details(self.network1['id']) |
700 | 412 |
net1 = dict(self.network1) |
701 | 413 |
net1.pop('status') |
... | ... | |
707 | 419 |
self.assert_dicts_are_deeply_equal(net1, r) |
708 | 420 |
|
709 | 421 |
def test_update_network_name(self): |
710 |
self.network2 = self._create_network(self.netname2) |
|
711 |
self._test_0310_update_network_name() |
|
712 |
|
|
713 |
def _test_0310_update_network_name(self): |
|
714 | 422 |
updated_name = self.netname2 + '_upd' |
715 | 423 |
self.client.update_network_name(self.network2['id'], updated_name) |
716 | 424 |
|
... | ... | |
727 | 435 |
r = self.client.get_network_details(self.network2['id']) |
728 | 436 |
self.assertEqual(r['name'], updated_name) |
729 | 437 |
|
730 |
""" Don't have auth to test this |
|
731 | 438 |
def test_delete_image(self): |
732 |
""Test delete_image"" |
|
733 |
self._test_0330_delete_image() |
|
734 |
def _test_0330_delete_image(self): |
|
735 | 439 |
images = self.client.list_images() |
736 | 440 |
self.client.delete_image(images[2]['id']) |
737 | 441 |
try: |
... | ... | |
740 | 444 |
self.assertEqual(err.status, 404) |
741 | 445 |
|
742 | 446 |
def test_create_image_metadata(self): |
743 |
""Test create_image_metadata"" |
|
744 |
self._test_0340_create_image_metadata() |
|
745 |
def _test_0340_create_image_metadata(self): |
|
746 | 447 |
r = self.client.create_image_metadata(self.img, 'mykey', 'myval') |
747 | 448 |
self.assertEqual(r['mykey'], 'myval') |
748 | 449 |
|
749 | 450 |
def test_update_image_metadata(self): |
750 |
""Test update_image_metadata"" |
|
751 |
self._test_0350_update_image_metadata() |
|
752 |
def _test_0350_update_image_metadata(self): |
|
753 | 451 |
r = self.client.create_image_metadata(self.img, 'mykey0', 'myval') |
754 | 452 |
r = self.client.update_image_metadata(self.img, 'mykey0', 'myval0') |
755 | 453 |
self.assertEqual(r['mykey0'], 'myval0') |
756 | 454 |
|
757 | 455 |
def test_delete_image_metadata(self): |
758 |
""Test delete_image_metadata"" |
|
759 |
self._test_0360_delete_image_metadata() |
|
760 |
def _test_0360_delete_image_metadata(self): |
|
761 | 456 |
self.client.create_image_metadata(self.img, 'mykey1', 'myval1') |
762 | 457 |
self.client.delete_image_metadata(self.img, 'mykey1') |
763 | 458 |
r = self.client.get_image_metadata(self.img) |
Also available in: Unified diff