summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorBrent Eagles <beagles@redhat.com>2013-06-06 15:33:42 -0230
committerBrent Eagles <beagles@redhat.com>2013-06-25 15:43:27 -0230
commitdb3989586a8d5bbbcf857b9294a124ecc5fc57e8 (patch)
treeca857e6ef4dbd6074a54259b6e94543e29e88372 /nova/tests
parent9331c5c1115c7d8cc5bcab71b1100eeea1ce72fe (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.py3
-rw-r--r--nova/tests/compute/test_compute.py3
-rw-r--r--nova/tests/virt/hyperv/test_hypervapi.py21
-rw-r--r--nova/tests/virt/test_virt_drivers.py24
-rw-r--r--nova/tests/virt/vmwareapi/test_vmwareapi.py14
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)