diff options
| author | Ziad Sawalha <github@highbridgellc.com> | 2011-12-28 00:23:31 -0600 |
|---|---|---|
| committer | Ziad Sawalha <github@highbridgellc.com> | 2012-01-20 12:14:02 -0600 |
| commit | 8db366c448d4074c044f596a8e4271befdb797cb (patch) | |
| tree | ff128968469d602e00ee41cfe09e12ba31a6d6b0 /keystoneclient/generic/shell.py | |
| parent | cbe1f82931002e3562ab41582ff86470681b889b (diff) | |
| download | python-keystoneclient-8db366c448d4074c044f596a8e4271befdb797cb.tar.gz | |
Support for version and extension discoveryessex-3
- Supports unauthenticated call to Keystone to discover
supported API versions
- Added command-line support (usage: keystone discover)
- Added client support (keystoneclient.genenric client).
Client returns dicts, whereas shell command prints
formated output.
- Added tests for genenric client
- Replicates 'nove discover' in python-novaclient
- Starts to address blueprint keystone-client
- keystone discover output looks like this:
$ keystone discover
Keystone found at http://localhost:35357
- supports version v1.0 (DEPRECATED) here http://localhost:35357/v1.0
- supports version v1.1 (CURRENT) here http://localhost:35357/v1.1
- supports version v2.0 (BETA) here http://localhost:35357/v2.0
- and HP-IDM: HP Token Validation Extension
- and OS-KSADM: Openstack Keystone Admin
- and OS-KSCATALOG: Openstack Keystone Catalog
Change-Id: Id16d34dac094c780d36afb3e31c98c318b6071ac
Diffstat (limited to 'keystoneclient/generic/shell.py')
| -rw-r--r-- | keystoneclient/generic/shell.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/keystoneclient/generic/shell.py b/keystoneclient/generic/shell.py new file mode 100644 index 0000000..52d7d1f --- /dev/null +++ b/keystoneclient/generic/shell.py @@ -0,0 +1,59 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2010 OpenStack LLC. +# All Rights Reserved. +# +# 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. + +from keystoneclient import utils +from keystoneclient.generic import client + +CLIENT_CLASS = client.Client + + +@utils.unauthenticated +def do_discover(cs, args): + """ + Discover Keystone servers and show authentication protocols and + extensions supported. + + Usage:: + $ keystone discover + Keystone found at http://localhost:35357 + - supports version v1.0 (DEPRECATED) here http://localhost:35357/v1.0 + - supports version v1.1 (CURRENT) here http://localhost:35357/v1.1 + - supports version v2.0 (BETA) here http://localhost:35357/v2.0 + - and RAX-KSKEY: Rackspace API Key Authentication Admin Extension + - and RAX-KSGRP: Rackspace Keystone Group Extensions + """ + if cs.endpoint: + versions = cs.discover(cs.endpoint) + elif cs.auth_url: + versions = cs.discover(cs.auth_url) + else: + versions = cs.discover() + if versions: + if 'message' in versions: + print versions['message'] + for key, version in versions.iteritems(): + if key != 'message': + print " - supports version %s (%s) here %s" % \ + (version['id'], version['status'], version['url']) + extensions = cs.discover_extensions(version['url']) + if extensions: + for key, extension in extensions.iteritems(): + if key != 'message': + print " - and %s: %s" % \ + (key, extension) + else: + print "No Keystone-compatible endpoint found" |
