From 713908385a183cada8c9e77bb74c2ca381a38660 Mon Sep 17 00:00:00 2001 From: Steve Martinelli <stevemar@ca.ibm.com> Date: Wed, 3 Jul 2013 15:26:33 -0500 Subject: [PATCH] Add authenticate method to oauth code Forgot to add one last method when I initially checked in the first set of code; the authenticate method will return an actual keystone token that the user may now use. Also, I added some changes to other methods because the client has been updated. Change-Id: Ie2707689e0df1fb1bc92177f932baf23fe1ca920 --- openstackclient/identity/v3/oauth.py | 107 ++++++++++++++++++++------- setup.cfg | 1 + 2 files changed, 81 insertions(+), 27 deletions(-) diff --git a/openstackclient/identity/v3/oauth.py b/openstackclient/identity/v3/oauth.py index 0b5ae4dba7..d3345f0021 100644 --- a/openstackclient/identity/v3/oauth.py +++ b/openstackclient/identity/v3/oauth.py @@ -25,6 +25,49 @@ from cliff import show from openstackclient.common import utils +class AuthenticateAccessToken(show.ShowOne): + """Authenticate access token - receive keystone token""" + + api = 'identity' + log = logging.getLogger(__name__ + '.AuthenticateAccessToken') + + def get_parser(self, prog_name): + parser = super(AuthenticateAccessToken, self).get_parser(prog_name) + parser.add_argument( + '--consumer-key', + metavar='<consumer-key>', + help='Consumer key', + required=True + ) + parser.add_argument( + '--consumer-secret', + metavar='<consumer-secret>', + help='Consumer secret', + required=True + ) + parser.add_argument( + '--access-key', + metavar='<access-key>', + help='Access token key', + required=True + ) + parser.add_argument( + '--access-secret', + metavar='<access-secret>', + help='Access token secret', + 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 + keystone_token = oauth_client.authenticate( + parsed_args.consumer_key, parsed_args.consumer_secret, + parsed_args.access_key, parsed_args.access_secret) + return zip(*sorted(keystone_token.iteritems())) + + class AuthorizeRequestToken(show.ShowOne): """Authorize request token command""" @@ -39,12 +82,6 @@ class AuthorizeRequestToken(show.ShowOne): help='Consumer key', required=True ) - parser.add_argument( - '--user-token', - metavar='<user-token>', - help='Token of authorizing user', - required=True - ) parser.add_argument( '--roles', metavar='<roles>', @@ -55,11 +92,10 @@ class AuthorizeRequestToken(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauths + oauth_client = self.app.client_manager.identity.oauth verifier_pin = oauth_client.authorize_request_token( - parsed_args.request_key, parsed_args.user_token, - parsed_args.roles) + parsed_args.request_key, parsed_args.roles) info = {} info.update(verifier_pin._info) return zip(*sorted(info.iteritems())) @@ -79,10 +115,22 @@ class CreateAccessToken(show.ShowOne): help='Consumer key', required=True ) + parser.add_argument( + '--consumer-secret', + metavar='<consumer-secret>', + help='Consumer secret', + required=True + ) parser.add_argument( '--request-key', metavar='<request-key>', - help='Consumer key', + help='Request token key', + required=True + ) + parser.add_argument( + '--request-secret', + metavar='<request-secret>', + help='Request token secret', required=True ) parser.add_argument( @@ -95,13 +143,12 @@ 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.oauths + oauth_client = self.app.client_manager.identity.oauth access_token = oauth_client.create_access_token( - parsed_args.consumer_key, parsed_args.request_key, + parsed_args.consumer_key, parsed_args.consumer_secret, + parsed_args.request_key, parsed_args.request_secret, parsed_args.verifier) - info = {} - info.update(access_token._info) - return zip(*sorted(info.iteritems())) + return zip(*sorted(access_token.iteritems())) class CreateConsumer(show.ShowOne): @@ -122,7 +169,7 @@ class CreateConsumer(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity - consumer = identity_client.oauths.create_consumer( + consumer = identity_client.oauth.create_consumer( parsed_args.name ) info = {} @@ -144,6 +191,12 @@ class CreateRequestToken(show.ShowOne): help='Consumer key', required=True ) + parser.add_argument( + '--consumer-secret', + metavar='<consumer-secret>', + help='Consumer secret', + required=True + ) parser.add_argument( '--roles', metavar='<roles>', @@ -153,12 +206,12 @@ class CreateRequestToken(show.ShowOne): def take_action(self, parsed_args): self.log.debug('take_action(%s)' % parsed_args) - oauth_client = self.app.client_manager.identity.oauths + oauth_client = self.app.client_manager.identity.oauth request_token = oauth_client.create_request_token( - parsed_args.consumer_key, parsed_args.roles) - info = {} - info.update(request_token._info) - return zip(*sorted(info.iteritems())) + parsed_args.consumer_key, + parsed_args.consumer_secret, + parsed_args.roles) + return zip(*sorted(request_token.iteritems())) class DeleteConsumer(command.Command): @@ -180,8 +233,8 @@ class DeleteConsumer(command.Command): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity consumer = utils.find_resource( - identity_client.oauths, parsed_args.consumer) - identity_client.oauths.delete_consumer(consumer.id) + identity_client.oauth, parsed_args.consumer) + identity_client.oauth.delete_consumer(consumer.id) return @@ -194,7 +247,7 @@ class ListConsumer(lister.Lister): 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.oauths.list_consumers() + data = self.app.client_manager.identity.oauth.list_consumers() return (columns, (utils.get_item_properties( s, columns, @@ -226,7 +279,7 @@ class SetConsumer(command.Command): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity consumer = utils.find_resource( - identity_client.oauths, parsed_args.consumer) + identity_client.oauth, parsed_args.consumer) kwargs = {} if parsed_args.name: kwargs['name'] = parsed_args.name @@ -234,7 +287,7 @@ class SetConsumer(command.Command): if not len(kwargs): sys.stdout.write("Consumer not updated, no arguments present") return - identity_client.oauths.update_consumer(consumer.id, **kwargs) + identity_client.oauth.update_consumer(consumer.id, **kwargs) return @@ -257,7 +310,7 @@ class ShowConsumer(show.ShowOne): self.log.debug('take_action(%s)' % parsed_args) identity_client = self.app.client_manager.identity consumer = utils.find_resource( - identity_client.oauths, parsed_args.consumer) + identity_client.oauth, parsed_args.consumer) info = {} info.update(consumer._info) diff --git a/setup.cfg b/setup.cfg index 2068a92a5a..2aae47df48 100644 --- a/setup.cfg +++ b/setup.cfg @@ -69,6 +69,7 @@ openstack.identity.v2_0 = user_show = openstackclient.identity.v2_0.user:ShowUser openstack.identity.v3 = + access_token_authenticate = openstackclient.identity.v3.oauth:AuthenticateAccessToken access_token_create = openstackclient.identity.v3.oauth:CreateAccessToken consumer_create = openstackclient.identity.v3.oauth:CreateConsumer