From f25748293e89ffb0231ed048b41c0025328c27fb Mon Sep 17 00:00:00 2001 From: David Lyle Date: Wed, 24 Jan 2018 15:05:17 -0700 Subject: [PATCH] Handle novaclient ec2 cert support removal In Queens, ec2 cert support was removed from python-novaclient. This causes horizon to be unable to get the keystone values of ec2 credentials. This patch removes the code that handles ec2 certs from nova. Since the ec2 cert code in nova was removed in Mitaka. There is no real risk of breaking backwards compatibility. Change-Id: I470761d67004f6e6b188d3afc4b7f081b7bc708f Closes-Bug: #1729175 --- openstack_dashboard/api/nova.py | 10 ---------- .../dashboards/project/api_access/tests.py | 6 ------ .../dashboards/project/api_access/views.py | 5 ----- openstack_dashboard/test/test_data/nova_data.py | 7 ------- 4 files changed, 28 deletions(-) diff --git a/openstack_dashboard/api/nova.py b/openstack_dashboard/api/nova.py index 002aa05fbe..a0cec62861 100644 --- a/openstack_dashboard/api/nova.py +++ b/openstack_dashboard/api/nova.py @@ -787,16 +787,6 @@ def usage_list(request, start, end): return [NovaUsage(u) for u in usage_list] -@profiler.trace -def get_x509_credentials(request): - return novaclient(request).certs.create() - - -@profiler.trace -def get_x509_root_certificate(request): - return novaclient(request).certs.get() - - @profiler.trace def get_password(request, instance_id, private_key=None): return novaclient(request).servers.get_password(instance_id, private_key) diff --git a/openstack_dashboard/dashboards/project/api_access/tests.py b/openstack_dashboard/dashboards/project/api_access/tests.py index a9c389ce7f..7bd14bfff2 100644 --- a/openstack_dashboard/dashboards/project/api_access/tests.py +++ b/openstack_dashboard/dashboards/project/api_access/tests.py @@ -38,18 +38,12 @@ RECREATE_CREDS_URL = reverse(API_URL + ":recreate_credentials") class APIAccessTests(test.TestCase): def test_ec2_download_view(self): creds = self.ec2.first() - cert = self.certs.first() self.mox.StubOutWithMock(api.keystone, "list_ec2_credentials") - self.mox.StubOutWithMock(api.nova, "get_x509_credentials") - self.mox.StubOutWithMock(api.nova, "get_x509_root_certificate") self.mox.StubOutWithMock(api.keystone, "create_ec2_credentials") api.keystone.list_ec2_credentials(IsA(HttpRequest), self.user.id) \ .AndReturn([]) - api.nova.get_x509_credentials(IsA(HttpRequest)).AndReturn(cert) - api.nova.get_x509_root_certificate(IsA(HttpRequest)) \ - .AndReturn(cert) api.keystone.create_ec2_credentials(IsA(HttpRequest), self.user.id, self.tenant.id).AndReturn(creds) diff --git a/openstack_dashboard/dashboards/project/api_access/views.py b/openstack_dashboard/dashboards/project/api_access/views.py index 4ef9c6df3d..be3c30f05a 100644 --- a/openstack_dashboard/dashboards/project/api_access/views.py +++ b/openstack_dashboard/dashboards/project/api_access/views.py @@ -90,8 +90,6 @@ def download_ec2_bundle(request): # Gather or create our EC2 credentials try: - credentials = api.nova.get_x509_credentials(request) - cacert = api.nova.get_x509_root_certificate(request) context = _get_ec2_credentials(request) except Exception: exceptions.handle(request, @@ -103,9 +101,6 @@ def download_ec2_bundle(request): try: temp_zip = tempfile.NamedTemporaryFile(delete=True) with closing(zipfile.ZipFile(temp_zip.name, mode='w')) as archive: - archive.writestr('pk.pem', credentials.private_key) - archive.writestr('cert.pem', credentials.data) - archive.writestr('cacert.pem', cacert.data) archive.writestr('ec2rc.sh', render_to_string(template, context)) except Exception: exceptions.handle(request, diff --git a/openstack_dashboard/test/test_data/nova_data.py b/openstack_dashboard/test/test_data/nova_data.py index ebf26f2fe4..a57bd39bef 100644 --- a/openstack_dashboard/test/test_data/nova_data.py +++ b/openstack_dashboard/test/test_data/nova_data.py @@ -16,7 +16,6 @@ import json from novaclient.v2 import aggregates from novaclient.v2 import availability_zones -from novaclient.v2 import certs from novaclient.v2 import flavor_access from novaclient.v2 import flavors from novaclient.v2 import hosts @@ -164,7 +163,6 @@ def data(TEST): TEST.quotas = utils.TestDataContainer() TEST.quota_usages = utils.TestDataContainer() TEST.usages = utils.TestDataContainer() - TEST.certs = utils.TestDataContainer() TEST.availability_zones = utils.TestDataContainer() TEST.hypervisors = utils.TestDataContainer() TEST.services = utils.TestDataContainer() @@ -433,11 +431,6 @@ def data(TEST): json.loads(USAGE_DATA % usage_2_vals)) TEST.usages.add(usage_obj_2) - cert_data = {'private_key': 'private', - 'data': 'certificate_data'} - certificate = certs.Certificate(certs.CertificateManager(None), cert_data) - TEST.certs.add(certificate) - # Availability Zones TEST.availability_zones.add(availability_zones.AvailabilityZone( availability_zones.AvailabilityZoneManager(None),