From cc78d48a2895413f0ae7547db19ea843ae796cca Mon Sep 17 00:00:00 2001 From: Huanxuan Ao Date: Sat, 7 May 2016 17:08:54 +0800 Subject: Implement "address scope set" command This patch add a command that supports setting address scope properties. Change-Id: I9c4b5068a8abb986a9dc18b167b48b924d16ff42 Closes-Bug: #1566269 --- openstackclient/network/v2/address_scope.py | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'openstackclient/network') diff --git a/openstackclient/network/v2/address_scope.py b/openstackclient/network/v2/address_scope.py index 86f39c34..fac0849f 100644 --- a/openstackclient/network/v2/address_scope.py +++ b/openstackclient/network/v2/address_scope.py @@ -14,6 +14,7 @@ """Address scope action implementations""" from openstackclient.common import command +from openstackclient.common import exceptions from openstackclient.common import utils from openstackclient.i18n import _ from openstackclient.identity import common as identity_common @@ -142,6 +143,53 @@ class ListAddressScope(command.Lister): ) for s in data)) +class SetAddressScope(command.Command): + """Set address scope properties""" + + def get_parser(self, prog_name): + parser = super(SetAddressScope, self).get_parser(prog_name) + parser.add_argument( + 'address_scope', + metavar="", + help=_("Address scope to modify (name or ID)") + ) + parser.add_argument( + '--name', + metavar="", + help=_('Set address scope name') + ) + share_group = parser.add_mutually_exclusive_group() + share_group.add_argument( + '--share', + action='store_true', + help=_('Share the address scope between projects') + ) + share_group.add_argument( + '--no-share', + action='store_true', + help=_('Do not share the address scope between projects') + ) + + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.network + obj = client.find_address_scope( + parsed_args.address_scope, + ignore_missing=False) + attrs = {} + if parsed_args.name is not None: + attrs['name'] = parsed_args.name + if parsed_args.share: + attrs['shared'] = True + if parsed_args.no_share: + attrs['shared'] = False + if attrs == {}: + msg = "Nothing specified to be set." + raise exceptions.CommandError(msg) + client.update_address_scope(obj, **attrs) + + class ShowAddressScope(command.ShowOne): """Display address scope details""" -- cgit v1.2.1