summaryrefslogtreecommitdiff
path: root/keystoneclient
diff options
context:
space:
mode:
Diffstat (limited to 'keystoneclient')
-rw-r--r--keystoneclient/discover.py14
-rw-r--r--keystoneclient/tests/unit/test_session.py2
-rw-r--r--keystoneclient/tests/unit/test_utils.py2
-rw-r--r--keystoneclient/tests/unit/v3/test_auth_manager.py14
-rw-r--r--keystoneclient/v3/auth.py23
-rw-r--r--keystoneclient/v3/system.py26
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