Skip to content

Commit 416c190

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "volume: Use force delete param when possible"
2 parents fe8cb00 + a33dde1 commit 416c190

File tree

2 files changed

+35
-5
lines changed

2 files changed

+35
-5
lines changed

openstack/block_storage/v3/_proxy.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -761,11 +761,16 @@ def delete_volume(
761761
:returns: ``None``
762762
"""
763763
volume = self._get_resource(_volume.Volume, volume)
764+
765+
params = {'cascade': cascade}
766+
if utils.supports_microversion(self, '3.23'):
767+
params['force'] = force
768+
764769
try:
765-
if not force:
766-
volume.delete(self, params={'cascade': cascade})
767-
else:
770+
if force and not utils.supports_microversion(self, '3.23'):
768771
volume.force_delete(self)
772+
else:
773+
volume.delete(self, params=params)
769774
except exceptions.NotFoundException:
770775
if ignore_missing:
771776
return None

openstack/tests/unit/block_storage/v3/test_proxy.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@ def test_volumes_not_detailed(self):
7474
def test_volume_create_attrs(self):
7575
self.verify_create(self.proxy.create_volume, volume.Volume)
7676

77-
def test_volume_delete(self):
77+
@mock.patch(
78+
'openstack.utils.supports_microversion',
79+
autospec=True,
80+
return_value=False,
81+
)
82+
def test_volume_delete(self, mock_mv):
7883
self._verify(
7984
"openstack.block_storage.v3.volume.Volume.delete",
8085
self.proxy.delete_volume,
@@ -83,7 +88,12 @@ def test_volume_delete(self):
8388
expected_kwargs={"params": {"cascade": False}},
8489
)
8590

86-
def test_volume_delete_force(self):
91+
@mock.patch(
92+
'openstack.utils.supports_microversion',
93+
autospec=True,
94+
return_value=False,
95+
)
96+
def test_volume_delete_force(self, mock_mv):
8797
self._verify(
8898
"openstack.block_storage.v3.volume.Volume.force_delete",
8999
self.proxy.delete_volume,
@@ -92,6 +102,21 @@ def test_volume_delete_force(self):
92102
expected_args=[self.proxy],
93103
)
94104

105+
@mock.patch(
106+
'openstack.utils.supports_microversion',
107+
autospec=True,
108+
return_value=True,
109+
)
110+
def test_volume_delete_force_v323(self, mock_mv):
111+
self._verify(
112+
"openstack.block_storage.v3.volume.Volume.delete",
113+
self.proxy.delete_volume,
114+
method_args=["value"],
115+
method_kwargs={"force": True},
116+
expected_args=[self.proxy],
117+
expected_kwargs={"params": {"cascade": False, "force": True}},
118+
)
119+
95120
def test_get_volume_metadata(self):
96121
self._verify(
97122
"openstack.block_storage.v3.volume.Volume.fetch_metadata",

0 commit comments

Comments
 (0)