390
403
expected_path = 'some/image/path/logical-vol-name_rsz.gz'
391
404
self.assertEqual(file_path, expected_path)
406
def test_deploy_from_migrated_file(self):
407
instance = self.instance
408
context = 'fake_context'
410
network_info.append({'address': 'fa:89:f0:8b:9b:39'})
413
disk_info['root_disk_file'] = 'some/file/path.gz'
414
disk_info['old_lv_size'] = 30
415
self.flags(powervm_mgr=dest)
416
fake_op = self.powervm_connection._powervm
417
self.deploy_from_vios_file_called = False
419
def fake_deploy_from_vios_file(lpar, file_path, size,
421
exp_file_path = 'some/file/path.gz'
422
exp_size = 40 * 1024 ** 3
423
exp_decompress = True
424
self.deploy_from_vios_file_called = True
425
self.assertEqual(exp_file_path, file_path)
426
self.assertEqual(exp_size, size)
427
self.assertEqual(exp_decompress, decompress)
429
self.stubs.Set(fake_op, '_deploy_from_vios_file',
430
fake_deploy_from_vios_file)
431
self.powervm_connection.finish_migration(context, None,
432
instance, disk_info, network_info,
433
None, resize_instance=True,
434
block_device_info=None)
435
self.assertEqual(self.deploy_from_vios_file_called, True)
393
437
def test_set_lpar_mac_base_value(self):
394
438
instance = self.instance
395
439
context = 'fake_context'
513
557
self.assertEquals(host_stats['supported_instances'][0][0], "ppc64")
514
558
self.assertEquals(host_stats['supported_instances'][0][1], "powervm")
515
559
self.assertEquals(host_stats['supported_instances'][0][2], "hvm")
562
class PowerVMLocalVolumeAdapterTestCase(test.TestCase):
564
Unit tests for nova.virt.powervm.blockdev.PowerVMLocalVolumeAdapter.
568
super(PowerVMLocalVolumeAdapterTestCase, self).setUp()
569
self.connection = common.Connection(host='fake_compute_1',
570
username='fake_user',
571
password='fake_pass')
572
self.powervm_adapter = powervm_blockdev.PowerVMLocalVolumeAdapter(
575
def test_copy_image_file_ftp_failed(self):
576
file_path = os.tempnam('/tmp', 'image')
577
remote_path = '/mnt/openstack/images'
578
exp_remote_path = os.path.join(remote_path,
579
os.path.basename(file_path))
580
exp_cmd = ' '.join(['/usr/bin/rm -f', exp_remote_path])
582
fake_noop = lambda *args, **kwargs: None
583
fake_op = self.powervm_adapter
584
self.stubs.Set(fake_op, 'run_vios_command', fake_noop)
585
self.stubs.Set(fake_op, '_checksum_local_file', fake_noop)
587
self.mox.StubOutWithMock(common, 'ftp_put_command')
588
self.mox.StubOutWithMock(self.powervm_adapter,
589
'run_vios_command_as_root')
590
msg_args = {'ftp_cmd': 'PUT',
591
'source_path': file_path,
592
'dest_path': remote_path}
593
exp_exception = exception.PowerVMFTPTransferFailed(**msg_args)
595
common.ftp_put_command(self.connection, file_path,
596
remote_path).AndRaise(exp_exception)
598
self.powervm_adapter.run_vios_command_as_root(exp_cmd).AndReturn([])
602
self.assertRaises(exception.PowerVMFTPTransferFailed,
603
self.powervm_adapter._copy_image_file,
604
file_path, remote_path)
606
def test_copy_image_file_wrong_checksum(self):
607
file_path = os.tempnam('/tmp', 'image')
608
remote_path = '/mnt/openstack/images'
609
exp_remote_path = os.path.join(remote_path,
610
os.path.basename(file_path))
611
exp_cmd = ' '.join(['/usr/bin/rm -f', exp_remote_path])
613
def fake_md5sum_remote_file(remote_path):
616
def fake_checksum_local_file(source_path):
619
fake_noop = lambda *args, **kwargs: None
620
fake_op = self.powervm_adapter
621
self.stubs.Set(fake_op, 'run_vios_command', fake_noop)
622
self.stubs.Set(fake_op, '_md5sum_remote_file',
623
fake_md5sum_remote_file)
624
self.stubs.Set(fake_op, '_checksum_local_file',
625
fake_checksum_local_file)
626
self.stubs.Set(common, 'ftp_put_command', fake_noop)
628
self.mox.StubOutWithMock(self.powervm_adapter,
629
'run_vios_command_as_root')
630
self.powervm_adapter.run_vios_command_as_root(exp_cmd).AndReturn([])
634
self.assertRaises(exception.PowerVMFileTransferFailed,
635
self.powervm_adapter._copy_image_file,
636
file_path, remote_path)
638
def test_checksum_local_file(self):
639
file_path = os.tempnam('/tmp', 'image')
640
img_file = file(file_path, 'w')
641
img_file.write('This is a test')
643
exp_md5sum = 'ce114e4501d2f4e2dcea3e17b546f339'
645
self.assertEqual(self.powervm_adapter._checksum_local_file(file_path),
649
def test_copy_image_file_from_host_with_wrong_checksum(self):
650
local_path = 'some/tmp'
651
remote_path = os.tempnam('/mnt/openstack/images', 'image')
653
def fake_md5sum_remote_file(remote_path):
656
def fake_checksum_local_file(source_path):
659
fake_noop = lambda *args, **kwargs: None
660
fake_op = self.powervm_adapter
661
self.stubs.Set(fake_op, 'run_vios_command_as_root', fake_noop)
662
self.stubs.Set(fake_op, '_md5sum_remote_file',
663
fake_md5sum_remote_file)
664
self.stubs.Set(fake_op, '_checksum_local_file',
665
fake_checksum_local_file)
666
self.stubs.Set(common, 'ftp_get_command', fake_noop)
668
self.assertRaises(exception.PowerVMFileTransferFailed,
669
self.powervm_adapter._copy_image_file_from_host,
670
remote_path, local_path)