Add the "raise on spopenstack issues" patch
Change-Id: Ibd80eddb285adad8fec0d69fff0b5e2393706fc2
diff --git a/patches/openstack/os-brick/raise-on-spopenstack-issues.patch b/patches/openstack/os-brick/raise-on-spopenstack-issues.patch
new file mode 100644
index 0000000..84fd092
--- /dev/null
+++ b/patches/openstack/os-brick/raise-on-spopenstack-issues.patch
@@ -0,0 +1,66 @@
+From d4a08a539ecf8b8e0d50648f2cb60cbb36fc24c8 Mon Sep 17 00:00:00 2001
+From: Biser Milanov <biser.milanov@storpool.com>
+Date: Fri, 2 Jun 2023 17:43:45 +0300
+Subject: [PATCH] StorPool: Raise on spopenstack, SP_OURID issues
+
+---
+ os_brick/initiator/connectors/storpool.py | 21 ++++++++++++-------
+ .../initiator/connectors/test_storpool.py | 10 +++++++++
+ 2 files changed, 23 insertions(+), 8 deletions(-)
+
+diff --git a/os_brick/initiator/connectors/storpool.py b/os_brick/initiator/connectors/storpool.py
+index 9752ad9..43dc7f2 100644
+--- a/os_brick/initiator/connectors/storpool.py
++++ b/os_brick/initiator/connectors/storpool.py
+@@ -42,14 +42,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 e78d2c3..ea6ef24 100644
+--- a/os_brick/tests/initiator/connectors/test_storpool.py
++++ b/os_brick/tests/initiator/connectors/test_storpool.py
+@@ -86,6 +86,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'])
+--
+2.25.1
+
diff --git a/patches/series.experimental b/patches/series.experimental
index fe59680..787989c 100644
--- a/patches/series.experimental
+++ b/patches/series.experimental
@@ -12,3 +12,4 @@
openstack/cinderlib/storpool-test-20190910.patch
openstack/devstack/eatmydata.patch
openstack/os-brick/attach-globalid.patch
+openstack/os-brick/raise-on-spopenstack-issues.patch