def test_libvirt_kvm_iser_volume_with_multipath_getmpdev(self): self.flags(iser_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(time, 'sleep', lambda x: None) libvirt_driver = volume.LibvirtISERVolumeDriver(self.fake_conn) name0 = 'volume-00000000' location0 = '10.0.2.15:3260' iqn0 = 'iqn.2010-10.org.iser.openstack:%s' % name0 vol0 = {'id': 0, 'name': name0} dev0 = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-0' % (location0, iqn0) name = 'volume-00000001' location = '10.0.2.15:3260' iqn = 'iqn.2010-10.org.iser.openstack:%s' % name vol = {'id': 1, 'name': name} dev = '/dev/disk/by-path/ip-%s-iscsi-%s-lun-1' % (location, iqn) devs = [dev0, dev] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) self.stubs.Set(libvirt_driver, '_get_iscsi_devices', lambda: []) connection_info = self.iser_connection(vol, location, iqn) mpdev_filepath = '/dev/mapper/foo' disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [['fake_portal1', 'fake_iqn1']]) conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver.disconnect_volume(connection_info, 'vde')
def test_libvirt_kvm_iser_volume_with_multipath(self): self.flags(iser_use_multipath=True, group='libvirt') self.stubs.Set(os.path, 'exists', lambda x: True) self.stubs.Set(time, 'sleep', lambda x: None) devs = ['/dev/mapper/sda', '/dev/mapper/sdb'] self.stubs.Set(self.fake_conn, 'get_all_block_devices', lambda: devs) libvirt_driver = volume.LibvirtISERVolumeDriver(self.fake_conn) name = 'volume-00000001' location = '10.0.2.15:3260' iqn = 'iqn.2010-10.org.iser.openstack:%s' % name vol = {'id': 1, 'name': name} connection_info = self.iser_connection(vol, location, iqn) mpdev_filepath = '/dev/mapper/foo' connection_info['data']['device_path'] = mpdev_filepath disk_info = { "bus": "virtio", "dev": "vde", "type": "disk", } target_portals = ['fake_portal1', 'fake_portal2'] libvirt_driver._get_multipath_device_name = lambda x: mpdev_filepath self.stubs.Set(libvirt_driver, '_get_target_portals_from_iscsiadm_output', lambda x: [[location, iqn]]) conf = libvirt_driver.connect_volume(connection_info, disk_info) tree = conf.format_dom() self.assertEqual(tree.find('./source').get('dev'), mpdev_filepath) libvirt_driver._get_multipath_iqn = lambda x: iqn libvirt_driver.disconnect_volume(connection_info, 'vde') expected_multipath_cmd = ('multipath', '-f', 'foo') self.assertIn(expected_multipath_cmd, self.executes)