diff options
| author | Brent Eagles <beagles@redhat.com> | 2013-06-06 15:33:42 -0230 |
|---|---|---|
| committer | Brent Eagles <beagles@redhat.com> | 2013-06-25 15:43:27 -0230 |
| commit | db3989586a8d5bbbcf857b9294a124ecc5fc57e8 (patch) | |
| tree | ca857e6ef4dbd6074a54259b6e94543e29e88372 /nova/tests | |
| parent | 9331c5c1115c7d8cc5bcab71b1100eeea1ce72fe (diff) | |
Refresh volume connections when starting instances
This patches adds network and block device information to the signature
of the power_on method on the virtualization driver. The relevant call
sites are also modified to provide the required information. The libvirt
implementation of power_on has been altered to re-establish network and
volume related connections.
Fixes bug: 1188326
Change-Id: If617b570e082e3aa321414a2680a3aa0754f6153
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/ec2/test_cloud.py | 3 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 3 | ||||
| -rw-r--r-- | nova/tests/virt/hyperv/test_hypervapi.py | 21 | ||||
| -rw-r--r-- | nova/tests/virt/test_virt_drivers.py | 24 | ||||
| -rw-r--r-- | nova/tests/virt/vmwareapi/test_vmwareapi.py | 14 |
5 files changed, 51 insertions, 14 deletions
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index 22a6947f2..560474847 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -2137,7 +2137,8 @@ class CloudTestCase(test.TestCase): virt_driver = {} - def fake_power_on(self, instance): + def fake_power_on(self, context, instance, network_info, + block_device_info): virt_driver['powered_on'] = True self.stubs.Set(fake_virt.FakeDriver, 'power_on', fake_power_on) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 7953f8b63..ee3f1e28a 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -1427,7 +1427,8 @@ class ComputeTestCase(BaseTestCase): called = {'power_on': False} - def fake_driver_power_on(self, instance): + def fake_driver_power_on(self, context, instance, network_info, + block_device_info): called['power_on'] = True self.stubs.Set(nova.virt.fake.FakeDriver, 'power_on', diff --git a/nova/tests/virt/hyperv/test_hypervapi.py b/nova/tests/virt/hyperv/test_hypervapi.py index cfc79c388..9f2d745ff 100644 --- a/nova/tests/virt/hyperv/test_hypervapi.py +++ b/nova/tests/virt/hyperv/test_hypervapi.py @@ -495,13 +495,24 @@ class HyperVAPITestCase(test.TestCase): constants.HYPERV_VM_STATE_DISABLED) def test_power_on(self): - self._test_vm_state_change(self._conn.power_on, - constants.HYPERV_VM_STATE_DISABLED, - constants.HYPERV_VM_STATE_ENABLED) + self._instance_data = self._get_instance_data() + network_info = fake_network.fake_get_instance_nw_info(self.stubs, + spectacular=True) + vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), + constants.HYPERV_VM_STATE_ENABLED) + self._mox.ReplayAll() + self._conn.power_on(self._context, self._instance_data, network_info) + self._mox.VerifyAll() def test_power_on_already_running(self): - self._test_vm_state_change(self._conn.power_on, None, - constants.HYPERV_VM_STATE_ENABLED) + self._instance_data = self._get_instance_data() + network_info = fake_network.fake_get_instance_nw_info(self.stubs, + spectacular=True) + vmutils.VMUtils.set_vm_state(mox.Func(self._check_instance_name), + constants.HYPERV_VM_STATE_ENABLED) + self._mox.ReplayAll() + self._conn.power_on(self._context, self._instance_data, network_info) + self._mox.VerifyAll() def test_reboot(self): diff --git a/nova/tests/virt/test_virt_drivers.py b/nova/tests/virt/test_virt_drivers.py index 47f983258..5c2df9854 100644 --- a/nova/tests/virt/test_virt_drivers.py +++ b/nova/tests/virt/test_virt_drivers.py @@ -311,13 +311,14 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase): @catch_notimplementederror def test_power_on_running(self): instance_ref, network_info = self._get_running_instance() - self.connection.power_on(instance_ref) + self.connection.power_on(self.ctxt, instance_ref, + network_info, None) @catch_notimplementederror def test_power_on_powered_off(self): instance_ref, network_info = self._get_running_instance() self.connection.power_off(instance_ref) - self.connection.power_on(instance_ref) + self.connection.power_on(self.ctxt, instance_ref, network_info, None) @catch_notimplementederror def test_soft_delete(self): @@ -407,7 +408,24 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase): self.connection.attach_volume({'driver_volume_type': 'fake'}, instance_ref, '/dev/sda') - self.connection.power_on(instance_ref) + + bdm = { + 'root_device_name': None, + 'swap': None, + 'ephemerals': [], + 'block_device_mapping': [{ + 'instance_uuid': instance_ref['uuid'], + 'connection_info': {'driver_volume_type': 'fake'}, + 'mount_device': '/dev/sda', + 'delete_on_termination': False, + 'virtual_name': None, + 'snapshot_id': None, + 'volume_id': 'abcdedf', + 'volume_size': None, + 'no_device': None + }] + } + self.connection.power_on(self.ctxt, instance_ref, network_info, bdm) self.connection.detach_volume({'driver_volume_type': 'fake'}, instance_ref, '/dev/sda') diff --git a/nova/tests/virt/vmwareapi/test_vmwareapi.py b/nova/tests/virt/vmwareapi/test_vmwareapi.py index 5ba2f98af..62db10535 100644 --- a/nova/tests/virt/vmwareapi/test_vmwareapi.py +++ b/nova/tests/virt/vmwareapi/test_vmwareapi.py @@ -335,14 +335,14 @@ class VMwareAPIVMTestCase(test.TestCase): self.conn.power_off(self.instance) info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.SHUTDOWN) - self.conn.power_on(self.instance) + self.conn.power_on(self.context, self.instance, self.network_info) info = self.conn.get_info({'uuid': 'fake-uuid'}) self._check_vm_info(info, power_state.RUNNING) def test_power_on_non_existent(self): self._create_instance_in_the_db() self.assertRaises(exception.InstanceNotFound, self.conn.power_on, - self.instance) + self.context, self.instance, self.network_info) def test_power_off(self): self._create_vm() @@ -427,7 +427,7 @@ class VMwareAPIVMTestCase(test.TestCase): self.assertEquals(4, step) self.assertEqual(vmops.RESIZE_TOTAL_STEPS, total_steps) - self.stubs.Set(self.conn._vmops, "power_on", fake_power_on) + self.stubs.Set(self.conn._vmops, "_power_on", fake_power_on) self.stubs.Set(self.conn._vmops, "_update_instance_progress", fake_vmops_update_instance_progress) @@ -439,6 +439,7 @@ class VMwareAPIVMTestCase(test.TestCase): instance=self.instance, disk_info=None, network_info=None, + block_device_info=None, image_meta=None, power_on=power_on) # verify the results @@ -475,15 +476,20 @@ class VMwareAPIVMTestCase(test.TestCase): self.assertEquals(self.vm_name, vm_name) return vmwareapi_fake._get_objects("VirtualMachine")[0] + def fake_get_vm_ref_from_uuid(session, vm_uuid): + return vmwareapi_fake._get_objects("VirtualMachine")[0] + def fake_call_method(*args, **kwargs): pass def fake_wait_for_task(*args, **kwargs): pass - self.stubs.Set(self.conn._vmops, "power_on", fake_power_on) + self.stubs.Set(self.conn._vmops, "_power_on", fake_power_on) self.stubs.Set(self.conn._vmops, "_get_orig_vm_name_label", fake_get_orig_vm_name_label) + self.stubs.Set(vm_util, "get_vm_ref_from_uuid", + fake_get_vm_ref_from_uuid) self.stubs.Set(vm_util, "get_vm_ref_from_name", fake_get_vm_ref_from_name) self.stubs.Set(self.conn._session, "_call_method", fake_call_method) |
