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)