diff options
| author | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-07-12 15:53:58 +0800 |
|---|---|---|
| committer | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-07-14 17:49:26 +0800 |
| commit | 9b51127ecc85e9814b6256180ef612c857156559 (patch) | |
| tree | 7417dfafa902457fa3f3f4de25e2e020a0088703 /openstackclient/volume/v2/snapshot.py | |
| parent | 63a6789addff3ccc9cb97f1fde63eb6233624319 (diff) | |
| download | python-openstackclient-9b51127ecc85e9814b6256180ef612c857156559.tar.gz | |
Support error handling for delete commands in volumev2
Some delete conmmands in volumev2 did not support
error handling, this patch add them and also add
the unit tests for bulk deletion
Change-Id: I56ade6f9c7396c78fb989547476c4d94ccd76eae
Diffstat (limited to 'openstackclient/volume/v2/snapshot.py')
| -rw-r--r-- | openstackclient/volume/v2/snapshot.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py index 5e6949d4..ba692074 100644 --- a/openstackclient/volume/v2/snapshot.py +++ b/openstackclient/volume/v2/snapshot.py @@ -15,15 +15,20 @@ """Volume v2 snapshot action implementations""" import copy +import logging from osc_lib.cli import parseractions from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils import six from openstackclient.i18n import _ +LOG = logging.getLogger(__name__) + + class CreateSnapshot(command.ShowOne): """Create new snapshot""" @@ -92,10 +97,24 @@ class DeleteSnapshot(command.Command): def take_action(self, parsed_args): volume_client = self.app.client_manager.volume - for snapshot in parsed_args.snapshots: - snapshot_id = utils.find_resource( - volume_client.volume_snapshots, snapshot).id - volume_client.volume_snapshots.delete(snapshot_id) + result = 0 + + for i in parsed_args.snapshots: + try: + snapshot_id = utils.find_resource( + volume_client.volume_snapshots, i).id + volume_client.volume_snapshots.delete(snapshot_id) + except Exception as e: + result += 1 + LOG.error(_("Failed to delete snapshot with " + "name or ID '%(snapshot)s': %(e)s") + % {'snapshot': i, 'e': e}) + + if result > 0: + total = len(parsed_args.snapshots) + msg = (_("%(result)s of %(total)s snapshots failed " + "to delete.") % {'result': result, 'total': total}) + raise exceptions.CommandError(msg) class ListSnapshot(command.Lister): |
