diff --git a/driver-requirements.txt b/driver-requirements.txt index f0902eecb7..f197787199 100644 --- a/driver-requirements.txt +++ b/driver-requirements.txt @@ -17,5 +17,5 @@ sushy>=1.9.0 ansible>=2.5 # HUAWEI iBMC hardware type uses the python-ibmcclient library -python-ibmcclient>=0.1.0,<0.2.0 +python-ibmcclient>=0.1.0,!=0.2.1,<0.3.0 diff --git a/ironic/drivers/modules/ibmc/utils.py b/ironic/drivers/modules/ibmc/utils.py index 5813d65e44..e3b3f6f3de 100644 --- a/ironic/drivers/modules/ibmc/utils.py +++ b/ironic/drivers/modules/ibmc/utils.py @@ -31,6 +31,13 @@ from ironic.conf import CONF ibmc_client = importutils.try_import('ibmcclient') ibmc_error = importutils.try_import('ibmc_client.exceptions') +try: + # NOTE(Qianbiao.NG) from python-ibmcclient>=0.2.2, ConnectionError is + # renamed to IBMCConnectionError + ibmc_error.IBMCConnectionError +except AttributeError: + ibmc_error.IBMCConnectionError = ibmc_error.ConnectionError + LOG = log.getLogger(__name__) REQUIRED_PROPERTIES = { @@ -153,7 +160,7 @@ def handle_ibmc_exception(action): try: return f(*args, **kwargs) - except ibmc_error.ConnectionError as e: + except ibmc_error.IBMCConnectionError as e: error = (_('Failed to connect to iBMC for node %(node)s, ' 'Error: %(error)s') % {'node': node.uuid, 'error': e}) diff --git a/ironic/tests/unit/drivers/modules/ibmc/test_utils.py b/ironic/tests/unit/drivers/modules/ibmc/test_utils.py index 87df0e6e03..705bb2816b 100644 --- a/ironic/tests/unit/drivers/modules/ibmc/test_utils.py +++ b/ironic/tests/unit/drivers/modules/ibmc/test_utils.py @@ -144,8 +144,8 @@ class IBMCUtilsTestCase(base.IBMCTestCase): conn = self.mock_ibmc_conn(connect_ibmc) # Mocks conn.system.get.side_effect = [ - ibmc_error.ConnectionError(url=self.ibmc['address'], - error='Failed to connect to host'), + ibmc_error.IBMCConnectionError(url=self.ibmc['address'], + error='Failed to connect to host'), mock.PropertyMock( boot_source_override=mock.PropertyMock( target=constants.BOOT_SOURCE_TARGET_PXE, diff --git a/ironic/tests/unit/drivers/third_party_driver_mocks.py b/ironic/tests/unit/drivers/third_party_driver_mocks.py index fde0dc5d3b..ab1f493bb7 100644 --- a/ironic/tests/unit/drivers/third_party_driver_mocks.py +++ b/ironic/tests/unit/drivers/third_party_driver_mocks.py @@ -262,8 +262,8 @@ if not ibmc_client: # Mock iBMC client exceptions exceptions = mock.MagicMock() - exceptions.ConnectionError = ( - type('ConnectionError', (MockKwargsException,), {})) + exceptions.IBMCConnectionError = ( + type('IBMCConnectionError', (MockKwargsException,), {})) exceptions.IBMCClientError = ( type('IBMCClientError', (MockKwargsException,), {})) sys.modules['ibmc_client.exceptions'] = exceptions