Add get certificates for v2.0
There was no API to fetch the PKI certificates using v2.0. bp auth-token-use-client Change-Id: I2b6f9af8b843d72271234fd4d26963b75a25a086
This commit is contained in:
40
keystoneclient/tests/v2_0/test_certificates.py
Normal file
40
keystoneclient/tests/v2_0/test_certificates.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Copyright 2014 IBM Corp.
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import testresources
|
||||||
|
|
||||||
|
from keystoneclient.tests import client_fixtures
|
||||||
|
from keystoneclient.tests.v2_0 import utils
|
||||||
|
|
||||||
|
|
||||||
|
class CertificateTests(utils.TestCase, testresources.ResourcedTestCase):
|
||||||
|
|
||||||
|
resources = [('examples', client_fixtures.EXAMPLES_RESOURCE)]
|
||||||
|
|
||||||
|
def test_get_ca_certificate(self):
|
||||||
|
self.stub_url('GET', ['certificates', 'ca'],
|
||||||
|
headers={'Content-Type': 'text/html; charset=UTF-8'},
|
||||||
|
text=self.examples.SIGNING_CA)
|
||||||
|
res = self.client.certificates.get_ca_certificate()
|
||||||
|
self.assertEqual(self.examples.SIGNING_CA, res)
|
||||||
|
|
||||||
|
def test_get_signing_certificate(self):
|
||||||
|
self.stub_url('GET', ['certificates', 'signing'],
|
||||||
|
headers={'Content-Type': 'text/html; charset=UTF-8'},
|
||||||
|
text=self.examples.SIGNING_CERT)
|
||||||
|
res = self.client.certificates.get_signing_certificate()
|
||||||
|
self.assertEqual(self.examples.SIGNING_CERT, res)
|
||||||
|
|
||||||
|
|
||||||
|
def load_tests(loader, tests, pattern):
|
||||||
|
return testresources.OptimisingTestSuite(tests)
|
42
keystoneclient/v2_0/certificates.py
Normal file
42
keystoneclient/v2_0/certificates.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Copyright 2014 IBM Corp.
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
class CertificatesManager(object):
|
||||||
|
"""Manager for certificates."""
|
||||||
|
|
||||||
|
def __init__(self, client):
|
||||||
|
self._client = client
|
||||||
|
|
||||||
|
def get_ca_certificate(self):
|
||||||
|
"""Get CA certificate.
|
||||||
|
|
||||||
|
:returns: PEM-formatted string.
|
||||||
|
:rtype: str
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp, body = self._client.get('/certificates/ca', authenticated=False)
|
||||||
|
return resp.text
|
||||||
|
|
||||||
|
def get_signing_certificate(self):
|
||||||
|
"""Get signing certificate.
|
||||||
|
|
||||||
|
:returns: PEM-formatted string.
|
||||||
|
:rtype: str
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
resp, body = self._client.get('/certificates/signing',
|
||||||
|
authenticated=False)
|
||||||
|
return resp.text
|
@@ -19,6 +19,7 @@ from keystoneclient.auth.identity import v2 as v2_auth
|
|||||||
from keystoneclient import exceptions
|
from keystoneclient import exceptions
|
||||||
from keystoneclient import httpclient
|
from keystoneclient import httpclient
|
||||||
from keystoneclient.i18n import _
|
from keystoneclient.i18n import _
|
||||||
|
from keystoneclient.v2_0 import certificates
|
||||||
from keystoneclient.v2_0 import ec2
|
from keystoneclient.v2_0 import ec2
|
||||||
from keystoneclient.v2_0 import endpoints
|
from keystoneclient.v2_0 import endpoints
|
||||||
from keystoneclient.v2_0 import extensions
|
from keystoneclient.v2_0 import extensions
|
||||||
@@ -131,6 +132,7 @@ class Client(httpclient.HTTPClient):
|
|||||||
"""Initialize a new client for the Keystone v2.0 API."""
|
"""Initialize a new client for the Keystone v2.0 API."""
|
||||||
super(Client, self).__init__(**kwargs)
|
super(Client, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
self.certificates = certificates.CertificatesManager(self._adapter)
|
||||||
self.endpoints = endpoints.EndpointManager(self._adapter)
|
self.endpoints = endpoints.EndpointManager(self._adapter)
|
||||||
self.extensions = extensions.ExtensionManager(self._adapter)
|
self.extensions = extensions.ExtensionManager(self._adapter)
|
||||||
self.roles = roles.RoleManager(self._adapter)
|
self.roles = roles.RoleManager(self._adapter)
|
||||||
|
Reference in New Issue
Block a user