Revision 2cd55da6 snf-cyclades-app/synnefo/api/test/servers.py
b/snf-cyclades-app/synnefo/api/test/servers.py | ||
---|---|---|
49 | 49 |
|
50 | 50 |
|
51 | 51 |
class ComputeAPITest(BaseAPITest): |
52 |
def setUp(self, *args, **kwargs):
|
|
53 |
super(ComputeAPITest, self).setUp(*args, **kwargs)
|
|
52 |
def __init__(self, *args, **kwargs):
|
|
53 |
super(ComputeAPITest, self).__init__(*args, **kwargs)
|
|
54 | 54 |
self.compute_path = get_service_path(cyclades_services, 'compute', |
55 | 55 |
version='v2.0') |
56 | 56 |
|
... | ... | |
80 | 80 |
self.vm3 = mfactory.VirtualMachineFactory(deleted=True, |
81 | 81 |
userid=self.user1) |
82 | 82 |
self.vm4 = mfactory.VirtualMachineFactory(userid=self.user2) |
83 |
super(ServerAPITest, self).setUp() |
|
84 | 83 |
|
85 | 84 |
def test_server_list_1(self): |
86 | 85 |
"""Test if the expected list of servers is returned.""" |
... | ... | |
275 | 274 |
mrapi().CreateInstance.return_value = 12 |
276 | 275 |
with override_settings(settings, DEFAULT_INSTANCE_NETWORKS=[]): |
277 | 276 |
with mocked_quotaholder(): |
278 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
277 |
response = self.mypost('servers', 'test_user', |
|
279 | 278 |
json.dumps(self.request), 'json') |
280 | 279 |
self.assertEqual(response.status_code, 202) |
281 | 280 |
mrapi().CreateInstance.assert_called_once() |
... | ... | |
318 | 317 |
DEFAULT_INSTANCE_NETWORKS=["public", bnet1.network.id, |
319 | 318 |
bnet2.network.id]): |
320 | 319 |
with mocked_quotaholder(): |
321 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
320 |
response = self.mypost('servers', 'test_user', |
|
322 | 321 |
json.dumps(request), 'json') |
323 | 322 |
self.assertEqual(response.status_code, 202) |
324 | 323 |
name, args, kwargs = mrapi().CreateInstance.mock_calls[0] |
... | ... | |
338 | 337 |
with override_settings(settings, |
339 | 338 |
DEFAULT_INSTANCE_NETWORKS=[bnet2.network.id]): |
340 | 339 |
with mocked_quotaholder(): |
341 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
340 |
response = self.mypost('servers', 'test_user', |
|
342 | 341 |
json.dumps(request), 'json') |
343 | 342 |
self.assertEqual(response.status_code, 202) |
344 | 343 |
name, args, kwargs = mrapi().CreateInstance.mock_calls[1] |
... | ... | |
352 | 351 |
|
353 | 352 |
# test invalid network in DEFAULT_INSTANCE_NETWORKS |
354 | 353 |
with override_settings(settings, DEFAULT_INSTANCE_NETWORKS=[42]): |
355 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
354 |
response = self.mypost('servers', 'test_user', |
|
356 | 355 |
json.dumps(request), 'json') |
357 | 356 |
self.assertFault(response, 500, "internalServerError") |
358 | 357 |
|
... | ... | |
360 | 359 |
request = deepcopy(self.request) |
361 | 360 |
request["server"]["networks"] = [self.network.id] |
362 | 361 |
with override_settings(settings, DEFAULT_INSTANCE_NETWORKS=["public"]): |
363 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
362 |
response = self.mypost('servers', 'test_user', |
|
364 | 363 |
json.dumps(request), 'json') |
365 | 364 |
self.assertFault(response, 403, "forbidden") |
366 | 365 |
# test wrong user |
... | ... | |
368 | 367 |
request["server"]["networks"] = [bnet3.network.id] |
369 | 368 |
with override_settings(settings, DEFAULT_INSTANCE_NETWORKS=["public"]): |
370 | 369 |
with mocked_quotaholder(): |
371 |
response = self.mypost('/api/v1.1/servers', 'dummy_user',
|
|
370 |
response = self.mypost('servers', 'dummy_user', |
|
372 | 371 |
json.dumps(request), 'json') |
373 | 372 |
self.assertItemNotFound(response) |
374 | 373 |
|
... | ... | |
389 | 388 |
with override_settings(settings, |
390 | 389 |
DEFAULT_INSTANCE_NETWORKS=[bnet3.network.id]): |
391 | 390 |
with mocked_quotaholder(): |
392 |
response = self.post('/api/v1.1/servers', 'test_user',
|
|
391 |
response = self.mypost('servers', 'test_user',
|
|
393 | 392 |
json.dumps(request), 'json') |
394 | 393 |
self.assertEqual(response.status_code, 202) |
395 | 394 |
api_server = json.loads(response.content)['server'] |
... | ... | |
413 | 412 |
request = deepcopy(self.request) |
414 | 413 |
request["server"]["flavorRef"] = 42 |
415 | 414 |
with mocked_quotaholder(): |
416 |
response = self.mypost('/api/v1.1/servers', 'test_user',
|
|
415 |
response = self.mypost('servers', 'test_user', |
|
417 | 416 |
json.dumps(request), 'json') |
418 | 417 |
self.assertItemNotFound(response) |
419 | 418 |
|
... | ... | |
423 | 422 |
def test_delete_server(self, mrapi): |
424 | 423 |
vm = mfactory.VirtualMachineFactory() |
425 | 424 |
mrapi().DeleteInstance.return_value = 12 |
426 |
response = self.mydelete('/api/v1.1/servers/%d' % vm.id, vm.userid)
|
|
425 |
response = self.mydelete('servers/%d' % vm.id, vm.userid) |
|
427 | 426 |
self.assertEqual(response.status_code, 204) |
428 | 427 |
mrapi().DeleteInstance.assert_called_once() |
429 | 428 |
|
... | ... | |
539 | 538 |
vm = mfactory.VirtualMachineFactory(operstate="BUILD") |
540 | 539 |
request = {'start': {}} |
541 | 540 |
with mocked_quotaholder(): |
542 |
response = self.mypost('/api/v1.1/servers/%d/action' % vm.id,
|
|
541 |
response = self.mypost('servers/%d/action' % vm.id, |
|
543 | 542 |
vm.userid, json.dumps(request), 'json') |
544 | 543 |
self.assertEqual(response.status_code, 409) |
545 | 544 |
self.assertFalse(mrapi.mock_calls) |
... | ... | |
548 | 547 |
"""Test building in progress""" |
549 | 548 |
vm = mfactory.VirtualMachineFactory() |
550 | 549 |
mrapi().DeleteInstance.return_value = 2 |
551 |
response = self.mydelete('/api/v1.1/servers/%d' % vm.id,
|
|
550 |
response = self.mydelete('servers/%d' % vm.id, |
|
552 | 551 |
vm.userid) |
553 | 552 |
self.assertSuccess(response) |
554 | 553 |
mrapi().RemoveInstance.assert_called_once() |
... | ... | |
578 | 577 |
# Check building VM |
579 | 578 |
vm = self.get_vm(flavor=flavor, operstate="BUILD") |
580 | 579 |
request = {'resize': {'flavorRef': flavor.id}} |
581 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
580 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
582 | 581 |
vm.userid, json.dumps(request), 'json') |
583 | 582 |
self.assertFault(response, 409, "buildInProgress") |
584 | 583 |
# Check same Flavor |
585 | 584 |
vm = self.get_vm(flavor=flavor, operstate="STOPPED") |
586 | 585 |
request = {'resize': {'flavorRef': flavor.id}} |
587 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
586 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
588 | 587 |
vm.userid, json.dumps(request), 'json') |
589 | 588 |
self.assertBadRequest(response) |
590 | 589 |
# Check flavor with different disk |
... | ... | |
592 | 591 |
flavor3 = mfactory.FlavorFactory(disk=2048) |
593 | 592 |
vm = self.get_vm(flavor=flavor2, operstate="STOPPED") |
594 | 593 |
request = {'resize': {'flavorRef': flavor3.id}} |
595 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
594 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
596 | 595 |
vm.userid, json.dumps(request), 'json') |
597 | 596 |
self.assertBadRequest(response) |
598 | 597 |
flavor2 = mfactory.FlavorFactory(disk_template="foo") |
599 | 598 |
flavor3 = mfactory.FlavorFactory(disk_template="baz") |
600 | 599 |
vm = self.get_vm(flavor=flavor2, operstate="STOPPED") |
601 | 600 |
request = {'resize': {'flavorRef': flavor3.id}} |
602 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
601 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
603 | 602 |
vm.userid, json.dumps(request), 'json') |
604 | 603 |
self.assertBadRequest(response) |
605 | 604 |
# Check success |
... | ... | |
609 | 608 |
cpu=4, ram=2048) |
610 | 609 |
request = {'resize': {'flavorRef': flavor4.id}} |
611 | 610 |
mrapi().ModifyInstance.return_value = 42 |
612 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
611 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
613 | 612 |
vm.userid, json.dumps(request), 'json') |
614 | 613 |
self.assertEqual(response.status_code, 202) |
615 | 614 |
vm = VirtualMachine.objects.get(id=vm.id) |
... | ... | |
625 | 624 |
vm.save() |
626 | 625 |
for action in VirtualMachine.ACTIONS: |
627 | 626 |
request = {action[0]: ""} |
628 |
response = self.post('/api/v1.1/servers/%d/action' % vm.id,
|
|
627 |
response = self.mypost('servers/%d/action' % vm.id,
|
|
629 | 628 |
vm.userid, json.dumps(request), 'json') |
630 | 629 |
self.assertBadRequest(response) |
631 | 630 |
# however you can destroy |
632 | 631 |
mrapi().DeleteInstance.return_value = 42 |
633 |
response = self.delete('/api/v1.1/servers/%d' % vm.id,
|
|
634 |
vm.userid) |
|
632 |
response = self.mydelete('servers/%d' % vm.id,
|
|
633 |
vm.userid)
|
|
635 | 634 |
self.assertSuccess(response) |
636 | 635 |
|
637 | 636 |
def get_vm(self, flavor, operstate): |
... | ... | |
659 | 658 |
|
660 | 659 |
data = json.dumps({'console': {'type': 'vnc'}}) |
661 | 660 |
with override_settings(settings, TEST=True): |
662 |
response = self.mypost('/api/v1.1/servers/%d/action' % vm.id,
|
|
661 |
response = self.mypost('servers/%d/action' % vm.id, |
|
663 | 662 |
vm.userid, data, 'json') |
664 | 663 |
self.assertEqual(response.status_code, 200) |
665 | 664 |
reply = json.loads(response.content) |
Also available in: Unified diff