summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
authorTerryHowe <terrylhowe@gmail.com>2015-03-06 11:14:42 -0700
committerSteve Martinelli <stevemar@ca.ibm.com>2015-03-09 23:08:15 -0400
commitfa5f02eb2280b7f713d2b7f6e5eafe191bb40d0c (patch)
tree28c42c92ac59fd18e3ef7be69a46cb41dfc7af11 /openstackclient/identity
parenta2167466273fd7cdd50c67cb82fdbfa333b30102 (diff)
downloadpython-openstackclient-fa5f02eb2280b7f713d2b7f6e5eafe191bb40d0c.tar.gz
Add identity v3 catalog show
Change-Id: Ia6b6c25eded43b899b3aa026227ad2859f1c67dd
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/v3/catalog.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/openstackclient/identity/v3/catalog.py b/openstackclient/identity/v3/catalog.py
index 09713661..1899f25e 100644
--- a/openstackclient/identity/v3/catalog.py
+++ b/openstackclient/identity/v3/catalog.py
@@ -16,8 +16,11 @@
import logging
from cliff import lister
+from cliff import show
+import six
from openstackclient.common import utils
+from openstackclient.i18n import _ # noqa
def _format_endpoints(eps=None):
@@ -54,3 +57,44 @@ class ListCatalog(lister.Lister):
'Endpoints': _format_endpoints,
},
) for s in data))
+
+
+class ShowCatalog(show.ShowOne):
+ """Display service catalog details"""
+
+ log = logging.getLogger(__name__ + '.ShowCatalog')
+
+ def get_parser(self, prog_name):
+ parser = super(ShowCatalog, self).get_parser(prog_name)
+ parser.add_argument(
+ 'service',
+ metavar='<service>',
+ help=_('Service to display (type or name)'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug('take_action(%s)', 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
+
+ data = None
+ for service in sc.get_data():
+ if (service.get('name') == parsed_args.service or
+ service.get('type') == parsed_args.service):
+ data = dict(service)
+ data['endpoints'] = _format_endpoints(data['endpoints'])
+ if 'links' in data:
+ data.pop('links')
+ break
+
+ if not data:
+ self.app.log.error('service %s not found\n' %
+ parsed_args.service)
+ return ([], [])
+
+ return zip(*sorted(six.iteritems(data)))