diff --git a/os_brick/initiator/connectors/iscsi.py b/os_brick/initiator/connectors/iscsi.py index 96be61a53..d696dc105 100644 --- a/os_brick/initiator/connectors/iscsi.py +++ b/os_brick/initiator/connectors/iscsi.py @@ -117,9 +117,8 @@ class ISCSIConnector(base.BaseLinuxConnector, base_iscsi.BaseISCSIConnector): """ out, err = self._run_iscsi_session() if err: - LOG.warning("Couldn't find iscsi sessions because " - "iscsiadm err: %s", err) - return [] + LOG.warning("iscsiadm stderr output when getting sessions: %s", + err) # Parse and clean the output from iscsiadm, which is in the form of: # transport_name: [session_id] ip_address:port,tpgt iqn node_type @@ -1080,7 +1079,7 @@ class ISCSIConnector(base.BaseLinuxConnector, base_iscsi.BaseISCSIConnector): def _run_iscsi_session(self): (out, err) = self._run_iscsiadm_bare(('-m', 'session'), - check_exit_code=[0, 1, 21, 255]) + check_exit_code=[0, 21, 255]) LOG.debug("iscsi session list stdout=%(out)s stderr=%(err)s", {'out': out, 'err': err}) return (out, err) diff --git a/os_brick/tests/initiator/connectors/test_iscsi.py b/os_brick/tests/initiator/connectors/test_iscsi.py index c53f6b619..fbfa3c710 100644 --- a/os_brick/tests/initiator/connectors/test_iscsi.py +++ b/os_brick/tests/initiator/connectors/test_iscsi.py @@ -70,12 +70,17 @@ class ISCSIConnectorTestCase(test_connector.ConnectorTestCase): ('tcp:', 'session3', 'ip3:port3', '1', 'tgt3')] self.assertListEqual(expected, res) - @mock.patch.object(iscsi.ISCSIConnector, '_run_iscsi_session', - return_value=(None, 'error')) - def test_get_iscsi_sessions_full_error(self, sessions_mock): + @mock.patch.object(iscsi.ISCSIConnector, '_run_iscsi_session') + def test_get_iscsi_sessions_full_stderr(self, sessions_mock): + iscsiadm_result = ('tcp: [session1] ip1:port1,1 tgt1 (non-flash)\n' + 'tcp: [session2] ip2:port2,-1 tgt2 (non-flash)\n' + 'tcp: [session3] ip3:port3,1 tgt3\n') + sessions_mock.return_value = (iscsiadm_result, 'error') res = self.connector._get_iscsi_sessions_full() - self.assertEqual([], res) - sessions_mock.assert_called() + expected = [('tcp:', 'session1', 'ip1:port1', '1', 'tgt1'), + ('tcp:', 'session2', 'ip2:port2', '-1', 'tgt2'), + ('tcp:', 'session3', 'ip3:port3', '1', 'tgt3')] + self.assertListEqual(expected, res) @mock.patch.object(iscsi.ISCSIConnector, '_get_iscsi_sessions_full') def test_get_iscsi_sessions(self, sessions_mock):