summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-01-04 01:07:15 +0000
committerGerrit Code Review <review@openstack.org>2013-01-04 01:07:15 +0000
commit3ff2b563c0f5aa39dbb424c5be27072314646558 (patch)
tree3da9e5f51a4620807d86e86f9a6fe128ef8d41f6 /nova/tests
parente4d3ca6c5a8630bd3d848d0af2b375355847a4f1 (diff)
parent21ea2e6109831156592dd1e4f4f4caefdcedd04f (diff)
Merge "xenapi: Avoid hotplugging volumes on resize."
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/test_xenapi.py2
-rw-r--r--nova/tests/virt/xenapi/test_volumeops.py75
2 files changed, 74 insertions, 3 deletions
diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py
index f2799b8f3..3ca69dc4c 100644
--- a/nova/tests/test_xenapi.py
+++ b/nova/tests/test_xenapi.py
@@ -911,7 +911,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
def __init__(self):
self.finish_revert_migration_called = False
- def finish_revert_migration(self, instance):
+ def finish_revert_migration(self, instance, block_info):
self.finish_revert_migration_called = True
conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
diff --git a/nova/tests/virt/xenapi/test_volumeops.py b/nova/tests/virt/xenapi/test_volumeops.py
index bc84386c4..5b5c38139 100644
--- a/nova/tests/virt/xenapi/test_volumeops.py
+++ b/nova/tests/virt/xenapi/test_volumeops.py
@@ -15,11 +15,12 @@
# under the License.
from nova import test
+from nova.tests.xenapi import stubs
from nova.virt.xenapi import volumeops
class VolumeAttachTestCase(test.TestCase):
- def test_connect_volume_call(self):
+ def test_attach_volume_call(self):
ops = volumeops.VolumeOps('session')
self.mox.StubOutWithMock(ops, 'connect_volume')
self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise')
@@ -31,9 +32,79 @@ class VolumeAttachTestCase(test.TestCase):
volumeops.volume_utils.get_device_number('mountpoint').AndReturn(
'devnumber')
- ops.connect_volume('conn_data', 'devnumber', 'instance_1', 'vmref')
+ ops.connect_volume(
+ 'conn_data', 'devnumber', 'instance_1', 'vmref', hotplug=True)
self.mox.ReplayAll()
ops.attach_volume(
dict(driver_volume_type='iscsi', data='conn_data'),
'instance_1', 'mountpoint')
+
+ def test_attach_volume_no_hotplug(self):
+ ops = volumeops.VolumeOps('session')
+ self.mox.StubOutWithMock(ops, 'connect_volume')
+ self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise')
+ self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number')
+
+ volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn(
+ 'vmref')
+
+ volumeops.volume_utils.get_device_number('mountpoint').AndReturn(
+ 'devnumber')
+
+ ops.connect_volume(
+ 'conn_data', 'devnumber', 'instance_1', 'vmref', hotplug=False)
+
+ self.mox.ReplayAll()
+ ops.attach_volume(
+ dict(driver_volume_type='iscsi', data='conn_data'),
+ 'instance_1', 'mountpoint', hotplug=False)
+
+ def test_connect_volume_no_hotplug(self):
+ session = stubs.FakeSessionForVolumeTests('fake_uri')
+ ops = volumeops.VolumeOps(session)
+ instance_name = 'instance_1'
+ sr_uuid = '1'
+ sr_label = 'Disk-for:%s' % instance_name
+ sr_params = ''
+ sr_ref = 'sr_ref'
+ vdi_uuid = '2'
+ vdi_ref = 'vdi_ref'
+ vbd_ref = 'vbd_ref'
+ connection_data = {'vdi_uuid': vdi_uuid}
+ vm_ref = 'vm_ref'
+ dev_number = 1
+
+ called = {'xenapi': False}
+
+ def fake_call_xenapi(self, *args, **kwargs):
+ # Only used for VBD.plug in this code path.
+ called['xenapi'] = True
+ raise Exception()
+
+ self.stubs.Set(ops._session, 'call_xenapi', fake_call_xenapi)
+
+ self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info')
+ self.mox.StubOutWithMock(ops, 'introduce_sr')
+ self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi')
+ self.mox.StubOutWithMock(volumeops.vm_utils, 'create_vbd')
+
+ volumeops.volume_utils.parse_sr_info(
+ connection_data, sr_label).AndReturn(
+ tuple([sr_uuid, sr_label, sr_params]))
+
+ ops.introduce_sr(sr_uuid, sr_label, sr_params).AndReturn(sr_ref)
+
+ volumeops.volume_utils.introduce_vdi(
+ session, sr_ref, vdi_uuid, None).AndReturn(vdi_ref)
+
+ volumeops.vm_utils.create_vbd(
+ session, vm_ref, vdi_ref, dev_number,
+ bootable=False, osvol=True).AndReturn(vbd_ref)
+
+ self.mox.ReplayAll()
+
+ ops.connect_volume(connection_data, dev_number, instance_name,
+ vm_ref, hotplug=False)
+
+ self.assertEquals(False, called['xenapi'])