Skip to content

Commit 3b0e648

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Multi REST API calls error handling of "volume unset" command"
2 parents c381193 + cb6c11b commit 3b0e648

2 files changed

Lines changed: 45 additions & 4 deletions

File tree

openstackclient/tests/unit/volume/v2/test_volume.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,3 +1035,30 @@ def test_volume_unset_image_property(self):
10351035

10361036
self.volumes_mock.delete_image_metadata.assert_called_with(
10371037
self.new_volume.id, parsed_args_unset.image_property)
1038+
1039+
def test_volume_unset_image_property_fail(self):
1040+
self.volumes_mock.delete_image_metadata.side_effect = (
1041+
exceptions.CommandError())
1042+
arglist = [
1043+
'--image-property', 'Alpha',
1044+
'--property', 'Beta',
1045+
self.new_volume.id,
1046+
]
1047+
verifylist = [
1048+
('image_property', ['Alpha']),
1049+
('property', ['Beta']),
1050+
('volume', self.new_volume.id),
1051+
]
1052+
parsed_args = self.check_parser(
1053+
self.cmd_unset, arglist, verifylist)
1054+
1055+
try:
1056+
self.cmd_unset.take_action(parsed_args)
1057+
self.fail('CommandError should be raised.')
1058+
except exceptions.CommandError as e:
1059+
self.assertEqual('One or more of the unset operations failed',
1060+
str(e))
1061+
self.volumes_mock.delete_image_metadata.assert_called_with(
1062+
self.new_volume.id, parsed_args.image_property)
1063+
self.volumes_mock.delete_metadata.assert_called_with(
1064+
self.new_volume.id, parsed_args.property)

openstackclient/volume/v2/volume.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -527,9 +527,23 @@ def take_action(self, parsed_args):
527527
volume = utils.find_resource(
528528
volume_client.volumes, parsed_args.volume)
529529

530+
result = 0
530531
if parsed_args.property:
531-
volume_client.volumes.delete_metadata(
532-
volume.id, parsed_args.property)
532+
try:
533+
volume_client.volumes.delete_metadata(
534+
volume.id, parsed_args.property)
535+
except Exception as e:
536+
LOG.error(_("Failed to unset volume property: %s"), e)
537+
result += 1
538+
533539
if parsed_args.image_property:
534-
volume_client.volumes.delete_image_metadata(
535-
volume.id, parsed_args.image_property)
540+
try:
541+
volume_client.volumes.delete_image_metadata(
542+
volume.id, parsed_args.image_property)
543+
except Exception as e:
544+
LOG.error(_("Failed to unset image property: %s"), e)
545+
result += 1
546+
547+
if result > 0:
548+
raise exceptions.CommandError(_("One or more of the "
549+
"unset operations failed"))

0 commit comments

Comments
 (0)