2020
2121from cliff import show
2222
23+ from openstackclient .common import utils
24+ from openstackclient .identity import common
25+
2326
2427class AuthorizeRequestToken (show .ShowOne ):
2528 """Authorize request token"""
@@ -53,6 +56,7 @@ def take_action(self, parsed_args):
5356 verifier_pin = identity_client .oauth1 .request_tokens .authorize (
5457 parsed_args .request_key ,
5558 roles )
59+
5660 info = {}
5761 info .update (verifier_pin ._info )
5862 return zip (* sorted (six .iteritems (info )))
@@ -110,7 +114,7 @@ def take_action(self, parsed_args):
110114
111115
112116class CreateRequestToken (show .ShowOne ):
113- """Create request token"""
117+ """Create a request token"""
114118
115119 log = logging .getLogger (__name__ + '.CreateRequestToken' )
116120
@@ -119,33 +123,50 @@ def get_parser(self, prog_name):
119123 parser .add_argument (
120124 '--consumer-key' ,
121125 metavar = '<consumer-key>' ,
122- help = 'Consumer key' ,
126+ help = 'Consumer key (required) ' ,
123127 required = True
124128 )
125129 parser .add_argument (
126130 '--consumer-secret' ,
127131 metavar = '<consumer-secret>' ,
128- help = 'Consumer secret' ,
132+ help = 'Consumer secret (required) ' ,
129133 required = True
130134 )
131135 parser .add_argument (
132- '--project-id' ,
133- metavar = '<project-id>' ,
134- help = 'Requested project ID' ,
136+ '--project' ,
137+ metavar = '<project>' ,
138+ help = 'Project that consumer wants to access (name or ID)'
139+ ' (required)' ,
135140 required = True
136141 )
142+ parser .add_argument (
143+ '--domain' ,
144+ metavar = '<domain>' ,
145+ help = 'Domain owning <project> (name or ID)' ,
146+ )
137147 return parser
138148
139149 def take_action (self , parsed_args ):
140150 self .log .debug ('take_action(%s)' % parsed_args )
141- token_client = self .app .client_manager .identity .oauth1 .request_tokens
151+
152+ identity_client = self .app .client_manager .identity
153+
154+ if parsed_args .domain :
155+ domain = common .find_domain (identity_client , parsed_args .domain )
156+ project = utils .find_resource (identity_client .projects ,
157+ parsed_args .project ,
158+ domain_id = domain .id )
159+ else :
160+ project = utils .find_resource (identity_client .projects ,
161+ parsed_args .project )
162+
163+ token_client = identity_client .oauth1 .request_tokens
164+
142165 request_token = token_client .create (
143166 parsed_args .consumer_key ,
144167 parsed_args .consumer_secret ,
145- parsed_args .project_id )
146- info = {}
147- info .update (request_token ._info )
148- return zip (* sorted (six .iteritems (info )))
168+ project .id )
169+ return zip (* sorted (six .iteritems (request_token ._info )))
149170
150171
151172class IssueToken (show .ShowOne ):
0 commit comments