From 537f5cbe8ac9439351afe365360eeb38fb340fcb Mon Sep 17 00:00:00 2001 From: Huanxuan Ao Date: Sat, 28 May 2016 12:50:14 +0800 Subject: Support deleting multi address scopes in networkv2 This patch adds support for deleting multi address scopes by using "address scope delete" command. Change-Id: Ic8d3ebc17db44ca5d42c336d2c4d5633f70d4e8b Partially-Implements: blueprint multi-argument-network --- openstackclient/network/v2/address_scope.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'openstackclient/network') diff --git a/openstackclient/network/v2/address_scope.py b/openstackclient/network/v2/address_scope.py index 614900c9..dbc6865f 100644 --- a/openstackclient/network/v2/address_scope.py +++ b/openstackclient/network/v2/address_scope.py @@ -98,22 +98,38 @@ class CreateAddressScope(command.ShowOne): class DeleteAddressScope(command.Command): - """Delete an address scope""" + """Delete address scope(s)""" def get_parser(self, prog_name): parser = super(DeleteAddressScope, self).get_parser(prog_name) parser.add_argument( 'address_scope', metavar="", - help=_("Address scope to delete (name or ID)") + nargs='+', + help=_("Address scope(s) to delete (name or ID)") ) return parser def take_action(self, parsed_args): client = self.app.client_manager.network - obj = client.find_address_scope(parsed_args.address_scope) - client.delete_address_scope(obj) + result = 0 + + for scope in parsed_args.address_scope: + try: + obj = client.find_address_scope(scope, ignore_missing=False) + client.delete_address_scope(obj) + except Exception as e: + result += 1 + self.app.log.error(_("Failed to delete address scope with " + "name or ID '%(scope)s': %(e)s") + % {'scope': scope, 'e': e}) + + if result > 0: + total = len(parsed_args.address_scope) + msg = (_("%(result)s of %(total)s address scopes failed " + "to delete.") % {'result': result, 'total': total}) + raise exceptions.CommandError(msg) class ListAddressScope(command.Lister): -- cgit v1.2.1