summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/tests/unit/volume/v2/test_volume.py27
-rw-r--r--openstackclient/volume/v2/volume.py22
2 files changed, 45 insertions, 4 deletions
diff --git a/openstackclient/tests/unit/volume/v2/test_volume.py b/openstackclient/tests/unit/volume/v2/test_volume.py
index 66f8f74d..e9f1629e 100644
--- a/openstackclient/tests/unit/volume/v2/test_volume.py
+++ b/openstackclient/tests/unit/volume/v2/test_volume.py
@@ -964,3 +964,30 @@ class TestVolumeUnset(TestVolume):
self.volumes_mock.delete_image_metadata.assert_called_with(
self.new_volume.id, parsed_args_unset.image_property)
+
+ def test_volume_unset_image_property_fail(self):
+ self.volumes_mock.delete_image_metadata.side_effect = (
+ exceptions.CommandError())
+ arglist = [
+ '--image-property', 'Alpha',
+ '--property', 'Beta',
+ self.new_volume.id,
+ ]
+ verifylist = [
+ ('image_property', ['Alpha']),
+ ('property', ['Beta']),
+ ('volume', self.new_volume.id),
+ ]
+ parsed_args = self.check_parser(
+ self.cmd_unset, arglist, verifylist)
+
+ try:
+ self.cmd_unset.take_action(parsed_args)
+ self.fail('CommandError should be raised.')
+ except exceptions.CommandError as e:
+ self.assertEqual('One or more of the unset operations failed',
+ str(e))
+ self.volumes_mock.delete_image_metadata.assert_called_with(
+ self.new_volume.id, parsed_args.image_property)
+ self.volumes_mock.delete_metadata.assert_called_with(
+ self.new_volume.id, parsed_args.property)
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index bd201e00..0f85b5d4 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -511,9 +511,23 @@ class UnsetVolume(command.Command):
volume = utils.find_resource(
volume_client.volumes, parsed_args.volume)
+ result = 0
if parsed_args.property:
- volume_client.volumes.delete_metadata(
- volume.id, parsed_args.property)
+ try:
+ volume_client.volumes.delete_metadata(
+ volume.id, parsed_args.property)
+ except Exception as e:
+ LOG.error(_("Failed to unset volume property: %s"), e)
+ result += 1
+
if parsed_args.image_property:
- volume_client.volumes.delete_image_metadata(
- volume.id, parsed_args.image_property)
+ try:
+ volume_client.volumes.delete_image_metadata(
+ volume.id, parsed_args.image_property)
+ except Exception as e:
+ LOG.error(_("Failed to unset image property: %s"), e)
+ result += 1
+
+ if result > 0:
+ raise exceptions.CommandError(_("One or more of the "
+ "unset operations failed"))