diff options
| author | Dean Troyer <dtroyer@gmail.com> | 2013-09-09 14:55:07 -0500 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2013-09-09 14:58:28 -0500 |
| commit | 8898e020fb874871e4d120e686abac0a94afd392 (patch) | |
| tree | 96ca294fa56a9e086299aa3281feb453eb72e4fe /openstackclient/identity/v3/project.py | |
| parent | 7a0a7d67ed639cf664f02e1148c7b4a9348f4672 (diff) | |
| download | python-openstackclient-8898e020fb874871e4d120e686abac0a94afd392.tar.gz | |
Identity v3 tests
* Add project, user, role and service v3 tests
* Fix issues in commands with enable/disable
* Make commands and tests more consistent between versions
* Make formatting and comments more consistent
Change-Id: Id21e7a5abd7e421a7742f937861ec46b53095fc7
Diffstat (limited to 'openstackclient/identity/v3/project.py')
| -rw-r--r-- | openstackclient/identity/v3/project.py | 131 |
1 files changed, 82 insertions, 49 deletions
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py index 05722b54..f245a888 100644 --- a/openstackclient/identity/v3/project.py +++ b/openstackclient/identity/v3/project.py @@ -17,7 +17,6 @@ import logging import six -import sys from cliff import command from cliff import lister @@ -27,38 +26,38 @@ from openstackclient.common import utils class CreateProject(show.ShowOne): - """Create project command""" + """Create new project""" log = logging.getLogger(__name__ + '.CreateProject') def get_parser(self, prog_name): parser = super(CreateProject, self).get_parser(prog_name) parser.add_argument( - 'project_name', + 'name', metavar='<project-name>', - help='New project name') + help='New project name', + ) parser.add_argument( '--domain', metavar='<project-domain>', - help='References the domain name or ID which owns the project') + help='Domain owning the project (name or ID)', + ) parser.add_argument( '--description', metavar='<project-description>', - help='New project description') - # FIXME (stevemar): need to update enabled/disabled as per Dolph's - # comments in 19999/4 + help='New project description', + ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( '--enable', - dest='enabled', action='store_true', - default=True, - help='Enable project') + help='Enable project', + ) enable_group.add_argument( '--disable', - dest='enabled', - action='store_false', - help='Disable project') + action='store_true', + help='Disable project', + ) return parser def take_action(self, parsed_args): @@ -66,16 +65,23 @@ class CreateProject(show.ShowOne): identity_client = self.app.client_manager.identity if parsed_args.domain: - domain = utils.find_resource(identity_client.domains, - parsed_args.domain).id + domain = utils.find_resource( + identity_client.domains, + parsed_args.domain, + ).id else: domain = None + enabled = True + if parsed_args.disable: + enabled = False + project = identity_client.projects.create( - parsed_args.project_name, - domain=domain, + parsed_args.name, + domain, description=parsed_args.description, - enabled=parsed_args.enabled) + enabled=enabled, + ) info = {} info.update(project._info) @@ -83,7 +89,7 @@ class CreateProject(show.ShowOne): class DeleteProject(command.Command): - """Delete project command""" + """Delete project""" log = logging.getLogger(__name__ + '.DeleteProject') @@ -92,20 +98,25 @@ class DeleteProject(command.Command): parser.add_argument( 'project', metavar='<project>', - help='Name or ID of project to delete') + help='Project to delete (name or ID)', + ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity - project = utils.find_resource(identity_client.projects, - parsed_args.project) + + project = utils.find_resource( + identity_client.projects, + parsed_args.project, + ) + identity_client.projects.delete(project.id) return class ListProject(lister.Lister): - """List project command""" + """List projects""" log = logging.getLogger(__name__ + '.ListProject') @@ -115,7 +126,8 @@ class ListProject(lister.Lister): '--long', action='store_true', default=False, - help='Additional fields are listed in output') + help='List additional fields in output', + ) return parser def take_action(self, parsed_args): @@ -133,7 +145,7 @@ class ListProject(lister.Lister): class SetProject(command.Command): - """Set project command""" + """Set project properties""" log = logging.getLogger(__name__ + '.SetProject') @@ -142,54 +154,75 @@ class SetProject(command.Command): parser.add_argument( 'project', metavar='<project>', - help='Name or ID of project to change') + help='Project to change (name or ID)', + ) parser.add_argument( '--name', metavar='<new-project-name>', - help='New project name') + help='New project name', + ) parser.add_argument( '--domain', metavar='<project-domain>', - help='New domain name or ID that will now own the project') + help='New domain owning the project (name or ID)', + ) parser.add_argument( '--description', metavar='<project-description>', - help='New project description') + help='New project description', + ) enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( '--enable', - dest='enabled', action='store_true', - default=True, - help='Enable project (default)') + help='Enable project', + ) enable_group.add_argument( '--disable', - dest='enabled', - action='store_false', - help='Disable project') + action='store_true', + help='Disable project', + ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity - project = utils.find_resource(identity_client.projects, - parsed_args.project) - kwargs = {} + + if (not parsed_args.name + and not parsed_args.description + and not parsed_args.domain + and not parsed_args.enable + and not parsed_args.disable): + return + + project = utils.find_resource( + identity_client.projects, + parsed_args.project, + ) + + kwargs = project._info if parsed_args.name: kwargs['name'] = parsed_args.name if parsed_args.domain: - domain = utils.find_resource( - identity_client.domains, parsed_args.domain).id - kwargs['domain'] = domain + kwargs['domain'] = utils.find_resource( + identity_client.domains, + parsed_args.domain, + ).id if parsed_args.description: kwargs['description'] = parsed_args.description - if 'enabled' in parsed_args: - kwargs['enabled'] = parsed_args.enabled - - if kwargs == {}: - sys.stdout.write("Project not updated, no arguments present") - return - project.update(**kwargs) + if parsed_args.enable: + kwargs['enabled'] = True + if parsed_args.disable: + kwargs['enabled'] = False + if 'id' in kwargs: + del kwargs['id'] + if 'domain_id' in kwargs: + # Hack around borken Identity API arg names + kwargs.update( + {'domain': kwargs.pop('domain_id')} + ) + + identity_client.projects.update(project.id, **kwargs) return |
