Re-order oauth commands and sync with keystoneclient

1) split out token and consumer
2) sync parameters with keystoneclient

Change-Id: I2d529f0f9087f9939101e963af3d801497fc1171
This commit is contained in:
Steve Martinelli 2013-08-21 13:13:45 -05:00
parent 93612bbf53
commit 880323e91d
3 changed files with 206 additions and 173 deletions

View File

@ -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='<consumer-description>',
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='<consumer>',
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='<consumer>',
help='ID of consumer to change',
)
parser.add_argument(
'--description',
metavar='<new-consumer-description>',
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='<consumer>',
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)))

View File

@ -13,11 +13,10 @@
# under the License. # under the License.
# #
"""Identity v3 OAuth action implementations""" """Identity v3 Token action implementations"""
import logging import logging
import six import six
import sys
from cliff import command from cliff import command
from cliff import lister from cliff import lister
@ -62,8 +61,8 @@ class AuthenticateAccessToken(show.ShowOne):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % 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
keystone_token = oauth_client.authenticate( keystone_token = token_client.authenticate_access_token(
parsed_args.consumer_key, parsed_args.consumer_secret, parsed_args.consumer_key, parsed_args.consumer_secret,
parsed_args.access_key, parsed_args.access_secret) parsed_args.access_key, parsed_args.access_secret)
return zip(*sorted(six.iteritems(keystone_token))) return zip(*sorted(six.iteritems(keystone_token)))
@ -82,20 +81,14 @@ class AuthorizeRequestToken(show.ShowOne):
help='Consumer key', help='Consumer key',
required=True required=True
) )
parser.add_argument(
'--roles',
metavar='<roles>',
help='Role to authorize',
required=True
)
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % 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( verifier_pin = token_client.authorize_request_token(
parsed_args.request_key, parsed_args.roles) parsed_args.request_key)
info = {} info = {}
info.update(verifier_pin._info) info.update(verifier_pin._info)
return zip(*sorted(six.iteritems(info))) return zip(*sorted(six.iteritems(info)))
@ -142,39 +135,14 @@ class CreateAccessToken(show.ShowOne):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % 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
access_token = oauth_client.create_access_token( access_token = token_client.create_access_token(
parsed_args.consumer_key, parsed_args.consumer_secret, parsed_args.consumer_key, parsed_args.consumer_secret,
parsed_args.request_key, parsed_args.request_secret, parsed_args.request_key, parsed_args.request_secret,
parsed_args.verifier) parsed_args.verifier)
return zip(*sorted(six.iteritems(access_token))) 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='<consumer-name>',
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): class CreateRequestToken(show.ShowOne):
"""Create request token command""" """Create request token command"""
@ -195,61 +163,44 @@ class CreateRequestToken(show.ShowOne):
required=True required=True
) )
parser.add_argument( parser.add_argument(
'--roles', '--role-ids',
metavar='<roles>', metavar='<role-ids>',
help='Role requested', help='Requested role IDs',
)
parser.add_argument(
'--project-id',
metavar='<project-id>',
help='Requested project ID',
) )
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % 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
request_token = oauth_client.create_request_token( request_token = token_client.create_request_token(
parsed_args.consumer_key, parsed_args.consumer_key,
parsed_args.consumer_secret, parsed_args.consumer_secret,
parsed_args.roles) parsed_args.role_ids,
parsed_args.project_id)
return zip(*sorted(six.iteritems(request_token))) return zip(*sorted(six.iteritems(request_token)))
class DeleteConsumer(command.Command): class DeleteAccessToken(command.Command):
"""Delete consumer command""" """Delete access token command"""
log = logging.getLogger(__name__ + '.DeleteConsumer') log = logging.getLogger(__name__ + '.DeleteAccessToken')
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super(DeleteConsumer, self).get_parser(prog_name) parser = super(DeleteAccessToken, self).get_parser(prog_name)
parser.add_argument(
'consumer',
metavar='<consumer>',
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.add_argument( parser.add_argument(
'user', 'user',
metavar='<user>', metavar='<user>',
help='Name or Id of user', help='Name or Id of user',
) )
parser.add_argument( parser.add_argument(
'access_id', 'access_key',
metavar='<access-id>', metavar='<access-key>',
help='Access Id to be deleted', help='Access Token to be deleted',
) )
return parser return parser
@ -259,34 +210,18 @@ class DeleteUserAuthorization(command.Command):
identity_client = self.app.client_manager.identity identity_client = self.app.client_manager.identity
user = utils.find_resource( user = utils.find_resource(
identity_client.users, parsed_args.user).id identity_client.users, parsed_args.user).id
identity_client.oauth.delete_authorization(user, identity_client.tokens.delete_access_token(user,
parsed_args.access_id) parsed_args.access_key)
return return
class ListConsumer(lister.Lister): class ListAccessToken(lister.Lister):
"""List consumer command""" """List access tokens command"""
log = logging.getLogger(__name__ + '.ListConsumer') log = logging.getLogger(__name__ + '.ListAccessToken')
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')
def get_parser(self, prog_name): 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( parser.add_argument(
'user', 'user',
metavar='<user>', metavar='<user>',
@ -301,71 +236,11 @@ class ListUserAuthorizations(lister.Lister):
user = utils.find_resource( user = utils.find_resource(
identity_client.users, parsed_args.user).id identity_client.users, parsed_args.user).id
columns = ('Access Key', 'Consumer Key', 'Issued At', columns = ('ID', 'Consumer ID', 'Expires At',
'Project Id', 'User Id', 'Requested Roles') 'Project Id', 'Authorizing User Id')
data = identity_client.oauth.list_authorizations(user) data = identity_client.tokens.list_access_tokens(user)
return (columns, return (columns,
(utils.get_item_properties( (utils.get_item_properties(
s, columns, s, columns,
formatters={}, formatters={},
) for s in data)) ) 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='<consumer>',
help='Name or ID of consumer to change',
)
parser.add_argument(
'--name',
metavar='<new-consumer-name>',
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='<consumer>',
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)))

View File

@ -70,11 +70,16 @@ openstack.identity.v2_0 =
user_show = openstackclient.identity.v2_0.user:ShowUser user_show = openstackclient.identity.v2_0.user:ShowUser
openstack.identity.v3 = openstack.identity.v3 =
consumer_create = openstackclient.identity.v3.oauth:CreateConsumer access_token_authenticate = openstackclient.identity.v3.token:AuthenticateAccessToken
consumer_delete = openstackclient.identity.v3.oauth:DeleteConsumer access_token_create = openstackclient.identity.v3.token:CreateAccessToken
consumer_list = openstackclient.identity.v3.oauth:ListConsumer access_token_delete = openstackclient.identity.v3.token:DeleteAccessToken
consumer_set = openstackclient.identity.v3.oauth:SetConsumer access_token_list = openstackclient.identity.v3.token:ListAccessToken
consumer_show = openstackclient.identity.v3.oauth:ShowConsumer
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_create = openstackclient.identity.v3.credential:CreateCredential
credential_delete = openstackclient.identity.v3.credential:DeleteCredential credential_delete = openstackclient.identity.v3.credential:DeleteCredential
@ -103,13 +108,6 @@ openstack.identity.v3 =
group_set = openstackclient.identity.v3.group:SetGroup group_set = openstackclient.identity.v3.group:SetGroup
group_show = openstackclient.identity.v3.group:ShowGroup 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_create = openstackclient.identity.v3.policy:CreatePolicy
policy_delete = openstackclient.identity.v3.policy:DeletePolicy policy_delete = openstackclient.identity.v3.policy:DeletePolicy
policy_list = openstackclient.identity.v3.policy:ListPolicy policy_list = openstackclient.identity.v3.policy:ListPolicy
@ -122,6 +120,9 @@ openstack.identity.v3 =
project_set = openstackclient.identity.v3.project:SetProject project_set = openstackclient.identity.v3.project:SetProject
project_show = openstackclient.identity.v3.project:ShowProject 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_add = openstackclient.identity.v3.role:AddRole
role_create = openstackclient.identity.v3.role:CreateRole role_create = openstackclient.identity.v3.role:CreateRole
role_delete = openstackclient.identity.v3.role:DeleteRole role_delete = openstackclient.identity.v3.role:DeleteRole