diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-01-03 00:47:25 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-01-03 00:47:25 +0000 |
| commit | 6698f14fdb5438d3ca99e9a4f97ddfaf39c3cc9c (patch) | |
| tree | 86f777987416800371041be155a65d0e4a272374 /openstackclient/identity | |
| parent | 2ef136f5b70e317df718f618da86a49a2f31c9a6 (diff) | |
| parent | 4a07e63e7ea4b99b10e4a3fd9ed06c0cf6ee905f (diff) | |
| download | python-openstackclient-6698f14fdb5438d3ca99e9a4f97ddfaf39c3cc9c.tar.gz | |
Merge "type should be required for v2.0 service create"
Diffstat (limited to 'openstackclient/identity')
| -rw-r--r-- | openstackclient/identity/v2_0/service.py | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/openstackclient/identity/v2_0/service.py b/openstackclient/identity/v2_0/service.py index e8848dde..0b98a903 100644 --- a/openstackclient/identity/v2_0/service.py +++ b/openstackclient/identity/v2_0/service.py @@ -15,6 +15,7 @@ """Service action implementations""" +import argparse import logging import six @@ -36,15 +37,20 @@ class CreateService(show.ShowOne): def get_parser(self, prog_name): parser = super(CreateService, self).get_parser(prog_name) parser.add_argument( - 'name', - metavar='<service-name>', - help=_('New service name'), + 'type_or_name', + metavar='<type>', + help=_('New service type (compute, image, identity, volume, etc)'), ) - parser.add_argument( + type_or_name_group = parser.add_mutually_exclusive_group() + type_or_name_group.add_argument( '--type', metavar='<service-type>', - required=True, - help=_('New service type (compute, image, identity, volume, etc)'), + help=argparse.SUPPRESS, + ) + type_or_name_group.add_argument( + '--name', + metavar='<name>', + help=_('New service name'), ) parser.add_argument( '--description', @@ -57,9 +63,28 @@ class CreateService(show.ShowOne): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity + type_or_name = parsed_args.type_or_name + name = parsed_args.name + type = parsed_args.type + + # If only a single positional is present, it's a <type>. + # This is not currently legal so it is considered a new case. + if not type and not name: + type = type_or_name + # If --type option is present then positional is handled as <name>; + # display deprecation message. + elif type: + name = type_or_name + self.log.warning(_('The argument --type is deprecated, use service' + ' create --name <service-name> type instead.')) + # If --name option is present the positional is handled as <type>. + # Making --type optional is new, but back-compatible + elif name: + type = type_or_name + service = identity_client.services.create( - parsed_args.name, - parsed_args.type, + name, + type, parsed_args.description) info = {} |
