Skip to content

Commit 7139083

Browse files
author
Steve Martinelli
committed
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
1 parent f0d3bf8 commit 7139083

2 files changed

Lines changed: 81 additions & 27 deletions

File tree

‎openstackclient/identity/v3/oauth.py‎

Lines changed: 80 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,49 @@
2525
from openstackclient.common import utils
2626

2727

28+
class AuthenticateAccessToken(show.ShowOne):
29+
"""Authenticate access token - receive keystone token"""
30+
31+
api = 'identity'
32+
log = logging.getLogger(__name__ + '.AuthenticateAccessToken')
33+
34+
def get_parser(self, prog_name):
35+
parser = super(AuthenticateAccessToken, self).get_parser(prog_name)
36+
parser.add_argument(
37+
'--consumer-key',
38+
metavar='<consumer-key>',
39+
help='Consumer key',
40+
required=True
41+
)
42+
parser.add_argument(
43+
'--consumer-secret',
44+
metavar='<consumer-secret>',
45+
help='Consumer secret',
46+
required=True
47+
)
48+
parser.add_argument(
49+
'--access-key',
50+
metavar='<access-key>',
51+
help='Access token key',
52+
required=True
53+
)
54+
parser.add_argument(
55+
'--access-secret',
56+
metavar='<access-secret>',
57+
help='Access token secret',
58+
required=True
59+
)
60+
return parser
61+
62+
def take_action(self, parsed_args):
63+
self.log.debug('take_action(%s)' % parsed_args)
64+
oauth_client = self.app.client_manager.identity.oauth
65+
keystone_token = oauth_client.authenticate(
66+
parsed_args.consumer_key, parsed_args.consumer_secret,
67+
parsed_args.access_key, parsed_args.access_secret)
68+
return zip(*sorted(keystone_token.iteritems()))
69+
70+
2871
class AuthorizeRequestToken(show.ShowOne):
2972
"""Authorize request token command"""
3073

@@ -39,12 +82,6 @@ def get_parser(self, prog_name):
3982
help='Consumer key',
4083
required=True
4184
)
42-
parser.add_argument(
43-
'--user-token',
44-
metavar='<user-token>',
45-
help='Token of authorizing user',
46-
required=True
47-
)
4885
parser.add_argument(
4986
'--roles',
5087
metavar='<roles>',
@@ -55,11 +92,10 @@ def get_parser(self, prog_name):
5592

5693
def take_action(self, parsed_args):
5794
self.log.debug('take_action(%s)' % parsed_args)
58-
oauth_client = self.app.client_manager.identity.oauths
95+
oauth_client = self.app.client_manager.identity.oauth
5996

6097
verifier_pin = oauth_client.authorize_request_token(
61-
parsed_args.request_key, parsed_args.user_token,
62-
parsed_args.roles)
98+
parsed_args.request_key, parsed_args.roles)
6399
info = {}
64100
info.update(verifier_pin._info)
65101
return zip(*sorted(info.iteritems()))
@@ -79,10 +115,22 @@ def get_parser(self, prog_name):
79115
help='Consumer key',
80116
required=True
81117
)
118+
parser.add_argument(
119+
'--consumer-secret',
120+
metavar='<consumer-secret>',
121+
help='Consumer secret',
122+
required=True
123+
)
82124
parser.add_argument(
83125
'--request-key',
84126
metavar='<request-key>',
85-
help='Consumer key',
127+
help='Request token key',
128+
required=True
129+
)
130+
parser.add_argument(
131+
'--request-secret',
132+
metavar='<request-secret>',
133+
help='Request token secret',
86134
required=True
87135
)
88136
parser.add_argument(
@@ -95,13 +143,12 @@ def get_parser(self, prog_name):
95143

96144
def take_action(self, parsed_args):
97145
self.log.debug('take_action(%s)' % parsed_args)
98-
oauth_client = self.app.client_manager.identity.oauths
146+
oauth_client = self.app.client_manager.identity.oauth
99147
access_token = oauth_client.create_access_token(
100-
parsed_args.consumer_key, parsed_args.request_key,
148+
parsed_args.consumer_key, parsed_args.consumer_secret,
149+
parsed_args.request_key, parsed_args.request_secret,
101150
parsed_args.verifier)
102-
info = {}
103-
info.update(access_token._info)
104-
return zip(*sorted(info.iteritems()))
151+
return zip(*sorted(access_token.iteritems()))
105152

106153

107154
class CreateConsumer(show.ShowOne):
@@ -122,7 +169,7 @@ def get_parser(self, prog_name):
122169
def take_action(self, parsed_args):
123170
self.log.debug('take_action(%s)' % parsed_args)
124171
identity_client = self.app.client_manager.identity
125-
consumer = identity_client.oauths.create_consumer(
172+
consumer = identity_client.oauth.create_consumer(
126173
parsed_args.name
127174
)
128175
info = {}
@@ -144,6 +191,12 @@ def get_parser(self, prog_name):
144191
help='Consumer key',
145192
required=True
146193
)
194+
parser.add_argument(
195+
'--consumer-secret',
196+
metavar='<consumer-secret>',
197+
help='Consumer secret',
198+
required=True
199+
)
147200
parser.add_argument(
148201
'--roles',
149202
metavar='<roles>',
@@ -153,12 +206,12 @@ def get_parser(self, prog_name):
153206

154207
def take_action(self, parsed_args):
155208
self.log.debug('take_action(%s)' % parsed_args)
156-
oauth_client = self.app.client_manager.identity.oauths
209+
oauth_client = self.app.client_manager.identity.oauth
157210
request_token = oauth_client.create_request_token(
158-
parsed_args.consumer_key, parsed_args.roles)
159-
info = {}
160-
info.update(request_token._info)
161-
return zip(*sorted(info.iteritems()))
211+
parsed_args.consumer_key,
212+
parsed_args.consumer_secret,
213+
parsed_args.roles)
214+
return zip(*sorted(request_token.iteritems()))
162215

163216

164217
class DeleteConsumer(command.Command):
@@ -180,8 +233,8 @@ def take_action(self, parsed_args):
180233
self.log.debug('take_action(%s)' % parsed_args)
181234
identity_client = self.app.client_manager.identity
182235
consumer = utils.find_resource(
183-
identity_client.oauths, parsed_args.consumer)
184-
identity_client.oauths.delete_consumer(consumer.id)
236+
identity_client.oauth, parsed_args.consumer)
237+
identity_client.oauth.delete_consumer(consumer.id)
185238
return
186239

187240

@@ -194,7 +247,7 @@ class ListConsumer(lister.Lister):
194247
def take_action(self, parsed_args):
195248
self.log.debug('take_action(%s)' % parsed_args)
196249
columns = ('ID', 'Name', 'Consumer Key', 'Consumer Secret')
197-
data = self.app.client_manager.identity.oauths.list_consumers()
250+
data = self.app.client_manager.identity.oauth.list_consumers()
198251
return (columns,
199252
(utils.get_item_properties(
200253
s, columns,
@@ -226,15 +279,15 @@ def take_action(self, parsed_args):
226279
self.log.debug('take_action(%s)' % parsed_args)
227280
identity_client = self.app.client_manager.identity
228281
consumer = utils.find_resource(
229-
identity_client.oauths, parsed_args.consumer)
282+
identity_client.oauth, parsed_args.consumer)
230283
kwargs = {}
231284
if parsed_args.name:
232285
kwargs['name'] = parsed_args.name
233286

234287
if not len(kwargs):
235288
sys.stdout.write("Consumer not updated, no arguments present")
236289
return
237-
identity_client.oauths.update_consumer(consumer.id, **kwargs)
290+
identity_client.oauth.update_consumer(consumer.id, **kwargs)
238291
return
239292

240293

@@ -257,7 +310,7 @@ def take_action(self, parsed_args):
257310
self.log.debug('take_action(%s)' % parsed_args)
258311
identity_client = self.app.client_manager.identity
259312
consumer = utils.find_resource(
260-
identity_client.oauths, parsed_args.consumer)
313+
identity_client.oauth, parsed_args.consumer)
261314

262315
info = {}
263316
info.update(consumer._info)

‎setup.cfg‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ openstack.identity.v2_0 =
6969
user_show = openstackclient.identity.v2_0.user:ShowUser
7070

7171
openstack.identity.v3 =
72+
access_token_authenticate = openstackclient.identity.v3.oauth:AuthenticateAccessToken
7273
access_token_create = openstackclient.identity.v3.oauth:CreateAccessToken
7374

7475
consumer_create = openstackclient.identity.v3.oauth:CreateConsumer

0 commit comments

Comments
 (0)