summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-18 09:44:48 +0000
committerGerrit Code Review <review@openstack.org>2014-09-18 09:44:48 +0000
commit873ece1cf72d51764443396aeac8b0967264a33f (patch)
treef478e9d0ada2f7548dee07755ebf0d81bdafc3d4 /openstackclient
parentdf69d3264ff3edd0ec0e1c742d26b46d8dc2285b (diff)
parent845de41635d7fefa1ae337f88a26ba11283a6552 (diff)
downloadpython-openstackclient-873ece1cf72d51764443396aeac8b0967264a33f.tar.gz
Merge "Return current user/project for user/project show commands"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/identity/v2_0/project.py28
-rw-r--r--openstackclient/identity/v2_0/user.py42
2 files changed, 53 insertions, 17 deletions
diff --git a/openstackclient/identity/v2_0/project.py b/openstackclient/identity/v2_0/project.py
index 7e19d5ae..ebd65df7 100644
--- a/openstackclient/identity/v2_0/project.py
+++ b/openstackclient/identity/v2_0/project.py
@@ -22,6 +22,7 @@ from cliff import command
from cliff import lister
from cliff import show
+from keystoneclient.openstack.common.apiclient import exceptions as ksc_exc
from openstackclient.common import parseractions
from openstackclient.common import utils
@@ -238,11 +239,28 @@ class ShowProject(show.ShowOne):
def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- project = utils.find_resource(
- identity_client.tenants,
- parsed_args.project,
- )
info = {}
- info.update(project._info)
+ try:
+ project = utils.find_resource(
+ identity_client.tenants,
+ parsed_args.project,
+ )
+ info.update(project._info)
+ except ksc_exc.Forbidden as e:
+ auth_ref = self.app.client_manager.auth_ref
+ if (
+ parsed_args.project == auth_ref.project_id or
+ parsed_args.project == auth_ref.project_name
+ ):
+ # Ask for currently auth'ed project so return it
+ info = {
+ 'id': auth_ref.project_id,
+ 'name': auth_ref.project_name,
+ # True because we don't get this far if it is disabled
+ 'enabled': True,
+ }
+ else:
+ raise e
+
return zip(*sorted(six.iteritems(info)))
diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py
index b291c882..93ab94fe 100644
--- a/openstackclient/identity/v2_0/user.py
+++ b/openstackclient/identity/v2_0/user.py
@@ -22,6 +22,7 @@ from cliff import command
from cliff import lister
from cliff import show
+from keystoneclient.openstack.common.apiclient import exceptions as ksc_exc
from openstackclient.common import utils
@@ -347,20 +348,37 @@ class ShowUser(show.ShowOne):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- user = utils.find_resource(
- identity_client.users,
- parsed_args.user,
- )
+ info = {}
+ try:
+ user = utils.find_resource(
+ identity_client.users,
+ parsed_args.user,
+ )
+ info.update(user._info)
+ except ksc_exc.Forbidden as e:
+ auth_ref = self.app.client_manager.auth_ref
+ if (
+ parsed_args.user == auth_ref.user_id or
+ parsed_args.user == auth_ref.username
+ ):
+ # Ask for currently auth'ed project so return it
+ info = {
+ 'id': auth_ref.user_id,
+ 'name': auth_ref.username,
+ 'project_id': auth_ref.project_id,
+ # True because we don't get this far if it is disabled
+ 'enabled': True,
+ }
+ else:
+ raise e
- if 'tenantId' in user._info:
- user._info.update(
- {'project_id': user._info.pop('tenantId')}
+ if 'tenantId' in info:
+ info.update(
+ {'project_id': info.pop('tenantId')}
)
- if 'tenant_id' in user._info:
- user._info.update(
- {'project_id': user._info.pop('tenant_id')}
+ if 'tenant_id' in info:
+ info.update(
+ {'project_id': info.pop('tenant_id')}
)
- info = {}
- info.update(user._info)
return zip(*sorted(six.iteritems(info)))