summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/client.py10
-rw-r--r--openstackclient/identity/common.py38
-rw-r--r--openstackclient/identity/v2_0/catalog.py33
-rw-r--r--openstackclient/identity/v2_0/ec2creds.py4
-rw-r--r--openstackclient/identity/v2_0/endpoint.py8
-rw-r--r--openstackclient/identity/v2_0/project.py9
-rw-r--r--openstackclient/identity/v2_0/role.py30
-rw-r--r--openstackclient/identity/v2_0/service.py7
-rw-r--r--openstackclient/identity/v2_0/token.py21
-rw-r--r--openstackclient/identity/v2_0/user.py7
-rw-r--r--openstackclient/identity/v3/catalog.py33
-rw-r--r--openstackclient/identity/v3/consumer.py7
-rw-r--r--openstackclient/identity/v3/credential.py4
-rw-r--r--openstackclient/identity/v3/domain.py6
-rw-r--r--openstackclient/identity/v3/ec2creds.py4
-rw-r--r--openstackclient/identity/v3/endpoint.py15
-rw-r--r--openstackclient/identity/v3/federation_protocol.py4
-rw-r--r--openstackclient/identity/v3/group.py6
-rw-r--r--openstackclient/identity/v3/identity_provider.py4
-rw-r--r--openstackclient/identity/v3/mapping.py6
-rw-r--r--openstackclient/identity/v3/policy.py7
-rw-r--r--openstackclient/identity/v3/project.py9
-rw-r--r--openstackclient/identity/v3/region.py4
-rw-r--r--openstackclient/identity/v3/role.py6
-rw-r--r--openstackclient/identity/v3/role_assignment.py5
-rw-r--r--openstackclient/identity/v3/service.py7
-rw-r--r--openstackclient/identity/v3/service_provider.py7
-rw-r--r--openstackclient/identity/v3/token.py26
-rw-r--r--openstackclient/identity/v3/trust.py5
-rw-r--r--openstackclient/identity/v3/unscoped_saml.py7
-rw-r--r--openstackclient/identity/v3/user.py6
31 files changed, 190 insertions, 155 deletions
diff --git a/openstackclient/identity/client.py b/openstackclient/identity/client.py
index c166e66a..be7b643f 100644
--- a/openstackclient/identity/client.py
+++ b/openstackclient/identity/client.py
@@ -16,8 +16,10 @@
import logging
from keystoneclient.v2_0 import client as identity_client_v2
+from osc_lib import utils
+
from openstackclient.api import auth
-from openstackclient.common import utils
+from openstackclient.i18n import _
LOG = logging.getLogger(__name__)
@@ -64,9 +66,9 @@ def build_option_parser(parser):
'--os-identity-api-version',
metavar='<identity-api-version>',
default=utils.env('OS_IDENTITY_API_VERSION'),
- help='Identity API version, default=' +
- DEFAULT_API_VERSION +
- ' (Env: OS_IDENTITY_API_VERSION)')
+ help=_('Identity API version, default=%s '
+ '(Env: OS_IDENTITY_API_VERSION)') % DEFAULT_API_VERSION,
+ )
return auth.build_auth_plugins_option_parser(parser)
diff --git a/openstackclient/identity/common.py b/openstackclient/identity/common.py
index 2afa41fb..cd767d2f 100644
--- a/openstackclient/identity/common.py
+++ b/openstackclient/identity/common.py
@@ -20,9 +20,10 @@ from keystoneclient.v3 import domains
from keystoneclient.v3 import groups
from keystoneclient.v3 import projects
from keystoneclient.v3 import users
+from osc_lib import exceptions
+from osc_lib import utils
-from openstackclient.common import exceptions
-from openstackclient.common import utils
+from openstackclient.i18n import _
def find_service(identity_client, name_type_or_id):
@@ -38,14 +39,12 @@ def find_service(identity_client, name_type_or_id):
# FIXME(dtroyer): This exception should eventually come from
# common client exceptions
except identity_exc.NotFound:
- msg = ("No service with a type, name or ID of '%s' exists."
- % name_type_or_id)
- raise exceptions.CommandError(msg)
+ msg = _("No service with a type, name or ID of '%s' exists.")
+ raise exceptions.CommandError(msg % name_type_or_id)
except identity_exc.NoUniqueMatch:
- msg = ("Multiple service matches found for '%s', "
- "use an ID to be more specific."
- % name_type_or_id)
- raise exceptions.CommandError(msg)
+ msg = _("Multiple service matches found for '%s', "
+ "use an ID to be more specific.")
+ raise exceptions.CommandError(msg % name_type_or_id)
def _get_domain_id_if_requested(identity_client, domain_name_or_id):
@@ -132,9 +131,9 @@ def add_user_domain_option_to_parser(parser):
parser.add_argument(
'--user-domain',
metavar='<user-domain>',
- help=('Domain the user belongs to (name or ID). '
- 'This can be used in case collisions between user names '
- 'exist.')
+ help=_('Domain the user belongs to (name or ID). '
+ 'This can be used in case collisions between user names '
+ 'exist.'),
)
@@ -142,9 +141,9 @@ def add_group_domain_option_to_parser(parser):
parser.add_argument(
'--group-domain',
metavar='<group-domain>',
- help=('Domain the group belongs to (name or ID). '
- 'This can be used in case collisions between group names '
- 'exist.')
+ help=_('Domain the group belongs to (name or ID). '
+ 'This can be used in case collisions between group names '
+ 'exist.'),
)
@@ -152,9 +151,9 @@ def add_project_domain_option_to_parser(parser):
parser.add_argument(
'--project-domain',
metavar='<project-domain>',
- help=('Domain the project belongs to (name or ID). '
- 'This can be used in case collisions between project names '
- 'exist.')
+ help=_('Domain the project belongs to (name or ID). '
+ 'This can be used in case collisions between project names '
+ 'exist.'),
)
@@ -163,5 +162,6 @@ def add_inherited_option_to_parser(parser):
'--inherited',
action='store_true',
default=False,
- help=('Specifies if the role grant is inheritable to the sub projects')
+ help=_('Specifies if the role grant is inheritable to the sub '
+ 'projects'),
)
diff --git a/openstackclient/identity/v2_0/catalog.py b/openstackclient/identity/v2_0/catalog.py
index c8f48cb6..62e6b1f9 100644
--- a/openstackclient/identity/v2_0/catalog.py
+++ b/openstackclient/identity/v2_0/catalog.py
@@ -13,10 +13,11 @@
"""Identity v2 Service Catalog action implementations"""
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
@@ -41,13 +42,14 @@ class ListCatalog(command.Lister):
def take_action(self, parsed_args):
- # This is ugly because if auth hasn't happened yet we need
- # to trigger it here.
- sc = self.app.client_manager.session.auth.get_auth_ref(
- self.app.client_manager.session,
- ).service_catalog
+ # Trigger auth if it has not happened yet
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
+ raise exceptions.AuthorizationFailure(
+ "Only an authorized user may issue a new token."
+ )
- data = sc.get_data()
+ data = auth_ref.service_catalog.catalog
columns = ('Name', 'Type', 'Endpoints')
return (columns,
(utils.get_dict_properties(
@@ -72,14 +74,15 @@ class ShowCatalog(command.ShowOne):
def take_action(self, parsed_args):
- # This is ugly because if auth hasn't happened yet we need
- # to trigger it here.
- sc = self.app.client_manager.session.auth.get_auth_ref(
- self.app.client_manager.session,
- ).service_catalog
+ # Trigger auth if it has not happened yet
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
+ raise exceptions.AuthorizationFailure(
+ "Only an authorized user may issue a new token."
+ )
data = None
- for service in sc.get_data():
+ for service in auth_ref.service_catalog.catalog:
if (service.get('name') == parsed_args.service or
service.get('type') == parsed_args.service):
data = service
@@ -91,6 +94,6 @@ class ShowCatalog(command.ShowOne):
if not data:
self.app.log.error(_('service %s not found\n') %
parsed_args.service)
- return ([], [])
+ return ((), ())
return zip(*sorted(six.iteritems(data)))
diff --git a/openstackclient/identity/v2_0/ec2creds.py b/openstackclient/identity/v2_0/ec2creds.py
index dfd67591..78f65824 100644
--- a/openstackclient/identity/v2_0/ec2creds.py
+++ b/openstackclient/identity/v2_0/ec2creds.py
@@ -16,10 +16,10 @@
"""Identity v2 EC2 Credentials action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v2_0/endpoint.py b/openstackclient/identity/v2_0/endpoint.py
index 09ea738f..ee2bab6f 100644
--- a/openstackclient/identity/v2_0/endpoint.py
+++ b/openstackclient/identity/v2_0/endpoint.py
@@ -15,10 +15,10 @@
"""Endpoint action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
@@ -31,7 +31,7 @@ class CreateEndpoint(command.ShowOne):
parser.add_argument(
'service',
metavar='<service>',
- help=_('New endpoint service (name or ID)'),
+ help=_('Service to be associated with new endpoint (name or ID)'),
)
parser.add_argument(
'--publicurl',
@@ -81,7 +81,7 @@ class DeleteEndpoint(command.Command):
parser.add_argument(
'endpoint',
metavar='<endpoint-id>',
- help=_('Endpoint ID to delete'),
+ help=_('Endpoint to delete (ID only)'),
)
return parser
diff --git a/openstackclient/identity/v2_0/project.py b/openstackclient/identity/v2_0/project.py
index 80f88d73..8be482fe 100644
--- a/openstackclient/identity/v2_0/project.py
+++ b/openstackclient/identity/v2_0/project.py
@@ -15,13 +15,12 @@
"""Identity v2 Project action implementations"""
-import six
-
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.cli import parseractions
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import parseractions
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v2_0/role.py b/openstackclient/identity/v2_0/role.py
index 6b014d86..4c3fe6e2 100644
--- a/openstackclient/identity/v2_0/role.py
+++ b/openstackclient/identity/v2_0/role.py
@@ -15,13 +15,12 @@
"""Identity v2 Role action implementations"""
-import six
-
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import exceptions
-from openstackclient.common import utils
from openstackclient.i18n import _
@@ -231,18 +230,19 @@ class ListUserRole(command.Lister):
# Project and user are required, if not included in command args
# default to the values used for authentication. For token-flow
# authentication they must be included on the command line.
+ if (not parsed_args.project and
+ self.app.client_manager.auth_ref.project_id):
+ parsed_args.project = auth_ref.project_id
if not parsed_args.project:
- if self.app.client_manager.auth_ref:
- parsed_args.project = auth_ref.project_id
- else:
- msg = _("Project must be specified")
- raise exceptions.CommandError(msg)
+ msg = _("Project must be specified")
+ raise exceptions.CommandError(msg)
+
+ if (not parsed_args.user and
+ self.app.client_manager.auth_ref.user_id):
+ parsed_args.user = auth_ref.user_id
if not parsed_args.user:
- if self.app.client_manager.auth_ref:
- parsed_args.user = auth_ref.user_id
- else:
- msg = _("User must be specified")
- raise exceptions.CommandError(msg)
+ msg = _("User must be specified")
+ raise exceptions.CommandError(msg)
project = utils.find_resource(
identity_client.tenants,
diff --git a/openstackclient/identity/v2_0/service.py b/openstackclient/identity/v2_0/service.py
index 7fe66d91..947f361c 100644
--- a/openstackclient/identity/v2_0/service.py
+++ b/openstackclient/identity/v2_0/service.py
@@ -16,11 +16,12 @@
"""Service action implementations"""
import argparse
+
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import exceptions
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v2_0/token.py b/openstackclient/identity/v2_0/token.py
index f435d7ce..56f920f3 100644
--- a/openstackclient/identity/v2_0/token.py
+++ b/openstackclient/identity/v2_0/token.py
@@ -15,9 +15,10 @@
"""Identity v2 Token action implementations"""
+from osc_lib.command import command
+from osc_lib import exceptions
import six
-from openstackclient.common import command
from openstackclient.i18n import _
@@ -32,11 +33,21 @@ class IssueToken(command.ShowOne):
return parser
def take_action(self, parsed_args):
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
+ raise exceptions.AuthorizationFailure(
+ "Only an authorized user may issue a new token.")
- token = self.app.client_manager.auth_ref.service_catalog.get_token()
- if 'tenant_id' in token:
- token['project_id'] = token.pop('tenant_id')
- return zip(*sorted(six.iteritems(token)))
+ data = {}
+ if auth_ref.auth_token:
+ data['id'] = auth_ref.auth_token
+ if auth_ref.expires:
+ data['expires'] = auth_ref.expires
+ if auth_ref.project_id:
+ data['project_id'] = auth_ref.project_id
+ if auth_ref.user_id:
+ data['user_id'] = auth_ref.user_id
+ return zip(*sorted(six.iteritems(data)))
class RevokeToken(command.Command):
diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py
index f8f5df29..7777bab8 100644
--- a/openstackclient/identity/v2_0/user.py
+++ b/openstackclient/identity/v2_0/user.py
@@ -15,12 +15,11 @@
"""Identity v2.0 User action implementations"""
-import six
-
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/catalog.py b/openstackclient/identity/v3/catalog.py
index 4c794692..a6e141c9 100644
--- a/openstackclient/identity/v3/catalog.py
+++ b/openstackclient/identity/v3/catalog.py
@@ -13,10 +13,11 @@
"""Identity v3 Service Catalog action implementations"""
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
@@ -36,13 +37,14 @@ class ListCatalog(command.Lister):
def take_action(self, parsed_args):
- # This is ugly because if auth hasn't happened yet we need
- # to trigger it here.
- sc = self.app.client_manager.session.auth.get_auth_ref(
- self.app.client_manager.session,
- ).service_catalog
+ # Trigger auth if it has not happened yet
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
+ raise exceptions.AuthorizationFailure(
+ "Only an authorized user may issue a new token."
+ )
- data = sc.get_data()
+ data = auth_ref.service_catalog.catalog
columns = ('Name', 'Type', 'Endpoints')
return (columns,
(utils.get_dict_properties(
@@ -67,14 +69,15 @@ class ShowCatalog(command.ShowOne):
def take_action(self, parsed_args):
- # This is ugly because if auth hasn't happened yet we need
- # to trigger it here.
- sc = self.app.client_manager.session.auth.get_auth_ref(
- self.app.client_manager.session,
- ).service_catalog
+ # Trigger auth if it has not happened yet
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
+ raise exceptions.AuthorizationFailure(
+ "Only an authorized user may issue a new token."
+ )
data = None
- for service in sc.get_data():
+ for service in auth_ref.service_catalog.catalog:
if (service.get('name') == parsed_args.service or
service.get('type') == parsed_args.service):
data = dict(service)
@@ -86,6 +89,6 @@ class ShowCatalog(command.ShowOne):
if not data:
self.app.log.error(_('service %s not found\n') %
parsed_args.service)
- return ([], [])
+ return ((), ())
return zip(*sorted(six.iteritems(data)))
diff --git a/openstackclient/identity/v3/consumer.py b/openstackclient/identity/v3/consumer.py
index a062b743..a4620bf9 100644
--- a/openstackclient/identity/v3/consumer.py
+++ b/openstackclient/identity/v3/consumer.py
@@ -15,11 +15,12 @@
"""Identity v3 Consumer action implementations"""
-import six
import sys
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+import six
+
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/credential.py b/openstackclient/identity/v3/credential.py
index 99013478..eeeddfa5 100644
--- a/openstackclient/identity/v3/credential.py
+++ b/openstackclient/identity/v3/credential.py
@@ -15,10 +15,10 @@
"""Identity v3 Credential action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/domain.py b/openstackclient/identity/v3/domain.py
index c345028f..8eb7bc91 100644
--- a/openstackclient/identity/v3/domain.py
+++ b/openstackclient/identity/v3/domain.py
@@ -15,13 +15,13 @@
"""Identity v3 Domain action implementations"""
-import six
import sys
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/ec2creds.py b/openstackclient/identity/v3/ec2creds.py
index 859ec2a7..835fe96f 100644
--- a/openstackclient/identity/v3/ec2creds.py
+++ b/openstackclient/identity/v3/ec2creds.py
@@ -12,10 +12,10 @@
"""Identity v3 EC2 Credentials action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/endpoint.py b/openstackclient/identity/v3/endpoint.py
index 39022d27..2f1cc9f3 100644
--- a/openstackclient/identity/v3/endpoint.py
+++ b/openstackclient/identity/v3/endpoint.py
@@ -15,11 +15,12 @@
"""Identity v3 Endpoint action implementations"""
-import six
import sys
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+import six
+
from openstackclient.i18n import _
from openstackclient.identity import common
@@ -39,7 +40,7 @@ class CreateEndpoint(command.ShowOne):
parser.add_argument(
'service',
metavar='<service>',
- help=_('New endpoint service (name or ID)'),
+ help=_('Service to be associated with new endpoint (name or ID)'),
)
parser.add_argument(
'interface',
@@ -101,7 +102,7 @@ class DeleteEndpoint(command.Command):
parser.add_argument(
'endpoint',
metavar='<endpoint-id>',
- help=_('Endpoint ID to delete'),
+ help=_('Endpoint to delete (ID only)'),
)
return parser
@@ -120,7 +121,7 @@ class ListEndpoint(command.Lister):
parser.add_argument(
'--service',
metavar='<service>',
- help=_('Filter by service'),
+ help=_('Filter by service (name or ID)'),
)
parser.add_argument(
'--interface',
@@ -168,7 +169,7 @@ class SetEndpoint(command.Command):
parser.add_argument(
'endpoint',
metavar='<endpoint-id>',
- help=_('Endpoint ID to modify'),
+ help=_('Endpoint to modify (ID only)'),
)
parser.add_argument(
'--region',
diff --git a/openstackclient/identity/v3/federation_protocol.py b/openstackclient/identity/v3/federation_protocol.py
index c0f4bc93..377ddcce 100644
--- a/openstackclient/identity/v3/federation_protocol.py
+++ b/openstackclient/identity/v3/federation_protocol.py
@@ -14,10 +14,10 @@
"""Identity v3 Protocols actions implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py
index fdb94da6..fb0a25b9 100644
--- a/openstackclient/identity/v3/group.py
+++ b/openstackclient/identity/v3/group.py
@@ -15,13 +15,13 @@
"""Group action implementations"""
-import six
import sys
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/identity_provider.py b/openstackclient/identity/v3/identity_provider.py
index 3749aa35..0b530a26 100644
--- a/openstackclient/identity/v3/identity_provider.py
+++ b/openstackclient/identity/v3/identity_provider.py
@@ -13,10 +13,10 @@
"""Identity v3 IdentityProvider action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/mapping.py b/openstackclient/identity/v3/mapping.py
index c45796e4..5937474e 100644
--- a/openstackclient/identity/v3/mapping.py
+++ b/openstackclient/identity/v3/mapping.py
@@ -17,11 +17,11 @@
import json
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import exceptions
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/policy.py b/openstackclient/identity/v3/policy.py
index 74a783b0..68fb2738 100644
--- a/openstackclient/identity/v3/policy.py
+++ b/openstackclient/identity/v3/policy.py
@@ -15,11 +15,12 @@
"""Identity v3 Policy action implementations"""
-import six
import sys
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+import six
+
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py
index acf639f2..6145dcf1 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -15,13 +15,12 @@
"""Project action implementations"""
-import six
-
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.cli import parseractions
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import parseractions
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/region.py b/openstackclient/identity/v3/region.py
index 053e4b31..b5e46a9a 100644
--- a/openstackclient/identity/v3/region.py
+++ b/openstackclient/identity/v3/region.py
@@ -13,10 +13,10 @@
"""Identity v3 Region action implementations"""
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/role.py b/openstackclient/identity/v3/role.py
index e7078f44..1bb27585 100644
--- a/openstackclient/identity/v3/role.py
+++ b/openstackclient/identity/v3/role.py
@@ -15,13 +15,13 @@
"""Identity v3 Role action implementations"""
-import six
import sys
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/role_assignment.py b/openstackclient/identity/v3/role_assignment.py
index 521075fe..39e2336d 100644
--- a/openstackclient/identity/v3/role_assignment.py
+++ b/openstackclient/identity/v3/role_assignment.py
@@ -13,8 +13,9 @@
"""Identity v3 Assignment action implementations """
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/service.py b/openstackclient/identity/v3/service.py
index 35507a63..7beadc9d 100644
--- a/openstackclient/identity/v3/service.py
+++ b/openstackclient/identity/v3/service.py
@@ -15,11 +15,12 @@
"""Identity v3 Service action implementations"""
-import six
import sys
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+import six
+
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/service_provider.py b/openstackclient/identity/v3/service_provider.py
index f1e9f35d..0beea813 100644
--- a/openstackclient/identity/v3/service_provider.py
+++ b/openstackclient/identity/v3/service_provider.py
@@ -13,11 +13,12 @@
"""Service Provider action implementations"""
-import six
import sys
-from openstackclient.common import command
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import utils
+import six
+
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/token.py b/openstackclient/identity/v3/token.py
index 56a7497c..ecf09693 100644
--- a/openstackclient/identity/v3/token.py
+++ b/openstackclient/identity/v3/token.py
@@ -15,11 +15,11 @@
"""Identity v3 Token action implementations"""
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import exceptions
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
@@ -174,13 +174,23 @@ class IssueToken(command.ShowOne):
return parser
def take_action(self, parsed_args):
- if not self.app.client_manager.auth_ref:
+ auth_ref = self.app.client_manager.auth_ref
+ if not auth_ref:
raise exceptions.AuthorizationFailure(
_("Only an authorized user may issue a new token."))
- token = self.app.client_manager.auth_ref.service_catalog.get_token()
- if 'tenant_id' in token:
- token['project_id'] = token.pop('tenant_id')
- return zip(*sorted(six.iteritems(token)))
+
+ data = {}
+ if auth_ref.auth_token:
+ data['id'] = auth_ref.auth_token
+ if auth_ref.expires:
+ data['expires'] = auth_ref.expires
+ if auth_ref.project_id:
+ data['project_id'] = auth_ref.project_id
+ if auth_ref.user_id:
+ data['user_id'] = auth_ref.user_id
+ if auth_ref.domain_id:
+ data['domain_id'] = auth_ref.domain_id
+ return zip(*sorted(six.iteritems(data)))
class RevokeToken(command.Command):
diff --git a/openstackclient/identity/v3/trust.py b/openstackclient/identity/v3/trust.py
index 336b703c..bbc86adb 100644
--- a/openstackclient/identity/v3/trust.py
+++ b/openstackclient/identity/v3/trust.py
@@ -14,10 +14,11 @@
"""Identity v3 Trust action implementations"""
import datetime
+
+from osc_lib.command import command
+from osc_lib import utils
import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common
diff --git a/openstackclient/identity/v3/unscoped_saml.py b/openstackclient/identity/v3/unscoped_saml.py
index 5cb8e486..f116174b 100644
--- a/openstackclient/identity/v3/unscoped_saml.py
+++ b/openstackclient/identity/v3/unscoped_saml.py
@@ -17,9 +17,10 @@ The first step of federated auth is to fetch an unscoped token. From there,
the user can list domains and projects they are allowed to access, and request
a scoped token."""
-from openstackclient.common import command
-from openstackclient.common import exceptions
-from openstackclient.common import utils
+from osc_lib.command import command
+from osc_lib import exceptions
+from osc_lib import utils
+
from openstackclient.i18n import _
diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py
index a71b4b78..39125e2c 100644
--- a/openstackclient/identity/v3/user.py
+++ b/openstackclient/identity/v3/user.py
@@ -16,13 +16,13 @@
"""Identity v3 User action implementations"""
import copy
-import six
import sys
from keystoneauth1 import exceptions as ks_exc
+from osc_lib.command import command
+from osc_lib import utils
+import six
-from openstackclient.common import command
-from openstackclient.common import utils
from openstackclient.i18n import _
from openstackclient.identity import common