Merge "Multi REST API calls error handling of "volume unset" command"

This commit is contained in:
Jenkins
2016-09-14 17:02:04 +00:00
committed by Gerrit Code Review
2 changed files with 45 additions and 4 deletions

View File

@@ -1035,3 +1035,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)

View File

@@ -527,9 +527,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"))