diff --git a/openstackclient/identity/v3/consumer.py b/openstackclient/identity/v3/consumer.py new file mode 100644 index 0000000000..ddeae6189a --- /dev/null +++ b/openstackclient/identity/v3/consumer.py @@ -0,0 +1,157 @@ +# Copyright 2012-2013 OpenStack Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +"""Identity v3 Consumer action implementations""" + +import logging +import six +import sys + +from cliff import command +from cliff import lister +from cliff import show + +from openstackclient.common import utils + + +class CreateConsumer(show.ShowOne): + """Create consumer command""" + + log = logging.getLogger(__name__ + '.CreateConsumer') + + def get_parser(self, prog_name): + parser = super(CreateConsumer, self).get_parser(prog_name) + parser.add_argument( + '--description', + metavar='', + help='New consumer description', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + consumer = identity_client.consumers.create_consumer( + parsed_args.description + ) + info = {} + info.update(consumer._info) + return zip(*sorted(six.iteritems(info))) + + +class DeleteConsumer(command.Command): + """Delete consumer command""" + + log = logging.getLogger(__name__ + '.DeleteConsumer') + + def get_parser(self, prog_name): + parser = super(DeleteConsumer, self).get_parser(prog_name) + parser.add_argument( + 'consumer', + metavar='', + help='ID of consumer to delete', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + consumer = utils.find_resource( + identity_client.consumers, parsed_args.consumer) + identity_client.consumers.delete_consumer(consumer.id) + return + + +class ListConsumer(lister.Lister): + """List consumer command""" + + log = logging.getLogger(__name__ + '.ListConsumer') + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + columns = ('ID', 'Description') + data = self.app.client_manager.identity.consumers.list_consumers() + return (columns, + (utils.get_item_properties( + s, columns, + formatters={}, + ) for s in data)) + + +class SetConsumer(command.Command): + """Set consumer command""" + + log = logging.getLogger(__name__ + '.SetConsumer') + + def get_parser(self, prog_name): + parser = super(SetConsumer, self).get_parser(prog_name) + parser.add_argument( + 'consumer', + metavar='', + help='ID of consumer to change', + ) + parser.add_argument( + '--description', + metavar='', + help='New consumer description', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + consumer = utils.find_resource( + identity_client.consumers, parsed_args.consumer) + kwargs = {} + if parsed_args.description: + kwargs['description'] = parsed_args.description + + if not len(kwargs): + sys.stdout.write("Consumer not updated, no arguments present") + return + + consumer = identity_client.consumers.update_consumer( + consumer.id, + **kwargs + ) + + info = {} + info.update(consumer._info) + return zip(*sorted(six.iteritems(info))) + + +class ShowConsumer(show.ShowOne): + """Show consumer command""" + + log = logging.getLogger(__name__ + '.ShowConsumer') + + def get_parser(self, prog_name): + parser = super(ShowConsumer, self).get_parser(prog_name) + parser.add_argument( + 'consumer', + metavar='', + help='ID of consumer to display', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + consumer = utils.find_resource( + identity_client.consumers, parsed_args.consumer) + + info = {} + info.update(consumer._info) + return zip(*sorted(six.iteritems(info))) diff --git a/openstackclient/identity/v3/oauth.py b/openstackclient/identity/v3/token.py similarity index 53% rename from openstackclient/identity/v3/oauth.py rename to openstackclient/identity/v3/token.py index a97f86c714..ba667be3b3 100644 --- a/openstackclient/identity/v3/oauth.py +++ b/openstackclient/identity/v3/token.py @@ -13,11 +13,10 @@ # under the License. # -"""Identity v3 OAuth action implementations""" +"""Identity v3 Token action implementations""" import logging import six -import sys from cliff import command from cliff import lister @@ -62,8 +61,8 @@ class AuthenticateAccessToken(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauth - keystone_token = oauth_client.authenticate( + token_client = self.app.client_manager.identity.tokens + keystone_token = token_client.authenticate_access_token( parsed_args.consumer_key, parsed_args.consumer_secret, parsed_args.access_key, parsed_args.access_secret) return zip(*sorted(six.iteritems(keystone_token))) @@ -82,20 +81,14 @@ class AuthorizeRequestToken(show.ShowOne): help='Consumer key', required=True ) - parser.add_argument( - '--roles', - metavar='', - help='Role to authorize', - required=True - ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauth + token_client = self.app.client_manager.identity.tokens - verifier_pin = oauth_client.authorize_request_token( - parsed_args.request_key, parsed_args.roles) + verifier_pin = token_client.authorize_request_token( + parsed_args.request_key) info = {} info.update(verifier_pin._info) return zip(*sorted(six.iteritems(info))) @@ -142,39 +135,14 @@ class CreateAccessToken(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauth - access_token = oauth_client.create_access_token( + token_client = self.app.client_manager.identity.tokens + access_token = token_client.create_access_token( parsed_args.consumer_key, parsed_args.consumer_secret, parsed_args.request_key, parsed_args.request_secret, parsed_args.verifier) return zip(*sorted(six.iteritems(access_token))) -class CreateConsumer(show.ShowOne): - """Create consumer command""" - - log = logging.getLogger(__name__ + '.CreateConsumer') - - def get_parser(self, prog_name): - parser = super(CreateConsumer, self).get_parser(prog_name) - parser.add_argument( - 'name', - metavar='', - help='New consumer name', - ) - return parser - - def take_action(self, parsed_args): - self.log.debug('take_action(%s)' % parsed_args) - identity_client = self.app.client_manager.identity - consumer = identity_client.oauth.create_consumer( - parsed_args.name - ) - info = {} - info.update(consumer._info) - return zip(*sorted(six.iteritems(info))) - - class CreateRequestToken(show.ShowOne): """Create request token command""" @@ -195,61 +163,44 @@ class CreateRequestToken(show.ShowOne): required=True ) parser.add_argument( - '--roles', - metavar='', - help='Role requested', + '--role-ids', + metavar='', + help='Requested role IDs', + ) + parser.add_argument( + '--project-id', + metavar='', + help='Requested project ID', ) return parser def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauth - request_token = oauth_client.create_request_token( + token_client = self.app.client_manager.identity.tokens + request_token = token_client.create_request_token( parsed_args.consumer_key, parsed_args.consumer_secret, - parsed_args.roles) + parsed_args.role_ids, + parsed_args.project_id) return zip(*sorted(six.iteritems(request_token))) -class DeleteConsumer(command.Command): - """Delete consumer command""" +class DeleteAccessToken(command.Command): + """Delete access token command""" - log = logging.getLogger(__name__ + '.DeleteConsumer') + log = logging.getLogger(__name__ + '.DeleteAccessToken') def get_parser(self, prog_name): - parser = super(DeleteConsumer, self).get_parser(prog_name) - parser.add_argument( - 'consumer', - metavar='', - help='Name or ID of consumer to delete', - ) - return parser - - def take_action(self, parsed_args): - self.log.debug('take_action(%s)' % parsed_args) - identity_client = self.app.client_manager.identity - consumer = utils.find_resource( - identity_client.oauth, parsed_args.consumer) - identity_client.oauth.delete_consumer(consumer.id) - return - - -class DeleteUserAuthorization(command.Command): - """Delete user authorization command""" - - log = logging.getLogger(__name__ + '.DeleteUserAuthorization') - - def get_parser(self, prog_name): - parser = super(DeleteUserAuthorization, self).get_parser(prog_name) + parser = super(DeleteAccessToken, self).get_parser(prog_name) parser.add_argument( 'user', metavar='', help='Name or Id of user', ) parser.add_argument( - 'access_id', - metavar='', - help='Access Id to be deleted', + 'access_key', + metavar='', + help='Access Token to be deleted', ) return parser @@ -259,34 +210,18 @@ class DeleteUserAuthorization(command.Command): identity_client = self.app.client_manager.identity user = utils.find_resource( identity_client.users, parsed_args.user).id - identity_client.oauth.delete_authorization(user, - parsed_args.access_id) + identity_client.tokens.delete_access_token(user, + parsed_args.access_key) return -class ListConsumer(lister.Lister): - """List consumer command""" +class ListAccessToken(lister.Lister): + """List access tokens command""" - log = logging.getLogger(__name__ + '.ListConsumer') - - def take_action(self, parsed_args): - self.log.debug('take_action(%s)' % parsed_args) - columns = ('ID', 'Name', 'Consumer Key', 'Consumer Secret') - data = self.app.client_manager.identity.oauth.list_consumers() - return (columns, - (utils.get_item_properties( - s, columns, - formatters={}, - ) for s in data)) - - -class ListUserAuthorizations(lister.Lister): - """List user authorizations command""" - - log = logging.getLogger(__name__ + '.ListUserAuthorizations') + log = logging.getLogger(__name__ + '.ListAccessToken') def get_parser(self, prog_name): - parser = super(ListUserAuthorizations, self).get_parser(prog_name) + parser = super(ListAccessToken, self).get_parser(prog_name) parser.add_argument( 'user', metavar='', @@ -301,71 +236,11 @@ class ListUserAuthorizations(lister.Lister): user = utils.find_resource( identity_client.users, parsed_args.user).id - columns = ('Access Key', 'Consumer Key', 'Issued At', - 'Project Id', 'User Id', 'Requested Roles') - data = identity_client.oauth.list_authorizations(user) + columns = ('ID', 'Consumer ID', 'Expires At', + 'Project Id', 'Authorizing User Id') + data = identity_client.tokens.list_access_tokens(user) return (columns, (utils.get_item_properties( s, columns, formatters={}, ) for s in data)) - - -class SetConsumer(command.Command): - """Set consumer command""" - - log = logging.getLogger(__name__ + '.SetConsumer') - - def get_parser(self, prog_name): - parser = super(SetConsumer, self).get_parser(prog_name) - parser.add_argument( - 'consumer', - metavar='', - help='Name or ID of consumer to change', - ) - parser.add_argument( - '--name', - metavar='', - help='New consumer name', - ) - return parser - - def take_action(self, parsed_args): - self.log.debug('take_action(%s)' % parsed_args) - identity_client = self.app.client_manager.identity - consumer = utils.find_resource( - identity_client.oauth, parsed_args.consumer) - kwargs = {} - if parsed_args.name: - kwargs['name'] = parsed_args.name - - if not len(kwargs): - sys.stdout.write("Consumer not updated, no arguments present") - return - identity_client.oauth.update_consumer(consumer.id, **kwargs) - return - - -class ShowConsumer(show.ShowOne): - """Show consumer command""" - - log = logging.getLogger(__name__ + '.ShowConsumer') - - def get_parser(self, prog_name): - parser = super(ShowConsumer, self).get_parser(prog_name) - parser.add_argument( - 'consumer', - metavar='', - help='Name or ID of consumer to display', - ) - return parser - - def take_action(self, parsed_args): - self.log.debug('take_action(%s)' % parsed_args) - identity_client = self.app.client_manager.identity - consumer = utils.find_resource( - identity_client.oauth, parsed_args.consumer) - - info = {} - info.update(consumer._info) - return zip(*sorted(six.iteritems(info))) diff --git a/setup.cfg b/setup.cfg index 786914eb33..ebfcb9fa87 100644 --- a/setup.cfg +++ b/setup.cfg @@ -70,11 +70,16 @@ openstack.identity.v2_0 = user_show = openstackclient.identity.v2_0.user:ShowUser openstack.identity.v3 = - consumer_create = openstackclient.identity.v3.oauth:CreateConsumer - consumer_delete = openstackclient.identity.v3.oauth:DeleteConsumer - consumer_list = openstackclient.identity.v3.oauth:ListConsumer - consumer_set = openstackclient.identity.v3.oauth:SetConsumer - consumer_show = openstackclient.identity.v3.oauth:ShowConsumer + access_token_authenticate = openstackclient.identity.v3.token:AuthenticateAccessToken + access_token_create = openstackclient.identity.v3.token:CreateAccessToken + access_token_delete = openstackclient.identity.v3.token:DeleteAccessToken + access_token_list = openstackclient.identity.v3.token:ListAccessToken + + consumer_create = openstackclient.identity.v3.consumer:CreateConsumer + consumer_delete = openstackclient.identity.v3.consumer:DeleteConsumer + consumer_list = openstackclient.identity.v3.consumer:ListConsumer + consumer_set = openstackclient.identity.v3.consumer:SetConsumer + consumer_show = openstackclient.identity.v3.consumer:ShowConsumer credential_create = openstackclient.identity.v3.credential:CreateCredential credential_delete = openstackclient.identity.v3.credential:DeleteCredential @@ -103,13 +108,6 @@ openstack.identity.v3 = group_set = openstackclient.identity.v3.group:SetGroup group_show = openstackclient.identity.v3.group:ShowGroup - oauth_access_token_authenticate = openstackclient.identity.v3.oauth:AuthenticateAccessToken - oauth_access_token_create = openstackclient.identity.v3.oauth:CreateAccessToken - oauth_request_token_authorize = openstackclient.identity.v3.oauth:AuthorizeRequestToken - oauth_request_token_create = openstackclient.identity.v3.oauth:CreateRequestToken - oauth_authorization_delete = openstackclient.identity.v3.oauth:DeleteUserAuthorization - oauth_authorization_list = openstackclient.identity.v3.oauth:ListUserAuthorizations - policy_create = openstackclient.identity.v3.policy:CreatePolicy policy_delete = openstackclient.identity.v3.policy:DeletePolicy policy_list = openstackclient.identity.v3.policy:ListPolicy @@ -122,6 +120,9 @@ openstack.identity.v3 = project_set = openstackclient.identity.v3.project:SetProject project_show = openstackclient.identity.v3.project:ShowProject + request_token_authorize = openstackclient.identity.v3.token:AuthorizeRequestToken + request_token_create = openstackclient.identity.v3.token:CreateRequestToken + role_add = openstackclient.identity.v3.role:AddRole role_create = openstackclient.identity.v3.role:CreateRole role_delete = openstackclient.identity.v3.role:DeleteRole