Update the StorPool Cinder patches
Catch up with the upstream removal of the use of the Python
"six" library from the StorPool driver.
Change-Id: If8a5d3dcac2a27473f87f57b6802b44dc651ea29
diff --git a/patches/openstack/cinder/sep-clone-across-pools.patch b/patches/openstack/cinder/sep-clone-across-pools.patch
index fade092..0992ec0 100644
--- a/patches/openstack/cinder/sep-clone-across-pools.patch
+++ b/patches/openstack/cinder/sep-clone-across-pools.patch
@@ -1,7 +1,7 @@
-From 8ce9bb75fb32c921043b14b43884c8b1660cd9b8 Mon Sep 17 00:00:00 2001
+From 3b0addd827de5613b4c17c802b9f936fb60491ff Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Wed, 22 Jun 2022 10:04:31 +0300
-Subject: [PATCH 08/10] Add the clone_across_pools driver capability
+Subject: [PATCH 7/9] Add the clone_across_pools driver capability
Let drivers declare that they can clone a volume into a different pool and
relax the checks when creating a volume from an image (both with and
@@ -96,7 +96,7 @@
expect = {'cluster_name': self.volume.cluster_name}
found_entry = cache.get_entry(self.context,
diff --git a/cinder/tests/unit/volume/flows/test_create_volume_flow.py b/cinder/tests/unit/volume/flows/test_create_volume_flow.py
-index 1bb3f2b98..a804d7fe6 100644
+index fa629599a..a90e943fe 100644
--- a/cinder/tests/unit/volume/flows/test_create_volume_flow.py
+++ b/cinder/tests/unit/volume/flows/test_create_volume_flow.py
@@ -1060,6 +1060,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
@@ -131,7 +131,7 @@
fake_volume_manager = mock.MagicMock()
fake_cache = mock.MagicMock()
fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
-@@ -1194,6 +1198,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1195,6 +1199,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
mock_cleanup_cg):
fake_db = mock.MagicMock()
fake_driver = mock.MagicMock()
@@ -139,7 +139,7 @@
fake_volume_manager = mock.MagicMock()
fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
fake_volume_manager, fake_db, fake_driver)
-@@ -1252,6 +1257,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1254,6 +1259,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
driver_error):
fake_db = mock.MagicMock()
fake_driver = mock.MagicMock()
@@ -147,7 +147,7 @@
fake_volume_manager = mock.MagicMock()
backup_host = 'host@backend#pool'
test_manager = create_volume_manager.CreateVolumeFromSpecTask(
-@@ -1291,6 +1297,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
+@@ -1293,6 +1299,7 @@ class CreateVolumeFlowManagerTestCase(test.TestCase):
def test_create_drive_error(self, mock_message_create):
fake_db = mock.MagicMock()
fake_driver = mock.MagicMock()
@@ -155,7 +155,7 @@
fake_volume_manager = mock.MagicMock()
fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
fake_volume_manager, fake_db, fake_driver)
-@@ -1492,6 +1499,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1494,6 +1501,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
spec=utils.get_file_spec())
fake_db = mock.MagicMock()
fake_driver = mock.MagicMock()
@@ -163,7 +163,7 @@
fake_manager = create_volume_manager.CreateVolumeFromSpecTask(
mock.MagicMock(), fake_db, fake_driver)
fake_image_service = fake_image.FakeImageService()
-@@ -1518,6 +1526,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1520,6 +1528,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
'cinder_encryption_key_id': None}
fake_driver.clone_image.return_value = (None, False)
@@ -171,7 +171,7 @@
fake_db.volume_get_all_by_host.return_value = [image_volume]
fake_manager._create_from_image(self.ctxt,
-@@ -1536,6 +1545,69 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1538,6 +1547,69 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
self.assertFalse(fake_driver.create_cloned_volume.called)
mock_cleanup_cg.assert_called_once_with(volume)
@@ -241,7 +241,7 @@
LEGACY_URI = 'cinder://%s' % fakes.VOLUME_ID
MULTISTORE_URI = 'cinder://fake-store/%s' % fakes.VOLUME_ID
-@@ -1562,6 +1634,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
+@@ -1564,6 +1636,7 @@ class CreateVolumeFlowManagerGlanceCinderBackendCase(test.TestCase):
spec=utils.get_file_spec())
fake_db = mock.MagicMock()
fake_driver = mock.MagicMock()
@@ -250,7 +250,7 @@
mock.MagicMock(), fake_db, fake_driver)
fake_image_service = fake_image.FakeImageService()
diff --git a/cinder/volume/flows/manager/create_volume.py b/cinder/volume/flows/manager/create_volume.py
-index ac09ed898..7347ac1f8 100644
+index 1f78b3375..5ddeb1a56 100644
--- a/cinder/volume/flows/manager/create_volume.py
+++ b/cinder/volume/flows/manager/create_volume.py
@@ -741,8 +741,12 @@ class CreateVolumeFromSpecTask(flow_utils.CinderTask):
@@ -269,7 +269,7 @@
for image_volume in image_volumes:
# For the case image volume is stored in the service tenant,
diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py
-index 104291563..88c037279 100644
+index 34e6e4cff..7850ed19b 100644
--- a/cinder/volume/manager.py
+++ b/cinder/volume/manager.py
@@ -356,7 +356,8 @@ class VolumeManager(manager.CleanableManager,
@@ -283,7 +283,7 @@
LOG.info('Image-volume cache enabled for host %(host)s.',
{'host': self.host})
diff --git a/doc/source/reference/support-matrix.ini b/doc/source/reference/support-matrix.ini
-index 6c3af739e..3bb2be72b 100644
+index 4cf4cf655..243993fe8 100644
--- a/doc/source/reference/support-matrix.ini
+++ b/doc/source/reference/support-matrix.ini
@@ -1048,3 +1048,81 @@ driver.win_iscsi=missing
@@ -369,5 +369,5 @@
+driver.yadro=missing
+driver.zadara=missing
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-clone-across-pools.patch b/patches/openstack/cinder/sep-sp-clone-across-pools.patch
index 4862989..83b0d5b 100644
--- a/patches/openstack/cinder/sep-sp-clone-across-pools.patch
+++ b/patches/openstack/cinder/sep-sp-clone-across-pools.patch
@@ -1,7 +1,7 @@
-From 381f77449f30d9a860eeef532963e21f895c00e9 Mon Sep 17 00:00:00 2001
+From 74917a3b748324de3f8556dde0b983ecfa77520f Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Wed, 22 Jun 2022 10:48:25 +0300
-Subject: [PATCH 09/10] StorPool: declare the clone_across_pools capability
+Subject: [PATCH 8/9] StorPool: declare the clone_across_pools capability
Change-Id: I5338c6c4f53a448e495f695cd64b36b722cd947d
---
@@ -12,10 +12,10 @@
create mode 100644 releasenotes/notes/storpool-clone-across-pools-b3f7923dee35503a.yaml
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 5b4ea0d31..b15a201c3 100644
+index 131ba68fb..caa0ce06e 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -362,6 +362,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -361,6 +361,7 @@ class StorPoolDriver(driver.VolumeDriver):
'driver_version': self.VERSION,
'storage_protocol': constants.STORPOOL,
# Driver capabilities
@@ -24,7 +24,7 @@
# The actual pools data
'pools': pools
diff --git a/doc/source/reference/support-matrix.ini b/doc/source/reference/support-matrix.ini
-index 3bb2be72b..7964d9807 100644
+index 243993fe8..89c894a41 100644
--- a/doc/source/reference/support-matrix.ini
+++ b/doc/source/reference/support-matrix.ini
@@ -1115,7 +1115,7 @@ driver.rbd=missing
@@ -49,5 +49,5 @@
+ which allows it to create a volume into an arbitrary StorPool-backed
+ volume type from a StorPool-backed Glance image.
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-clone-volume.patch b/patches/openstack/cinder/sep-sp-clone-volume.patch
index 6e7f90f..8dbbe2e 100644
--- a/patches/openstack/cinder/sep-sp-clone-volume.patch
+++ b/patches/openstack/cinder/sep-sp-clone-volume.patch
@@ -1,7 +1,7 @@
-From 842b39e2e8e73ea2dda84955d3ab99d9efbfa527 Mon Sep 17 00:00:00 2001
+From 609436981cbd13488eb1345d41ebffcd2347d2de Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Wed, 20 Apr 2022 15:47:39 +0300
-Subject: [PATCH 07/10] StorPool: create_cloned_volume() improvements
+Subject: [PATCH 6/9] StorPool: create_cloned_volume() improvements
If the source and destination volumes are in the same StorPool template
(as defined by either the volume type or the global config setting),
@@ -30,7 +30,7 @@
create mode 100644 releasenotes/notes/storpool-clone-better-dca90f40c9273de9.yaml
diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 24715fa29..95a1ffffd 100644
+index 8792678ed..94074d218 100644
--- a/cinder/tests/unit/volume/drivers/test_storpool.py
+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
@@ -14,6 +14,7 @@
@@ -41,7 +41,7 @@
import re
import sys
from unittest import mock
-@@ -110,13 +111,33 @@ class MockAPI(object):
+@@ -109,13 +110,33 @@ class MockAPI(object):
def snapshotCreate(self, vname, snap):
snapshots[snap['name']] = dict(volumes[vname])
@@ -77,7 +77,7 @@
def volumeDelete(self, name):
del volumes[name]
-@@ -174,6 +195,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
+@@ -173,6 +194,23 @@ fakeStorPool.spopenstack.AttachDB = MockAttachDB
fakeStorPool.sptypes.VolumeUpdateDesc = MockVolumeUpdateDesc
@@ -101,7 +101,7 @@
@ddt.ddt
class StorPoolTestCase(test.TestCase):
-@@ -265,6 +303,11 @@ class StorPoolTestCase(test.TestCase):
+@@ -264,6 +302,11 @@ class StorPoolTestCase(test.TestCase):
self.assertListEqual(sorted([volumeName(n) for n in names]),
sorted(data['name'] for data in volumes.values()))
@@ -113,7 +113,7 @@
@mock_volume_types
def test_create_delete_volume(self):
self.assertVolumeNames([])
-@@ -277,7 +320,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -276,7 +319,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('1',))
v = volumes[volumeName('1')]
self.assertEqual(1 * units.Gi, v['size'])
@@ -122,7 +122,7 @@
self.assertEqual(3, v['replication'])
caught = False
-@@ -297,7 +340,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -296,7 +339,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('1',))
v = volumes[volumeName('1')]
self.assertEqual(2 * units.Gi, v['size'])
@@ -131,7 +131,7 @@
self.assertEqual(3, v['replication'])
self.driver.create_volume({'id': '2', 'name': 'v2', 'size': 3,
-@@ -305,7 +348,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -304,7 +347,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('1', '2'))
v = volumes[volumeName('2')]
self.assertEqual(3 * units.Gi, v['size'])
@@ -140,7 +140,7 @@
self.assertEqual(3, v['replication'])
self.driver.create_volume({'id': '3', 'name': 'v2', 'size': 4,
-@@ -327,7 +370,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -326,7 +369,7 @@ class StorPoolTestCase(test.TestCase):
# Make sure the dictionary is not corrupted somehow...
v = volumes[volumeName('1')]
self.assertEqual(2 * units.Gi, v['size'])
@@ -149,7 +149,7 @@
self.assertEqual(3, v['replication'])
for vid in ('1', '2', '3', '4'):
-@@ -395,16 +438,17 @@ class StorPoolTestCase(test.TestCase):
+@@ -392,16 +435,17 @@ class StorPoolTestCase(test.TestCase):
self.driver.extend_volume({'id': '1'}, 2)
self.assertEqual(2 * units.Gi, volumes[volumeName('1')]['size'])
@@ -175,7 +175,7 @@
self.driver.delete_volume({'id': 1})
self.driver.delete_volume({'id': 2})
-@@ -412,6 +456,78 @@ class StorPoolTestCase(test.TestCase):
+@@ -409,6 +453,78 @@ class StorPoolTestCase(test.TestCase):
self.assertDictEqual({}, volumes)
self.assertDictEqual({}, snapshots)
@@ -254,7 +254,7 @@
@mock_volume_types
def test_config_replication(self):
self.assertVolumeNames([])
-@@ -431,7 +547,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -428,7 +544,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('cfgrepl1',))
v = volumes[volumeName('cfgrepl1')]
self.assertEqual(3, v['replication'])
@@ -263,7 +263,7 @@
self.driver.delete_volume({'id': 'cfgrepl1'})
self.driver.configuration.storpool_replication = 2
-@@ -445,7 +561,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -442,7 +558,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('cfgrepl2',))
v = volumes[volumeName('cfgrepl2')]
self.assertEqual(2, v['replication'])
@@ -272,7 +272,7 @@
self.driver.delete_volume({'id': 'cfgrepl2'})
self.driver.create_volume({'id': 'cfgrepl3', 'name': 'v1', 'size': 1,
-@@ -477,7 +593,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -474,7 +590,7 @@ class StorPoolTestCase(test.TestCase):
self.assertVolumeNames(('cfgtempl1',))
v = volumes[volumeName('cfgtempl1')]
self.assertEqual(3, v['replication'])
@@ -282,24 +282,23 @@
self.driver.create_volume({'id': 'cfgtempl2', 'name': 'v1', 'size': 1,
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 97d188fd4..5b4ea0d31 100644
+index c2b566f4a..131ba68fb 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -19,11 +19,13 @@ import platform
+@@ -19,10 +19,12 @@ import platform
from oslo_config import cfg
from oslo_log import log as logging
+from oslo_utils import excutils
from oslo_utils import importutils
from oslo_utils import units
- import six
from cinder.common import constants
+from cinder import context
from cinder import exception
from cinder.i18n import _
from cinder import interface
-@@ -197,30 +199,80 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -196,30 +198,80 @@ class StorPoolDriver(driver.VolumeDriver):
def create_cloned_volume(self, volume, src_vref):
refname = self._attach.volumeName(src_vref['id'])
@@ -397,10 +396,10 @@
def create_export(self, context, volume, connector):
pass
diff --git a/driver-requirements.txt b/driver-requirements.txt
-index 2f05bc94e..2b28d37fd 100644
+index 8cff370ed..aa1211c19 100644
--- a/driver-requirements.txt
+++ b/driver-requirements.txt
-@@ -41,7 +41,7 @@ infi.dtypes.wwn # PSF
+@@ -42,7 +42,7 @@ infi.dtypes.wwn # PSF
infi.dtypes.iqn # PSF
# Storpool
@@ -422,5 +421,5 @@
+ StorPool templates (exposed as Cinder storage pools) if requested,
+ eliminating some data duplication in the underlying StorPool cluster.
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-fix-test-rename.patch b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
index 720b62b..1e7b5a4 100644
--- a/patches/openstack/cinder/sep-sp-fix-test-rename.patch
+++ b/patches/openstack/cinder/sep-sp-fix-test-rename.patch
@@ -1,7 +1,7 @@
-From 2835c8aeb39313e927a4c13a7ce78d5386c4d909 Mon Sep 17 00:00:00 2001
+From f4bed5a7db90fa1a7dd5bf098f2f6652fe8b9c53 Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Tue, 17 Jan 2023 01:20:59 +0200
-Subject: [PATCH 05/10] StorPool: fix the "rename volume" unit test emulation
+Subject: [PATCH 4/9] StorPool: fix the "rename volume" unit test emulation
Also update the "name" field of the actual data structure in
the fake list of volumes.
@@ -12,10 +12,10 @@
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 2e6f56526..f878c6d26 100644
+index 0eac3d957..442bdbb88 100644
--- a/cinder/tests/unit/volume/drivers/test_storpool.py
+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -135,7 +135,10 @@ class MockAPI(object):
+@@ -134,7 +134,10 @@ class MockAPI(object):
volumes[name]['size'] = data['size']
if 'rename' in data and data['rename'] != name:
@@ -27,7 +27,7 @@
del volumes[name]
-@@ -259,6 +262,8 @@ class StorPoolTestCase(test.TestCase):
+@@ -258,6 +261,8 @@ class StorPoolTestCase(test.TestCase):
def assertVolumeNames(self, names):
self.assertListEqual(sorted([volumeName(n) for n in names]),
sorted(volumes.keys()))
@@ -37,5 +37,5 @@
@mock_volume_types
def test_create_delete_volume(self):
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-iscsi.patch b/patches/openstack/cinder/sep-sp-iscsi.patch
index 8c07013..085e9e8 100644
--- a/patches/openstack/cinder/sep-sp-iscsi.patch
+++ b/patches/openstack/cinder/sep-sp-iscsi.patch
@@ -1,7 +1,7 @@
-From 15fe701cfc698a2d8d3ce12ba33983a42e50411e Mon Sep 17 00:00:00 2001
+From 809a5c657faa1b1cbe26a7ae0aad77840300498f Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Mon, 12 Mar 2018 12:00:10 +0200
-Subject: [PATCH 10/10] Add iSCSI export support to the StorPool driver
+Subject: [PATCH 9/9] Add iSCSI export support to the StorPool driver
Add four new driver options:
- iscsi_cinder_volume: use StorPool iSCSI attachments whenever
@@ -33,10 +33,10 @@
create mode 100644 releasenotes/notes/storpool-iscsi-cefcfe590a07c5c7.yaml
diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index 95a1ffffd..2b76e7c75 100644
+index 94074d218..781d1a0ef 100644
--- a/cinder/tests/unit/volume/drivers/test_storpool.py
+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -14,15 +14,25 @@
+@@ -14,14 +14,24 @@
# under the License.
@@ -51,7 +51,6 @@
import ddt
from oslo_utils import units
- import six
+if TYPE_CHECKING:
+ if sys.version_info >= (3, 11):
@@ -62,7 +61,7 @@
fakeStorPool = mock.Mock()
fakeStorPool.spopenstack = mock.Mock()
-@@ -32,12 +42,21 @@ fakeStorPool.sptypes = mock.Mock()
+@@ -31,12 +41,21 @@ fakeStorPool.sptypes = mock.Mock()
sys.modules['storpool'] = fakeStorPool
@@ -84,7 +83,7 @@
volume_types = {
1: {},
2: {'storpool_template': 'ssd'},
-@@ -71,6 +90,10 @@ def snapshotName(vtype, vid):
+@@ -70,6 +89,10 @@ def snapshotName(vtype, vid):
return 'os--snap--{t}--{id}'.format(t=vtype, id=vid)
@@ -95,7 +94,7 @@
class MockDisk(object):
def __init__(self, diskId):
self.id = diskId
-@@ -181,6 +204,273 @@ def MockVolumeUpdateDesc(size):
+@@ -180,6 +203,273 @@ def MockVolumeUpdateDesc(size):
return {'size': size}
@@ -369,7 +368,7 @@
def MockSPConfig(section = 's01'):
res = {}
m = re.match('^s0*([A-Za-z0-9]+)$', section)
-@@ -222,7 +512,15 @@ class StorPoolTestCase(test.TestCase):
+@@ -221,7 +511,15 @@ class StorPoolTestCase(test.TestCase):
self.cfg.volume_backend_name = 'storpool_test'
self.cfg.storpool_template = None
self.cfg.storpool_replication = 3
@@ -385,7 +384,7 @@
mock_exec = mock.Mock()
mock_exec.return_value = ('', '')
-@@ -231,7 +529,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -230,7 +528,7 @@ class StorPoolTestCase(test.TestCase):
self.driver.check_for_setup_error()
@ddt.data(
@@ -394,7 +393,7 @@
({'no-host': None}, KeyError),
({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
({'host': 's01'}, None),
-@@ -247,7 +545,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -246,7 +544,7 @@ class StorPoolTestCase(test.TestCase):
conn)
@ddt.data(
@@ -403,7 +402,7 @@
({'no-host': None}, KeyError),
({'host': 'sbad'}, driver.StorPoolConfigurationInvalid),
)
-@@ -286,7 +584,7 @@ class StorPoolTestCase(test.TestCase):
+@@ -285,7 +583,7 @@ class StorPoolTestCase(test.TestCase):
self.assertEqual(21, pool['total_capacity_gb'])
self.assertEqual(5, int(pool['free_capacity_gb']))
@@ -412,7 +411,7 @@
self.assertFalse(pool['QoS_support'])
self.assertFalse(pool['thick_provisioning_support'])
self.assertTrue(pool['thin_provisioning_support'])
-@@ -644,3 +942,136 @@ class StorPoolTestCase(test.TestCase):
+@@ -641,3 +939,136 @@ class StorPoolTestCase(test.TestCase):
self.driver.get_pool({
'volume_type': volume_type
}))
@@ -550,7 +549,7 @@
+ volumeName(fconst.VOLUME_ID),
+ )
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index b15a201c3..d8c420a66 100644
+index caa0ce06e..cec7589f2 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
@@ -15,6 +15,7 @@
@@ -561,7 +560,7 @@
import platform
from oslo_config import cfg
-@@ -44,6 +45,31 @@ if storpool:
+@@ -43,6 +44,31 @@ if storpool:
storpool_opts = [
@@ -593,7 +592,7 @@
cfg.StrOpt('storpool_template',
default=None,
help='The StorPool template for volumes with no type.'),
-@@ -105,6 +131,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -104,6 +130,7 @@ class StorPoolDriver(driver.VolumeDriver):
self._ourId = None
self._ourIdInt = None
self._attach = None
@@ -601,7 +600,7 @@
@staticmethod
def get_driver_options():
-@@ -162,10 +189,326 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -161,10 +188,326 @@ class StorPoolDriver(driver.VolumeDriver):
raise StorPoolConfigurationInvalid(
section=hostname, param='SP_OURID', error=e)
@@ -928,7 +927,7 @@
return {'driver_volume_type': 'storpool',
'data': {
'client_id': self._storpool_client_id(connector),
-@@ -174,6 +517,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -173,6 +516,9 @@ class StorPoolDriver(driver.VolumeDriver):
}}
def terminate_connection(self, volume, connector, **kwargs):
@@ -938,7 +937,7 @@
pass
def create_snapshot(self, snapshot):
-@@ -275,11 +621,20 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -274,11 +620,20 @@ class StorPoolDriver(driver.VolumeDriver):
)
def create_export(self, context, volume, connector):
@@ -960,7 +959,7 @@
def delete_volume(self, volume):
name = self._attach.volumeName(volume['id'])
try:
-@@ -316,6 +671,17 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -315,6 +670,17 @@ class StorPoolDriver(driver.VolumeDriver):
LOG.error("StorPoolDriver API initialization failed: %s", e)
raise
@@ -978,7 +977,7 @@
def _update_volume_stats(self):
try:
dl = self._attach.api().disksList()
-@@ -341,7 +707,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -340,7 +706,7 @@ class StorPoolDriver(driver.VolumeDriver):
'total_capacity_gb': total / units.Gi,
'free_capacity_gb': free / units.Gi,
'reserved_percentage': 0,
@@ -987,7 +986,7 @@
'QoS_support': False,
'thick_provisioning_support': False,
'thin_provisioning_support': True,
-@@ -360,7 +726,9 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -359,7 +725,9 @@ class StorPoolDriver(driver.VolumeDriver):
'volume_backend_name') or 'storpool',
'vendor_name': 'StorPool',
'driver_version': self.VERSION,
@@ -1105,5 +1104,5 @@
+ ``iscsi_export_to`` is set to ``*`, that is, all StorPool volumes will be
+ exported via iSCSI to all initiators.
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch b/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
index e4583e8..29496eb 100644
--- a/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
+++ b/patches/openstack/cinder/sep-sp-leave-it-to-brick.patch
@@ -1,7 +1,7 @@
-From 9f79ab1ac4e5392b7c1ad8ab6f327abecea6e528 Mon Sep 17 00:00:00 2001
+From a0fb970b3b8dc3f95e2198d68f1c992f4542119f Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Tue, 20 Apr 2021 17:46:41 +0300
-Subject: [PATCH 02/10] StorPool: drop _attach_volume() and _detach_volume()
+Subject: [PATCH 1/9] StorPool: drop _attach_volume() and _detach_volume()
Our os-brick connector already handles the "keep track of which volume
is attached for what reason" calls to storpool.spopenstack. However,
@@ -23,10 +23,10 @@
create mode 100644 releasenotes/notes/bug-1939241-storpool-attach-encrypted-volumes-783c723683b8f9a9.yaml
diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index a5f763b96..2e6f56526 100644
+index 4c0241eca..0eac3d957 100644
--- a/cinder/tests/unit/volume/drivers/test_storpool.py
+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -225,7 +225,9 @@ class StorPoolTestCase(test.TestCase):
+@@ -224,7 +224,9 @@ class StorPoolTestCase(test.TestCase):
def test_initialize_connection_good(self, cid, hid, name):
c = self.driver.initialize_connection({'id': hid}, {'host': name})
self.assertEqual('storpool', c['driver_volume_type'])
@@ -38,10 +38,10 @@
def test_noop_functions(self):
self.driver.terminate_connection(None, None)
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index d42d1c68c..1fc4262b2 100644
+index abfdad160..d21fb52f6 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -168,6 +168,7 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -167,6 +167,7 @@ class StorPoolDriver(driver.VolumeDriver):
'data': {
'client_id': self._storpool_client_id(connector),
'volume': volume['id'],
@@ -49,7 +49,7 @@
}}
def terminate_connection(self, volume, connector, **kwargs):
-@@ -314,45 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -313,45 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
'pools': pools
}
@@ -109,5 +109,5 @@
+ encrypted StorPool volumes by dropping the needlessly and incompletely
+ overridden `_attach_volume()` and `_detach_volume()` methods.
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-retype-vol.patch b/patches/openstack/cinder/sep-sp-retype-vol.patch
index 0e48852..94caf52 100644
--- a/patches/openstack/cinder/sep-sp-retype-vol.patch
+++ b/patches/openstack/cinder/sep-sp-retype-vol.patch
@@ -1,7 +1,7 @@
-From 816aa85f4b3b081f1e79436b9c6c60d47fb220e5 Mon Sep 17 00:00:00 2001
+From 46d0c4c964abda3c8018e7896acab480502f11b3 Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Wed, 14 Dec 2022 17:55:56 +0200
-Subject: [PATCH 06/10] StorPool: fix the retype volume flow
+Subject: [PATCH 5/9] StorPool: fix the retype volume flow
Change-Id: I786733aae17dea47e3e6f2a393a947bfb46e70a3
Closes-Bug: #2002995
@@ -11,10 +11,10 @@
2 files changed, 47 insertions(+), 16 deletions(-)
diff --git a/cinder/tests/unit/volume/drivers/test_storpool.py b/cinder/tests/unit/volume/drivers/test_storpool.py
-index f878c6d26..24715fa29 100644
+index 442bdbb88..8792678ed 100644
--- a/cinder/tests/unit/volume/drivers/test_storpool.py
+++ b/cinder/tests/unit/volume/drivers/test_storpool.py
-@@ -358,12 +358,6 @@ class StorPoolTestCase(test.TestCase):
+@@ -356,12 +356,6 @@ class StorPoolTestCase(test.TestCase):
'available')
self.assertDictEqual({'_name_id': '1'}, res)
@@ -27,8 +27,8 @@
# Success: rename the migrated volume to match the original
res = self.driver.update_migrated_volume(None, {'id': '3'},
{'id': '2', '_name_id': '3'},
-@@ -374,6 +368,16 @@ class StorPoolTestCase(test.TestCase):
- volumes.keys())
+@@ -371,6 +365,16 @@ class StorPoolTestCase(test.TestCase):
+ volumes.keys())
self.assertVolumeNames(('1', '3',))
+ # Success: swap volume names with an existing volume
@@ -45,10 +45,10 @@
self.driver.delete_volume({'id': vid})
self.assertVolumeNames([])
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 37e36fd61..97d188fd4 100644
+index 6c67ae567..c2b566f4a 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -353,10 +353,12 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -352,10 +352,12 @@ class StorPoolDriver(driver.VolumeDriver):
update['template'] = templ
else:
update['replication'] = repl
@@ -65,7 +65,7 @@
if update:
name = self._attach.volumeName(volume['id'])
-@@ -381,21 +383,46 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -380,21 +382,46 @@ class StorPoolDriver(driver.VolumeDriver):
'created as part of the migration from '
'"%(oid)s".', {'tid': temp_id, 'oid': orig_id})
return {'_name_id': new_volume['_name_id'] or new_volume['id']}
@@ -119,5 +119,5 @@
+ {'tname': temp_name, 'oname': orig_name, 'err': e})
+ return {'_name_id': new_volume['_name_id'] or new_volume['id']}
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-rm-backup.patch b/patches/openstack/cinder/sep-sp-rm-backup.patch
index 8c7d334..85f0eeb 100644
--- a/patches/openstack/cinder/sep-sp-rm-backup.patch
+++ b/patches/openstack/cinder/sep-sp-rm-backup.patch
@@ -1,7 +1,7 @@
-From a1b26cc52eb2855226052e19301e6e6827dcb699 Mon Sep 17 00:00:00 2001
+From 090fb2fb26ccfe699712c350e2c468f76fbfd560 Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Mon, 11 May 2020 11:02:53 +0300
-Subject: [PATCH 03/10] StorPool driver: remove the obsolete backup_volume()
+Subject: [PATCH 2/9] StorPool driver: remove the obsolete backup_volume()
Follow suit with I984de3df803f12dbb95e3309e668b3fbd519e70f.
@@ -11,10 +11,10 @@
1 file changed, 29 deletions(-)
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index 1fc4262b2..d1c6f0ca5 100644
+index d21fb52f6..9414bc62a 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -315,35 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -314,35 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
'pools': pools
}
@@ -51,5 +51,5 @@
req_id = context.request_id
volname = self._attach.volumeName(volume['id'])
--
-2.42.0
+2.43.0
diff --git a/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch b/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
index 6fe2319..5a68f76 100644
--- a/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
+++ b/patches/openstack/cinder/sep-sp-rm-copy-volimg.patch
@@ -1,4 +1,4 @@
-From 7daed00eb1208ed62a9bd7f8432ed6d48b2efb01 Mon Sep 17 00:00:00 2001
+From d2a67266ecc5a9b851b589da1839b74deaec3585 Mon Sep 17 00:00:00 2001
From: Peter Penchev <openstack-dev@storpool.com>
Date: Mon, 26 Sep 2022 16:04:36 +0300
Subject: [PATCH 3/9] StorPool: drop copy_image_to_volume() and
@@ -14,10 +14,10 @@
1 file changed, 45 deletions(-)
diff --git a/cinder/volume/drivers/storpool.py b/cinder/volume/drivers/storpool.py
-index c595c1c0c..37e36fd61 100644
+index 9414bc62a..6c67ae567 100644
--- a/cinder/volume/drivers/storpool.py
+++ b/cinder/volume/drivers/storpool.py
-@@ -315,51 +315,6 @@ class StorPoolDriver(driver.VolumeDriver):
+@@ -314,51 +314,6 @@ class StorPoolDriver(driver.VolumeDriver):
'pools': pools
}