diff --git a/os_brick/initiator/connectors/storpool.py b/os_brick/initiator/connectors/storpool.py index ea0c51b4f..fa57267c1 100644 --- a/os_brick/initiator/connectors/storpool.py +++ b/os_brick/initiator/connectors/storpool.py @@ -59,14 +59,19 @@ class StorPoolConnector(base.BaseLinuxConnector): raise exception.BrickException( 'Could not import the StorPool API bindings') - if spopenstack is not None: - try: - self._attach = spopenstack.AttachDB(log=LOG) - except Exception as e: - raise exception.BrickException( - 'Could not initialize the StorPool API bindings: %s' % (e)) - else: - self._attach = None + if spopenstack is None: + raise exception.BrickException( + 'Could not import the required module "storpool.spopenstack"') + + try: + self._attach = spopenstack.AttachDB(log=LOG) + except Exception as e: + raise exception.BrickException( + 'Could not initialize the StorPool API bindings: %s' % (e)) + + if "SP_OURID" not in self._attach.config(): + raise exception.BrickException( + 'Could not read "SP_OURID" from the StorPool configuration"') def _detach_retry(self, sp_ourid, volume): """Retry detaching. diff --git a/os_brick/tests/initiator/connectors/test_storpool.py b/os_brick/tests/initiator/connectors/test_storpool.py index 48197682f..a127d5320 100644 --- a/os_brick/tests/initiator/connectors/test_storpool.py +++ b/os_brick/tests/initiator/connectors/test_storpool.py @@ -110,6 +110,16 @@ class StorPoolConnectorTestCase(test_connector.ConnectorTestCase): None, execute=self.execute) self.adb = self.connector._attach + def test_raise_if_spopenstack_missing(self): + with mock.patch.object(connector, 'spopenstack', None): + self.assertRaises(exception.BrickException, + connector.StorPoolConnector, "") + + def test_raise_if_sp_ourid_missing(self): + with mock.patch.object(spopenstack.AttachDB, 'config', lambda x: {}): + self.assertRaises(exception.BrickException, + connector.StorPoolConnector, "") + def test_connect_volume(self): volume_name = volumeNameExt(self.fakeProp['volume']) api = mock.MagicMock(spec=['volumesReassignWait', 'volumeInfo'])