Handle errors getting iSCSI initiators

pypowervm may raise a JobRequestFailed exception during iSCSI
initiator discovery on older VIOS that do not have the iscsiadm
commands built in. This adds handling for that exception so that
get_volume_connector doesn't blow up.

Closes-Bug: #1770466
Change-Id: I16beff6a5014f028181a167ecb28952190fac223
This commit is contained in:
Matthew Edmonds 2018-05-10 13:38:52 -04:00
parent 8429cc6185
commit ef77fbfa8c
2 changed files with 12 additions and 1 deletions

View File

@ -449,6 +449,16 @@ class TestISCSIAdapter(test_vol.TestVolumeAdapter):
iscsi.get_iscsi_initiators(self.adpt, vios_ids))
self.assertEqual(dict(), iscsi._ISCSI_INITIATORS)
# Invoke iscsi.get_iscsi_initiators with discover_iscsi_initiator()
# raises JobRequestFailed exception
iscsi._ISCSI_INITIATORS = dict()
mock_iscsi_init.reset_mock()
mock_iscsi_init.side_effect = pvm_exc.JobRequestFailed(
operation_name='fake_operation_name', error="fake_error")
self.assertEqual(dict(),
iscsi.get_iscsi_initiators(self.adpt, vios_ids))
self.assertEqual(dict(), iscsi._ISCSI_INITIATORS)
def test_get_iscsi_conn_props(self):
# Get the conn props with auth enabled
vios_w = mock.MagicMock()

View File

@ -74,7 +74,8 @@ def get_iscsi_initiators(adapter, vios_ids=None):
initiator = hdisk.discover_iscsi_initiator(
adapter, vios_id)
_ISCSI_INITIATORS[vios_id] = initiator
except pvm_exc.ISCSIDiscoveryFailed as e:
except (pvm_exc.ISCSIDiscoveryFailed,
pvm_exc.JobRequestFailed) as e:
# TODO(chhagarw): handle differently based on
# error codes
LOG.error(e)