blob: 84fd092d0c3eced45d8ad528789fcf1f689b8d87 [file] [log] [blame]
Biser Milanovec7ff6c2023-06-02 17:46:23 +03001From d4a08a539ecf8b8e0d50648f2cb60cbb36fc24c8 Mon Sep 17 00:00:00 2001
2From: Biser Milanov <biser.milanov@storpool.com>
3Date: Fri, 2 Jun 2023 17:43:45 +0300
4Subject: [PATCH] StorPool: Raise on spopenstack, SP_OURID issues
5
6---
7 os_brick/initiator/connectors/storpool.py | 21 ++++++++++++-------
8 .../initiator/connectors/test_storpool.py | 10 +++++++++
9 2 files changed, 23 insertions(+), 8 deletions(-)
10
11diff --git a/os_brick/initiator/connectors/storpool.py b/os_brick/initiator/connectors/storpool.py
12index 9752ad9..43dc7f2 100644
13--- a/os_brick/initiator/connectors/storpool.py
14+++ b/os_brick/initiator/connectors/storpool.py
15@@ -42,14 +42,19 @@ class StorPoolConnector(base.BaseLinuxConnector):
16 raise exception.BrickException(
17 'Could not import the StorPool API bindings')
18
19- if spopenstack is not None:
20- try:
21- self._attach = spopenstack.AttachDB(log=LOG)
22- except Exception as e:
23- raise exception.BrickException(
24- 'Could not initialize the StorPool API bindings: %s' % (e))
25- else:
26- self._attach = None
27+ if spopenstack is None:
28+ raise exception.BrickException(
29+ 'Could not import the required module "storpool.spopenstack"')
30+
31+ try:
32+ self._attach = spopenstack.AttachDB(log=LOG)
33+ except Exception as e:
34+ raise exception.BrickException(
35+ 'Could not initialize the StorPool API bindings: %s' % (e))
36+
37+ if "SP_OURID" not in self._attach.config():
38+ raise exception.BrickException(
39+ 'Could not read "SP_OURID" from the StorPool configuration"')
40
41 def _detach_retry(self, sp_ourid, volume):
42 """Retry detaching.
43diff --git a/os_brick/tests/initiator/connectors/test_storpool.py b/os_brick/tests/initiator/connectors/test_storpool.py
44index e78d2c3..ea6ef24 100644
45--- a/os_brick/tests/initiator/connectors/test_storpool.py
46+++ b/os_brick/tests/initiator/connectors/test_storpool.py
47@@ -86,6 +86,16 @@ class StorPoolConnectorTestCase(test_connector.ConnectorTestCase):
48 None, execute=self.execute)
49 self.adb = self.connector._attach
50
51+ def test_raise_if_spopenstack_missing(self):
52+ with mock.patch.object(connector, 'spopenstack', None):
53+ self.assertRaises(exception.BrickException,
54+ connector.StorPoolConnector, "")
55+
56+ def test_raise_if_sp_ourid_missing(self):
57+ with mock.patch.object(spopenstack.AttachDB, 'config', lambda x: {}):
58+ self.assertRaises(exception.BrickException,
59+ connector.StorPoolConnector, "")
60+
61 def test_connect_volume(self):
62 volume_name = volumeNameExt(self.fakeProp['volume'])
63 api = mock.MagicMock(spec=['volumesReassignWait', 'volumeInfo'])
64--
652.25.1
66