diff options
Diffstat (limited to 'keystoneclient')
-rw-r--r-- | keystoneclient/discover.py | 14 | ||||
-rw-r--r-- | keystoneclient/tests/unit/test_session.py | 2 | ||||
-rw-r--r-- | keystoneclient/tests/unit/test_utils.py | 2 | ||||
-rw-r--r-- | keystoneclient/tests/unit/v3/test_auth_manager.py | 14 | ||||
-rw-r--r-- | keystoneclient/v3/auth.py | 23 | ||||
-rw-r--r-- | keystoneclient/v3/system.py | 26 |
6 files changed, 72 insertions, 9 deletions
diff --git a/keystoneclient/discover.py b/keystoneclient/discover.py index 0c129b3..1617416 100644 --- a/keystoneclient/discover.py +++ b/keystoneclient/discover.py @@ -232,8 +232,8 @@ class Discover(_discover.Discover): >>> disc = discover.Discovery(auth_url='http://localhost:5000') >>> disc.raw_version_data() [{'id': 'v3.0', - 'links': [{'href': u'http://127.0.0.1:5000/v3/', - 'rel': u'self'}], + 'links': [{'href': 'http://127.0.0.1:5000/v3/', + 'rel': 'self'}], 'media-types': [ {'base': 'application/json', 'type': 'application/vnd.openstack.identity-v3+json'}, @@ -242,11 +242,11 @@ class Discover(_discover.Discover): 'status': 'stable', 'updated': '2013-03-06T00:00:00Z'}, {'id': 'v2.0', - 'links': [{'href': u'http://127.0.0.1:5000/v2.0/', - 'rel': u'self'}, - {'href': u'...', - 'rel': u'describedby', - 'type': u'application/pdf'}], + 'links': [{'href': 'http://127.0.0.1:5000/v2.0/', + 'rel': 'self'}, + {'href': '...', + 'rel': 'describedby', + 'type': 'application/pdf'}], 'media-types': [ {'base': 'application/json', 'type': 'application/vnd.openstack.identity-v2.0+json'}, diff --git a/keystoneclient/tests/unit/test_session.py b/keystoneclient/tests/unit/test_session.py index 14cfe31..f201a0b 100644 --- a/keystoneclient/tests/unit/test_session.py +++ b/keystoneclient/tests/unit/test_session.py @@ -243,7 +243,7 @@ class SessionTests(utils.TestCase): session = client_session.Session(verify=False) body = 'RESP' - data = u'αβγδ' + data = 'αβγδ' self.stub_url('POST', text=body) session.post(self.TEST_URL, data=data) diff --git a/keystoneclient/tests/unit/test_utils.py b/keystoneclient/tests/unit/test_utils.py index 0144331..c1f6f8c 100644 --- a/keystoneclient/tests/unit/test_utils.py +++ b/keystoneclient/tests/unit/test_utils.py @@ -33,7 +33,7 @@ class FakeManager(object): resources = { '1234': {'name': 'entity_one'}, '8e8ec658-c7b0-4243-bdf8-6f7f2952c0d0': {'name': 'entity_two'}, - '\xe3\x82\xbdtest': {'name': u'\u30bdtest'}, + '\xe3\x82\xbdtest': {'name': '\u30bdtest'}, '5678': {'name': '9876'} } diff --git a/keystoneclient/tests/unit/v3/test_auth_manager.py b/keystoneclient/tests/unit/v3/test_auth_manager.py index 1857960..dec8b0c 100644 --- a/keystoneclient/tests/unit/v3/test_auth_manager.py +++ b/keystoneclient/tests/unit/v3/test_auth_manager.py @@ -62,3 +62,17 @@ class AuthProjectsTest(utils.ClientTestCase): for d in domains: self.assertIsInstance(d, auth.Domain) + + def test_get_systems(self): + body = {'system': [{ + 'all': True, + }]} + + self.stub_url('GET', ['auth', 'system'], json=body) + + systems = self.client.auth.systems() + system = systems[0] + + self.assertEqual(1, len(systems)) + self.assertIsInstance(system, auth.System) + self.assertTrue(system.all) diff --git a/keystoneclient/v3/auth.py b/keystoneclient/v3/auth.py index 6b8d6e9..4d85e24 100644 --- a/keystoneclient/v3/auth.py +++ b/keystoneclient/v3/auth.py @@ -16,10 +16,12 @@ from keystoneauth1 import plugin from keystoneclient import base from keystoneclient.v3 import domains from keystoneclient.v3 import projects +from keystoneclient.v3 import system Domain = domains.Domain Project = projects.Project +System = system.System class AuthManager(base.Manager): @@ -31,6 +33,7 @@ class AuthManager(base.Manager): _PROJECTS_URL = '/auth/projects' _DOMAINS_URL = '/auth/domains' + _SYSTEM_URL = '/auth/system' def projects(self): """List projects that the specified token can be rescoped to. @@ -67,3 +70,23 @@ class AuthManager(base.Manager): 'domains', obj_class=Domain, endpoint_filter=endpoint_filter) + + def systems(self): + """List Systems that the specified token can be rescoped to. + + At the moment this is either empty or "all". + + :returns: a list of systems. + :rtype: list of :class:`keystoneclient.v3.systems.System`. + + """ + try: + return self._list(self._SYSTEM_URL, + 'system', + obj_class=System) + except exceptions.EndpointNotFound: + endpoint_filter = {'interface': plugin.AUTH_INTERFACE} + return self._list(self._SYSTEM_URL, + 'system', + obj_class=System, + endpoint_filter=endpoint_filter) diff --git a/keystoneclient/v3/system.py b/keystoneclient/v3/system.py new file mode 100644 index 0000000..8d3edaf --- /dev/null +++ b/keystoneclient/v3/system.py @@ -0,0 +1,26 @@ +# Copyright 2021 OpenStack Foundation +# 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 base + + +class System(base.Resource): + """Represents the deployment system, with all the services in it. + + Attributes: + * all: boolean + """ + + pass |