def test_iscsiadm_discover_parsing(self): # Ensure that parsing iscsiadm discover ignores cruft. targets = [[ "192.168.204.82:3260,1", ("iqn.2010-10.org.openstack:volume-" "f9b12623-6ce3-4dac-a71f-09ad4249bdd3") ], [ "192.168.204.82:3261,1", ("iqn.2010-10.org.openstack:volume-" "f9b12623-6ce3-4dac-a71f-09ad4249bdd4") ]] # This slight wonkiness brought to you by pep8, as the actual # example output runs about 97 chars wide. sample_input = """Loading iscsi modules: done Starting iSCSI initiator service: done Setting up iSCSI targets: unused %s %s %s %s """ % (targets[0][0], targets[0][1], targets[1][0], targets[1][1]) driver = iscsi.LibvirtISCSIVolumeDriver("none") out = driver.connector._get_target_portals_from_iscsiadm_output( sample_input) self.assertEqual(targets, out)
def test_libvirt_iscsi_driver(self, transport=None): for multipath in (True, False): self.flags(volume_use_multipath=multipath, group='libvirt') libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_host) self.assertIsInstance(libvirt_driver.connector, connector.ISCSIConnector) if hasattr(libvirt_driver.connector, 'use_multipath'): self.assertEqual(multipath, libvirt_driver.connector.use_multipath)
def test_extend_volume(self): device_path = '/dev/fake-dev' connection_info = {'data': {'device_path': device_path}} libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_host) libvirt_driver.connector.extend_volume = mock.MagicMock(return_value=1) new_size = libvirt_driver.extend_volume(connection_info, mock.sentinel.instance) self.assertEqual(1, new_size) libvirt_driver.connector.extend_volume.assert_called_once_with( connection_info['data'])
def test_libvirt_iscsi_driver_get_config(self): libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_host) device_path = '/dev/fake-dev' connection_info = {'data': {'device_path': device_path}} conf = libvirt_driver.get_config(connection_info, self.disk_info) tree = conf.format_dom() self.assertEqual('block', tree.get('type')) self.assertEqual(device_path, tree.find('./source').get('dev')) self.assertEqual('raw', tree.find('./driver').get('type')) self.assertEqual('native', tree.find('./driver').get('io'))
def test_libvirt_iscsi_driver_disconnect_volume_with_devicenotfound(self, mock_LOG_warning): device_path = '/dev/fake-dev' connection_info = {'data': {'device_path': device_path}} libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_conn) libvirt_driver.connector.disconnect_volume = mock.MagicMock( side_effect=os_brick_exception.VolumeDeviceNotFound( device=device_path)) libvirt_driver.disconnect_volume(connection_info, device_path) msg = mock_LOG_warning.call_args_list[0] self.assertIn('Ignoring VolumeDeviceNotFound', msg[0][0])
def test_sanitize_log_run_iscsiadm(self): # Tests that the parameters to the os-brick connector's # _run_iscsiadm function are sanitized for passwords when logged. def fake_debug(*args, **kwargs): self.assertIn('node.session.auth.password', args[0]) self.assertNotIn('scrubme', args[0]) def fake_execute(*args, **kwargs): return (None, None) libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_conn) libvirt_driver.connector.set_execute(fake_execute) connection_info = self.iscsi_connection(self.vol, self.location, self.iqn) iscsi_properties = connection_info['data'] with mock.patch.object(connector.LOG, 'debug', side_effect=fake_debug) as debug_mock: libvirt_driver.connector._iscsiadm_update( iscsi_properties, 'node.session.auth.password', 'scrubme') # we don't care what the log message is, we just want to make sure # our stub method is called which asserts the password is scrubbed self.assertTrue(debug_mock.called)
def test_libvirt_iscsi_driver(self, transport=None): libvirt_driver = iscsi.LibvirtISCSIVolumeDriver(self.fake_host) self.assertIsInstance(libvirt_driver.connector, connector.ISCSIConnector)