From 4976db583a89a495d9341f561ee8f27f0ff0a70f Mon Sep 17 00:00:00 2001 From: Yaguang Tang Date: Thu, 2 Jun 2016 18:43:49 +0800 Subject: [PATCH] Remove unused keystone service catalog parse file. Cinderclient has changed to use keystoneclient to handle service catalog, so we can safely remove the old parse file and tests. Change-Id: I01185fdd0067a519919330297ed31cb2c6f22b41 --- cinderclient/service_catalog.py | 90 ------ .../tests/unit/test_service_catalog.py | 275 ------------------ 2 files changed, 365 deletions(-) delete mode 100644 cinderclient/service_catalog.py delete mode 100644 cinderclient/tests/unit/test_service_catalog.py diff --git a/cinderclient/service_catalog.py b/cinderclient/service_catalog.py deleted file mode 100644 index 022775053..000000000 --- a/cinderclient/service_catalog.py +++ /dev/null @@ -1,90 +0,0 @@ -# Copyright (c) 2011 OpenStack Foundation -# Copyright 2011, Piston Cloud Computing, Inc. -# -# 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. - - -import cinderclient.exceptions - - -class ServiceCatalog(object): - """Helper methods for dealing with a Keystone Service Catalog.""" - - def __init__(self, resource_dict): - self.catalog = resource_dict - - def get_token(self): - return self.catalog['access']['token']['id'] - - def url_for(self, attr=None, filter_value=None, - service_type=None, endpoint_type='publicURL', - service_name=None, volume_service_name=None): - """Fetch the public URL from the Compute service for - a particular endpoint attribute. If none given, return - the first. See tests for sample service catalog. - """ - matching_endpoints = [] - if 'endpoints' in self.catalog: - # We have a bastardized service catalog. Treat it special. :/ - for endpoint in self.catalog['endpoints']: - if not filter_value or endpoint[attr] == filter_value: - matching_endpoints.append(endpoint) - if not matching_endpoints: - raise cinderclient.exceptions.EndpointNotFound() - - # We don't always get a service catalog back ... - if 'serviceCatalog' not in self.catalog['access']: - return None - - # Full catalog ... - catalog = self.catalog['access']['serviceCatalog'] - - for service in catalog: - - # NOTE(thingee): For backwards compatibility, if they have v2 - # enabled and the service_type is set to 'volume', go ahead and - # accept that. - skip_service_type_check = False - if (service_type in ('volumev2', 'volumev3') and - service['type'] == 'volume'): - version = service['endpoints'][0]['publicURL'].split('/')[3] - if version in ('v2', 'v3'): - skip_service_type_check = True - - if (not skip_service_type_check - and service.get("type") != service_type): - continue - - if (volume_service_name and service_type in - ('volume', 'volumev2', 'volumev3') - and service.get('name') != volume_service_name): - continue - - endpoints = service['endpoints'] - for endpoint in endpoints: - if not filter_value or endpoint.get(attr) == filter_value: - endpoint["serviceName"] = service.get("name") - matching_endpoints.append(endpoint) - - if not matching_endpoints: - raise cinderclient.exceptions.EndpointNotFound() - elif len(matching_endpoints) > 1: - try: - eplist = [ep[attr] for ep in matching_endpoints] - except KeyError: - eplist = matching_endpoints - raise cinderclient.exceptions.AmbiguousEndpoints(endpoints=eplist) - else: - return matching_endpoints[0][endpoint_type] diff --git a/cinderclient/tests/unit/test_service_catalog.py b/cinderclient/tests/unit/test_service_catalog.py deleted file mode 100644 index f7f35b953..000000000 --- a/cinderclient/tests/unit/test_service_catalog.py +++ /dev/null @@ -1,275 +0,0 @@ -# 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 cinderclient import exceptions -from cinderclient import service_catalog -from cinderclient.tests.unit import utils - - -# Taken directly from keystone/content/common/samples/auth.json -# Do not edit this structure. Instead, grab the latest from there. - -SERVICE_CATALOG = { - "access": { - "token": { - "id": "ab48a9efdfedb23ty3494", - "expires": "2010-11-01T03:32:15-05:00", - "tenant": { - "id": "345", - "name": "My Project" - } - }, - "user": { - "id": "123", - "name": "jqsmith", - "roles": [ - { - "id": "234", - "name": "compute:admin", - }, - { - "id": "235", - "name": "object-store:admin", - "tenantId": "1", - } - ], - "roles_links": [], - }, - "serviceCatalog": [ - { - "name": "Cloud Servers", - "type": "compute", - "endpoints": [ - { - "tenantId": "1", - "publicURL": "https://compute1.host/v1/1234", - "internalURL": "https://compute1.host/v1/1234", - "region": "North", - "versionId": "1.0", - "versionInfo": "https://compute1.host/v1/", - "versionList": "https://compute1.host/" - }, - { - "tenantId": "2", - "publicURL": "https://compute1.host/v1/3456", - "internalURL": "https://compute1.host/v1/3456", - "region": "North", - "versionId": "1.1", - "versionInfo": "https://compute1.host/v1/", - "versionList": "https://compute1.host/" - }, - ], - "endpoints_links": [], - }, - { - "name": "Cinder Volume Service", - "type": "volume", - "endpoints": [ - { - "tenantId": "1", - "publicURL": "https://volume1.host/v1/1234", - "internalURL": "https://volume1.host/v1/1234", - "region": "South", - "versionId": "1.0", - "versionInfo": "uri", - "versionList": "uri" - }, - { - "tenantId": "2", - "publicURL": "https://volume1.host/v1/3456", - "internalURL": "https://volume1.host/v1/3456", - "region": "South", - "versionId": "1.1", - "versionInfo": "https://volume1.host/v1/", - "versionList": "https://volume1.host/" - }, - ], - "endpoints_links": [ - { - "rel": "next", - "href": "https://identity1.host/v2.0/endpoints" - }, - ], - }, - { - "name": "Cinder Volume Service V2", - "type": "volumev2", - "endpoints": [ - { - "tenantId": "1", - "publicURL": "https://volume1.host/v2/1234", - "internalURL": "https://volume1.host/v2/1234", - "region": "South", - "versionId": "2.0", - "versionInfo": "uri", - "versionList": "uri" - }, - { - "tenantId": "2", - "publicURL": "https://volume1.host/v2/3456", - "internalURL": "https://volume1.host/v2/3456", - "region": "South", - "versionId": "1.1", - "versionInfo": "https://volume1.host/v2/", - "versionList": "https://volume1.host/" - }, - ], - "endpoints_links": [ - { - "rel": "next", - "href": "https://identity1.host/v2.0/endpoints" - }, - ], - }, - ], - "serviceCatalog_links": [ - { - "rel": "next", - "href": "https://identity.host/v2.0/endpoints?session=2hfh8Ar", - }, - ], - }, -} - -SERVICE_COMPATIBILITY_CATALOG = { - "access": { - "token": { - "id": "ab48a9efdfedb23ty3494", - "expires": "2010-11-01T03:32:15-05:00", - "tenant": { - "id": "345", - "name": "My Project" - } - }, - "user": { - "id": "123", - "name": "jqsmith", - "roles": [ - { - "id": "234", - "name": "compute:admin", - }, - { - "id": "235", - "name": "object-store:admin", - "tenantId": "1", - } - ], - "roles_links": [], - }, - "serviceCatalog": [ - { - "name": "Cloud Servers", - "type": "compute", - "endpoints": [ - { - "tenantId": "1", - "publicURL": "https://compute1.host/v1/1234", - "internalURL": "https://compute1.host/v1/1234", - "region": "North", - "versionId": "1.0", - "versionInfo": "https://compute1.host/v1/", - "versionList": "https://compute1.host/" - }, - { - "tenantId": "2", - "publicURL": "https://compute1.host/v1/3456", - "internalURL": "https://compute1.host/v1/3456", - "region": "North", - "versionId": "1.1", - "versionInfo": "https://compute1.host/v1/", - "versionList": "https://compute1.host/" - }, - ], - "endpoints_links": [], - }, - { - "name": "Cinder Volume Service V2", - "type": "volume", - "endpoints": [ - { - "tenantId": "1", - "publicURL": "https://volume1.host/v2/1234", - "internalURL": "https://volume1.host/v2/1234", - "region": "South", - "versionId": "2.0", - "versionInfo": "uri", - "versionList": "uri" - }, - { - "tenantId": "2", - "publicURL": "https://volume1.host/v2/3456", - "internalURL": "https://volume1.host/v2/3456", - "region": "South", - "versionId": "1.1", - "versionInfo": "https://volume1.host/v2/", - "versionList": "https://volume1.host/" - }, - ], - "endpoints_links": [ - { - "rel": "next", - "href": "https://identity1.host/v2.0/endpoints" - }, - ], - }, - ], - "serviceCatalog_links": [ - { - "rel": "next", - "href": "https://identity.host/v2.0/endpoints?session=2hfh8Ar", - }, - ], - }, -} - - -class ServiceCatalogTest(utils.TestCase): - def test_building_a_service_catalog(self): - sc = service_catalog.ServiceCatalog(SERVICE_CATALOG) - - self.assertRaises(exceptions.AmbiguousEndpoints, sc.url_for, - service_type='compute') - self.assertEqual("https://compute1.host/v1/1234", - sc.url_for('tenantId', '1', service_type='compute')) - self.assertEqual("https://compute1.host/v1/3456", - sc.url_for('tenantId', '2', service_type='compute')) - - self.assertRaises(exceptions.EndpointNotFound, sc.url_for, - "region", "South", service_type='compute') - - def test_alternate_service_type(self): - sc = service_catalog.ServiceCatalog(SERVICE_CATALOG) - - self.assertRaises(exceptions.AmbiguousEndpoints, sc.url_for, - service_type='volume') - self.assertEqual("https://volume1.host/v1/1234", - sc.url_for('tenantId', '1', service_type='volume')) - self.assertEqual("https://volume1.host/v1/3456", - sc.url_for('tenantId', '2', service_type='volume')) - - self.assertEqual("https://volume1.host/v2/3456", - sc.url_for('tenantId', '2', service_type='volumev2')) - self.assertEqual("https://volume1.host/v2/3456", - sc.url_for('tenantId', '2', service_type='volumev2')) - - self.assertRaises(exceptions.EndpointNotFound, sc.url_for, - "region", "North", service_type='volume') - - def test_compatibility_service_type(self): - sc = service_catalog.ServiceCatalog(SERVICE_COMPATIBILITY_CATALOG) - - self.assertEqual("https://volume1.host/v2/1234", - sc.url_for('tenantId', '1', service_type='volume')) - self.assertEqual("https://volume1.host/v2/3456", - sc.url_for('tenantId', '2', service_type='volume'))