Merge "Fix manual scan for discovery type backends"

This commit is contained in:
Jenkins 2017-07-02 00:11:05 +00:00 committed by Gerrit Code Review
commit 6cdfd2a9a3
2 changed files with 12 additions and 32 deletions

View File

@ -954,13 +954,11 @@ class ISCSIConnector(base.BaseLinuxConnector, base_iscsi.BaseISCSIConnector):
self._run_iscsiadm(connection_properties,
('--interface', self._get_transport(),
'--op', 'new'))
# Try to set the scan mode to manual
res = self._iscsiadm_update(connection_properties,
'node.session.scan', 'manual',
check_exit_code=False)
manual_scan = not res[1]
else:
manual_scan = 'node.session.scan = manual' in out
# Try to set the scan mode to manual
res = self._iscsiadm_update(connection_properties,
'node.session.scan', 'manual',
check_exit_code=False)
manual_scan = not res[1]
if connection_properties.get('auth_method'):
self._iscsiadm_update(connection_properties,

View File

@ -985,11 +985,12 @@ Setting up iSCSI targets: unused
con_props.update(auth_method='CHAP', auth_username='user',
auth_password='pwd')
res = self.connector._connect_to_iscsi_portal(con_props)
# False refers to "manual scans", so we have automatic iscsi scans
self.assertEqual((session, False), res)
# False refers to "manual scans", so we have manual iscsi scans
self.assertEqual((session, True), res)
prefix = 'iscsiadm -m node -T tgt1 -p ip1:port1'
expected_cmds = [
prefix,
prefix + ' --op update -n node.session.scan -v manual',
prefix + ' --op update -n node.session.auth.authmethod -v CHAP',
prefix + ' --op update -n node.session.auth.username -v user',
prefix + ' --op update -n node.session.auth.password -v pwd',
@ -997,36 +998,17 @@ Setting up iSCSI targets: unused
self.assertListEqual(expected_cmds, self.cmds)
get_sessions_mock.assert_called_once_with()
@ddt.data('auto', 'manual')
@mock.patch.object(iscsi.ISCSIConnector, '_get_iscsi_sessions_full')
def test_connect_to_iscsi_portal_manual_scan_feature(self, manual_scan,
get_sessions_mock):
"""Node and session already exists and iscsi supports manual scans."""
session = 'session2'
get_sessions_mock.return_value = [('tcp:', session, 'ip1:port1',
'-1', 'tgt1')]
con_props = self.CON_PROPS.copy()
node_props = ('node.startup = automatic\nnode.session.scan = ' +
manual_scan)
with mock.patch.object(self.connector, '_execute') as exec_mock:
exec_mock.side_effect = [(node_props, None)]
res = self.connector._connect_to_iscsi_portal(con_props)
# False refers to "manual scans", so we have automatic iscsi scans
self.assertEqual((session, manual_scan == 'manual'), res)
actual_cmds = [' '.join(args[0]) for args in exec_mock.call_args_list]
self.assertListEqual(['iscsiadm -m node -T tgt1 -p ip1:port1'],
actual_cmds)
get_sessions_mock.assert_called_once_with()
@mock.patch.object(iscsi.ISCSIConnector, '_get_iscsi_sessions_full')
def test_connect_to_iscsi_portal_fail_login(self, get_sessions_mock):
get_sessions_mock.return_value = []
with mock.patch.object(self.connector, '_execute') as exec_mock:
exec_mock.side_effect = [('', None), putils.ProcessExecutionError]
exec_mock.side_effect = [('', None), ('', None),
putils.ProcessExecutionError]
res = self.connector._connect_to_iscsi_portal(self.CON_PROPS)
self.assertEqual((None, None), res)
expected_cmds = ['iscsiadm -m node -T tgt1 -p ip1:port1',
'iscsiadm -m node -T tgt1 -p ip1:port1 '
'--op update -n node.session.scan -v manual',
'iscsiadm -m node -T tgt1 -p ip1:port1 --login']
actual_cmds = [' '.join(args[0]) for args in exec_mock.call_args_list]
self.assertListEqual(expected_cmds, actual_cmds)