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