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} connection_info = { 'data': connection_data, 'driver_volume_type': 'iscsi' } vm_ref = 'vm_ref' dev_number = 1 called = collections.defaultdict(bool) def fake_call_xenapi(self, method, *args, **kwargs): called[method] = True self.stubs.Set(ops._session, 'call_xenapi', fake_call_xenapi) self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info') volumeops.volume_utils.parse_sr_info( connection_data, sr_label).AndReturn(tuple([sr_uuid, sr_label, sr_params])) self.mox.StubOutWithMock(volumeops.volume_utils, 'find_sr_by_uuid') volumeops.volume_utils.find_sr_by_uuid(session, sr_uuid).AndReturn(None) self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_sr') volumeops.volume_utils.introduce_sr(session, sr_uuid, sr_label, sr_params).AndReturn(sr_ref) self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi') volumeops.volume_utils.introduce_vdi( session, sr_ref, vdi_uuid=vdi_uuid).AndReturn(vdi_ref) self.mox.StubOutWithMock(volumeops.vm_utils, 'create_vbd') 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_info, dev_number, instance_name, vm_ref, hotplug=False) self.assertEquals(False, called['VBD.plug'])
def _test_connect_volume(self, hotplug, vm_running, plugged): session = stubs.FakeSessionForVolumeTests('fake_uri') ops = volumeops.VolumeOps(session) self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info') self.mox.StubOutWithMock(volumeops.volume_utils, 'find_sr_by_uuid') self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_sr') self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi') self.mox.StubOutWithMock(volumeops.vm_utils, 'create_vbd') self.mox.StubOutWithMock(volumeops.vm_utils, 'is_vm_shutdown') self.mox.StubOutWithMock(ops._session, 'call_xenapi') 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} connection_info = { 'data': connection_data, 'driver_volume_type': 'iscsi' } vm_ref = 'vm_ref' dev_number = 1 volumeops.volume_utils.parse_sr_info( connection_data, sr_label).AndReturn(tuple([sr_uuid, sr_label, sr_params])) volumeops.volume_utils.find_sr_by_uuid(session, sr_uuid).AndReturn(None) volumeops.volume_utils.introduce_sr(session, sr_uuid, sr_label, sr_params).AndReturn(sr_ref) volumeops.volume_utils.introduce_vdi( session, sr_ref, vdi_uuid=vdi_uuid).AndReturn(vdi_ref) volumeops.vm_utils.create_vbd(session, vm_ref, vdi_ref, dev_number, bootable=False, osvol=True).AndReturn(vbd_ref) volumeops.vm_utils.is_vm_shutdown(session, vm_ref).AndReturn(not vm_running) if plugged: ops._session.call_xenapi("VBD.plug", vbd_ref) ops._session.call_xenapi("VDI.get_uuid", vdi_ref).AndReturn(vdi_uuid) self.mox.ReplayAll() result = ops._connect_volume(connection_info, dev_number, instance_name, vm_ref, hotplug=hotplug) self.assertEqual((sr_uuid, vdi_uuid), result)
def _setup_mock_volumeops(self): self.session = stubs.FakeSessionForVolumeTests('fake_uri') self.ops = volumeops.VolumeOps(self.session)