diff --git a/shade/openstackcloud.py b/shade/openstackcloud.py index fd230a94c..3b24c4801 100644 --- a/shade/openstackcloud.py +++ b/shade/openstackcloud.py @@ -415,7 +415,7 @@ class OpenStackCloud( if 'identity' not in self._raw_clients: identity_client = self._get_raw_client('identity') identity_url = self._discover_endpoint( - 'identity', version_required=True) + 'identity', version_required=True, versions=['3', '2']) identity_client.endpoint_override = identity_url self.cloud_config.config['identity_endpoint_override'] = \ identity_url @@ -429,13 +429,19 @@ class OpenStackCloud( self._raw_clients['raw-image'] = image_client return self._raw_clients['raw-image'] + def _get_version_and_base_from_endpoint(self, endpoint): + url, version = endpoint.rstrip('/').rsplit('/', 1) + if version.endswith(self.current_project_id): + url, version = endpoint.rstrip('/').rsplit('/', 1) + if version.startswith('v'): + return url, version[1] + return "/".join([url, version]), None + def _get_version_from_endpoint(self, endpoint): - endpoint_parts = endpoint.rstrip('/').split('/') - if endpoint_parts[-1].endswith(self.current_project_id): - endpoint_parts.pop() - if endpoint_parts[-1].startswith('v'): - return endpoint_parts[-1][1] - return None + return self._get_version_and_base_from_endpoint(endpoint)[1] + + def _strip_version_from_endpoint(self, endpoint): + return self._get_version_and_base_from_endpoint(endpoint)[0] def _match_given_endpoint(self, given, version): given_version = self._get_version_from_endpoint(given) @@ -443,7 +449,9 @@ class OpenStackCloud( return True return False - def _discover_endpoint(self, service_type, version_required=False): + def _discover_endpoint( + self, service_type, version_required=False, + versions=None): # If endpoint_override is set, do nothing service_endpoint = self.cloud_config.get_endpoint(service_type) if service_endpoint: @@ -452,56 +460,70 @@ class OpenStackCloud( client = self._get_raw_client(service_type) config_version = self.cloud_config.get_api_version(service_type) + if versions and config_version[0] not in versions: + raise OpenStackCloudException( + "Version {version} was requested for service {service_type}" + " but shade only understands how to handle versions" + " {versions}".format( + version=config_version, + service_type=service_type, + versions=versions)) + # shade only groks major versions at the moment if config_version: config_version = config_version[0] # First - quick check to see if the endpoint in the catalog # is a versioned endpoint that matches the version we requested. - # If it is, don't do any additoinal work. + # If it is, don't do any additional work. catalog_endpoint = client.get_endpoint() if self._match_given_endpoint( catalog_endpoint, config_version): return catalog_endpoint - # Ok, do version discovery - candidate_endpoints = None + if not versions and config_version: + versions = [config_version] + + candidate_endpoints = [] version_key = '{service}_api_version'.format(service=service_type) + + # Next, try built-in keystoneauth discovery so that we can take + # advantage of the discovery cache + base_url = self._strip_version_from_endpoint(catalog_endpoint) try: - versions = client.get('/') - if 'values' in versions: - versions = versions['values'] - if isinstance(versions, dict): - versions = [versions] + discovery = self.keystone_session.auth.get_discovery( + self.keystone_session, base_url) + + version_list = discovery.version_data(reverse=True) if config_version: - candidate_endpoints = [ - version for version in versions - if version['id'][1] == config_version] + # If we have a specific version request, look for it first. + for version_data in version_list: + if str(version_data['version'][0]) == config_version: + candidate_endpoints.append(version_data) + if not candidate_endpoints: - candidate_endpoints = [ - version for version in versions - if version['status'] in ('CURRENT', 'stable')] - if not candidate_endpoints: - candidate_endpoints = versions - except (keystoneauth1.exceptions.connection.ConnectFailure, - OpenStackCloudURINotFound) as e: - # A 404 or a connection error is a likely thing to get - # either with a misconfgured service. or we've already - # gotten a versioned endpoint from the catalog + # If we didn't find anything, look again, this time either + # for the range, or just grab everything if we don't have + # a range + if str(version_data['version'][0]) in versions: + candidate_endpoints.append(version_data) + elif not config_version and not versions: + candidate_endpoints.append(version_data) + + except keystoneauth1.exceptions.DiscoveryFailure as e: self.log.debug( "Version discovery failed, assuming endpoint in" " the catalog is already versioned. {e}".format(e=str(e))) if candidate_endpoints: + # If we got more than one, pick the highest endpoint_description = candidate_endpoints[0] - service_endpoint = [ - link['href'] for link in endpoint_description['links'] - if link['rel'] == 'self'][0] - api_version = endpoint_description['id'][1] + service_endpoint = endpoint_description['url'] + api_version = str(endpoint_description['version'][0]) else: # Can't discover a version. Do best-attempt at inferring # version from URL so that later logic can do its best - api_version = self._get_version_from_endpoint() + api_version = self._get_version_from_endpoint(catalog_endpoint) if not api_version: if not config_version and version_required: raise OpenStackCloudException( @@ -545,7 +567,8 @@ class OpenStackCloud( def _image_client(self): if 'image' not in self._raw_clients: image_client = self._get_raw_client('image') - image_url = self._discover_endpoint('image', version_required=True) + image_url = self._discover_endpoint( + 'image', version_required=True, versions=['2', '1']) image_client.endpoint_override = image_url self._raw_clients['image'] = image_client return self._raw_clients['image'] diff --git a/shade/tests/unit/base.py b/shade/tests/unit/base.py index 4115eebd5..47bf1d9e2 100644 --- a/shade/tests/unit/base.py +++ b/shade/tests/unit/base.py @@ -434,17 +434,6 @@ class RequestsMockTestCase(BaseTestCase): self._make_test_cloud(cloud_name='_test_cloud_v2_', identity_api_version='2.0') - def _add_discovery_uri_call(self): - # NOTE(notmorgan): Temp workaround for transition to requests - # mock for cases keystoneclient is still mocked directly. This allows - # us to inject another call to discovery where needed in a test that - # no longer mocks out kyestoneclient and performs the extra round - # trips. - self.__do_register_uris([ - dict(method='GET', uri='https://identity.example.com/', - text=open(self.discovery_json, 'r').read()), - ]) - def _make_test_cloud(self, cloud_name='_test_cloud_', **kwargs): test_cloud = os.environ.get('SHADE_OS_CLOUD', cloud_name) self.cloud_config = self.config.get_one_cloud( diff --git a/shade/tests/unit/fixtures/dns.json b/shade/tests/unit/fixtures/dns.json index d3bbfc5c0..1fc8e86bd 100644 --- a/shade/tests/unit/fixtures/dns.json +++ b/shade/tests/unit/fixtures/dns.json @@ -1,22 +1,24 @@ { - "values": [{ - "id": "v1", - "links": [ - { - "href": "https://dns.example.com/v1", - "rel": "self" - } - ], - "status": "DEPRECATED" - }, { - "id": "v2", - "links": [ - { - "href": "https://dns.example.com/v2", - "rel": "self" - } - ], - "status": "CURRENT" - }] + "versions": { + "values": [{ + "id": "v1", + "links": [ + { + "href": "https://dns.example.com/v1", + "rel": "self" + } + ], + "status": "DEPRECATED" + }, { + "id": "v2", + "links": [ + { + "href": "https://dns.example.com/v2", + "rel": "self" + } + ], + "status": "CURRENT" + }] + } } diff --git a/shade/tests/unit/test_caching.py b/shade/tests/unit/test_caching.py index f9e7a7e7a..4a7f629aa 100644 --- a/shade/tests/unit/test_caching.py +++ b/shade/tests/unit/test_caching.py @@ -107,7 +107,6 @@ class TestMemoryCache(base.RequestsMockTestCase): self.assertIsInstance(self.cloud, shade.OpenStackCloud) def test_list_projects_v3(self): - self._add_discovery_uri_call() project_one = self._get_project_data() project_two = self._get_project_data() project_list = [project_one, project_two] @@ -312,7 +311,6 @@ class TestMemoryCache(base.RequestsMockTestCase): self.assert_calls() def test_list_users(self): - self._add_discovery_uri_call() user_data = self._get_user_data(email='test@example.com') self.register_uris([ dict(method='GET', diff --git a/shade/tests/unit/test_domains.py b/shade/tests/unit/test_domains.py index c63f045dd..90cf6874b 100644 --- a/shade/tests/unit/test_domains.py +++ b/shade/tests/unit/test_domains.py @@ -32,7 +32,6 @@ class TestDomains(base.RequestsMockTestCase): append=append, base_url_append=base_url_append) def test_list_domains(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() self.register_uris([ dict(method='GET', uri=self.get_mock_url(), status_code=200, @@ -46,7 +45,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_get_domain(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() self.register_uris([ dict(method='GET', @@ -59,7 +57,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_get_domain_with_name_or_id(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() response = {'domains': [domain_data.json_response['domain']]} self.register_uris([ @@ -79,7 +76,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_create_domain(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data(description=uuid.uuid4().hex, enabled=True) self.register_uris([ @@ -99,7 +95,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_create_domain_exception(self): - self._add_discovery_uri_call() with testtools.ExpectedException( shade.OpenStackCloudException, "Failed to create domain domain_name" @@ -110,7 +105,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_delete_domain(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() new_resp = domain_data.json_response.copy() new_resp['domain']['enabled'] = False @@ -125,7 +119,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_delete_domain_name_or_id(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() new_resp = domain_data.json_response.copy() new_resp['domain']['enabled'] = False @@ -148,7 +141,6 @@ class TestDomains(base.RequestsMockTestCase): # to update domain even though it is called via delete_domain. This # should be fixed in shade to catch either a failure on PATCH, # subsequent GET, or DELETE call(s). - self._add_discovery_uri_call() domain_data = self._get_domain_data() new_resp = domain_data.json_response.copy() new_resp['domain']['enabled'] = False @@ -167,7 +159,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_update_domain(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data( description=self.getUniqueString('domainDesc')) domain_resource_uri = self.get_mock_url(append=[domain_data.domain_id]) @@ -188,7 +179,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_update_domain_name_or_id(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data( description=self.getUniqueString('domainDesc')) domain_resource_uri = self.get_mock_url(append=[domain_data.domain_id]) @@ -211,7 +201,6 @@ class TestDomains(base.RequestsMockTestCase): self.assert_calls() def test_update_domain_exception(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data( description=self.getUniqueString('domainDesc')) self.register_uris([ diff --git a/shade/tests/unit/test_endpoints.py b/shade/tests/unit/test_endpoints.py index 762341115..8dbdbc499 100644 --- a/shade/tests/unit/test_endpoints.py +++ b/shade/tests/unit/test_endpoints.py @@ -127,7 +127,6 @@ class TestCloudEndpoints(base.RequestsMockTestCase): self.assert_calls() def test_create_endpoint_v3(self): - self._add_discovery_uri_call() service_data = self._get_service_data() public_endpoint_data = self._get_endpoint_v3_data( service_id=service_data.service_id, interface='public', @@ -251,7 +250,6 @@ class TestCloudEndpoints(base.RequestsMockTestCase): self.op_cloud.update_endpoint, 'endpoint_id') def test_update_endpoint_v3(self): - self._add_discovery_uri_call() service_data = self._get_service_data() endpoint_data = self._get_endpoint_v3_data( service_id=service_data.service_id, interface='admin', @@ -289,7 +287,6 @@ class TestCloudEndpoints(base.RequestsMockTestCase): self.assert_calls() def test_list_endpoints(self): - self._add_discovery_uri_call() endpoints_data = [self._get_endpoint_v3_data() for e in range(1, 10)] self.register_uris([ dict(method='GET', @@ -317,7 +314,6 @@ class TestCloudEndpoints(base.RequestsMockTestCase): self.assert_calls() def test_search_endpoints(self): - self._add_discovery_uri_call() endpoints_data = [self._get_endpoint_v3_data(region='region1') for e in range(0, 2)] endpoints_data.extend([self._get_endpoint_v3_data() @@ -378,7 +374,6 @@ class TestCloudEndpoints(base.RequestsMockTestCase): self.assert_calls() def test_delete_endpoint(self): - self._add_discovery_uri_call() endpoint_data = self._get_endpoint_v3_data() self.register_uris([ dict(method='GET', diff --git a/shade/tests/unit/test_groups.py b/shade/tests/unit/test_groups.py index 80b5aa2af..a2525e2f1 100644 --- a/shade/tests/unit/test_groups.py +++ b/shade/tests/unit/test_groups.py @@ -18,7 +18,6 @@ class TestGroups(base.RequestsMockTestCase): def setUp(self, cloud_config_fixture='clouds.yaml'): super(TestGroups, self).setUp( cloud_config_fixture=cloud_config_fixture) - self._add_discovery_uri_call() self.addCleanup(self.assert_calls) def get_mock_url(self, service_type='identity', interface='admin', diff --git a/shade/tests/unit/test_identity_roles.py b/shade/tests/unit/test_identity_roles.py index d7f676c83..0767345e8 100644 --- a/shade/tests/unit/test_identity_roles.py +++ b/shade/tests/unit/test_identity_roles.py @@ -44,7 +44,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): qs_elements) def test_list_roles(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='GET', @@ -56,7 +55,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_get_role_by_name(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='GET', @@ -72,7 +70,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_get_role_by_id(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='GET', @@ -88,7 +85,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_create_role(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='POST', @@ -110,7 +106,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_delete_role_by_id(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='GET', @@ -126,7 +121,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_delete_role_by_name(self): - self._add_discovery_uri_call() role_data = self._get_role_data() self.register_uris([ dict(method='GET', @@ -142,7 +136,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assert_calls() def test_list_role_assignments(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() user_data = self._get_user_data(domain_id=domain_data.domain_id) group_data = self._get_group_data(domain_id=domain_data.domain_id) @@ -177,7 +170,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): matchers.Equals(project_data.project_id)) def test_list_role_assignments_filters(self): - self._add_discovery_uri_call() domain_data = self._get_domain_data() user_data = self._get_user_data(domain_id=domain_data.domain_id) role_data = self._get_role_data() @@ -208,7 +200,6 @@ class TestIdentityRoles(base.RequestsMockTestCase): self.assertThat(ret[0].domain, matchers.Equals(domain_data.domain_id)) def test_list_role_assignments_exception(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='role_assignments'), diff --git a/shade/tests/unit/test_limits.py b/shade/tests/unit/test_limits.py index 8ccb3adbd..6bc7ce710 100644 --- a/shade/tests/unit/test_limits.py +++ b/shade/tests/unit/test_limits.py @@ -25,7 +25,6 @@ class TestLimits(base.RequestsMockTestCase): @mock.patch.object(shade.OpenStackCloud, 'nova_client') def test_other_get_compute_limits(self, mock_nova): - self._add_discovery_uri_call() project = self.mock_for_keystone_projects(project_count=1, list_get=True)[0] self.op_cloud.get_compute_limits(project.project_id) diff --git a/shade/tests/unit/test_project.py b/shade/tests/unit/test_project.py index 1751376d8..8c5bc678a 100644 --- a/shade/tests/unit/test_project.py +++ b/shade/tests/unit/test_project.py @@ -55,7 +55,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_create_project_v3(self,): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ @@ -107,7 +106,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_delete_project_v3(self): - self._add_discovery_uri_call() project_data = self._get_project_data(v3=False) self.register_uris([ dict(method='GET', @@ -122,7 +120,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_update_project_not_found(self): - self._add_discovery_uri_call() project_data = self._get_project_data() self.register_uris([ dict(method='GET', @@ -175,7 +172,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_update_project_v3(self): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ @@ -205,7 +201,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_list_projects_v3(self): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ @@ -223,7 +218,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_list_projects_v3_kwarg(self): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ @@ -242,7 +236,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_list_projects_search_compat(self): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ @@ -258,7 +251,6 @@ class TestProject(base.RequestsMockTestCase): self.assert_calls() def test_list_projects_search_compat_v3(self): - self._add_discovery_uri_call() project_data = self._get_project_data( description=self.getUniqueString('projectDesc')) self.register_uris([ diff --git a/shade/tests/unit/test_quotas.py b/shade/tests/unit/test_quotas.py index 16032e2c5..cdf44f0b4 100644 --- a/shade/tests/unit/test_quotas.py +++ b/shade/tests/unit/test_quotas.py @@ -23,7 +23,6 @@ class TestQuotas(base.RequestsMockTestCase): def setUp(self, cloud_config_fixture='clouds.yaml'): super(TestQuotas, self).setUp( cloud_config_fixture=cloud_config_fixture) - self._add_discovery_uri_call() @mock.patch.object(shade.OpenStackCloud, 'nova_client') def test_update_quotas(self, mock_nova): diff --git a/shade/tests/unit/test_role_assignment.py b/shade/tests/unit/test_role_assignment.py index 324920467..782235966 100644 --- a/shade/tests/unit/test_role_assignment.py +++ b/shade/tests/unit/test_role_assignment.py @@ -361,7 +361,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_user_project(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -437,7 +436,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_user_project_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -509,7 +507,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_group_project(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -583,7 +580,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_group_project_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -655,7 +651,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_user_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -801,7 +796,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_user_domain_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -939,7 +933,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_group_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1085,7 +1078,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_role_group_domain_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1477,7 +1469,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_user_project(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1537,7 +1528,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_user_project_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1623,7 +1613,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_group_project(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1683,7 +1672,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_group_project_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1769,7 +1757,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_user_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -1883,7 +1870,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_user_domain_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2049,7 +2035,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_group_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2163,7 +2148,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_role_group_domain_exists(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2329,7 +2313,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_no_role(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2348,7 +2331,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_no_role(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2367,7 +2349,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_no_user_or_group_specified(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2382,7 +2363,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_no_user_or_group_specified(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2397,7 +2377,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_no_user_or_group(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2418,7 +2397,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_no_user_or_group(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2439,7 +2417,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_both_user_and_group(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2465,7 +2442,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_both_user_and_group(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2491,7 +2467,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_both_project_and_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2539,7 +2514,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_both_project_and_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2592,7 +2566,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_no_project_or_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2621,7 +2594,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_no_project_or_domain(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2656,7 +2628,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_grant_bad_domain_exception(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), @@ -2680,7 +2651,6 @@ class TestRoleAssignment(base.RequestsMockTestCase): self.assert_calls() def test_revoke_bad_domain_exception(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self.get_mock_url(resource='roles'), diff --git a/shade/tests/unit/test_services.py b/shade/tests/unit/test_services.py index 0226cc2c7..d1ffe3852 100644 --- a/shade/tests/unit/test_services.py +++ b/shade/tests/unit/test_services.py @@ -67,7 +67,6 @@ class CloudServices(base.RequestsMockTestCase): self.assert_calls() def test_create_service_v3(self): - self._add_discovery_uri_call() service_data = self._get_service_data(name='a service', type='network', description='A test service') self.register_uris([ @@ -103,7 +102,6 @@ class CloudServices(base.RequestsMockTestCase): 'service_id', name='new name') def test_update_service_v3(self): - self._add_discovery_uri_call() service_data = self._get_service_data(name='a service', type='network', description='A test service') request = service_data.json_request.copy() @@ -134,7 +132,6 @@ class CloudServices(base.RequestsMockTestCase): self.assert_calls() def test_list_services(self): - self._add_discovery_uri_call() service_data = self._get_service_data() self.register_uris([ dict(method='GET', @@ -153,7 +150,6 @@ class CloudServices(base.RequestsMockTestCase): self.assert_calls() def test_get_service(self): - self._add_discovery_uri_call() service_data = self._get_service_data() service2_data = self._get_service_data() self.register_uris([ @@ -201,7 +197,6 @@ class CloudServices(base.RequestsMockTestCase): self.assert_calls() def test_search_services(self): - self._add_discovery_uri_call() service_data = self._get_service_data() service2_data = self._get_service_data(type=service_data.service_type) self.register_uris([ @@ -263,7 +258,6 @@ class CloudServices(base.RequestsMockTestCase): self.assert_calls() def test_delete_service(self): - self._add_discovery_uri_call() service_data = self._get_service_data() self.register_uris([ dict(method='GET', diff --git a/shade/tests/unit/test_usage.py b/shade/tests/unit/test_usage.py index 10948e14f..8a7710a2c 100644 --- a/shade/tests/unit/test_usage.py +++ b/shade/tests/unit/test_usage.py @@ -22,7 +22,6 @@ class TestUsage(base.RequestsMockTestCase): @mock.patch.object(shade.OpenStackCloud, 'nova_client') def test_get_usage(self, mock_nova): - self._add_discovery_uri_call() project = self.mock_for_keystone_projects(project_count=1, list_get=True)[0] start = end = datetime.datetime.now() diff --git a/shade/tests/unit/test_users.py b/shade/tests/unit/test_users.py index 18b09f334..8ab9ac6d7 100644 --- a/shade/tests/unit/test_users.py +++ b/shade/tests/unit/test_users.py @@ -67,7 +67,6 @@ class TestUsers(base.RequestsMockTestCase): self.assert_calls() def test_create_user_v3(self): - self._add_discovery_uri_call() user_data = self._get_user_data( domain_id=uuid.uuid4().hex, description=self.getUniqueString('description')) @@ -149,7 +148,6 @@ class TestUsers(base.RequestsMockTestCase): password=user_data.password) def test_delete_user(self): - self._add_discovery_uri_call() user_data = self._get_user_data(domain_id=uuid.uuid4().hex) user_resource_uri = self._get_keystone_mock_url( resource='users', append=[user_data.user_id]) @@ -167,7 +165,6 @@ class TestUsers(base.RequestsMockTestCase): self.assert_calls() def test_delete_user_not_found(self): - self._add_discovery_uri_call() self.register_uris([ dict(method='GET', uri=self._get_keystone_mock_url(resource='users'), @@ -175,7 +172,6 @@ class TestUsers(base.RequestsMockTestCase): self.assertFalse(self.op_cloud.delete_user(self.getUniqueString())) def test_add_user_to_group(self): - self._add_discovery_uri_call() user_data = self._get_user_data() group_data = self._get_group_data() @@ -197,7 +193,6 @@ class TestUsers(base.RequestsMockTestCase): self.assert_calls() def test_is_user_in_group(self): - self._add_discovery_uri_call() user_data = self._get_user_data() group_data = self._get_group_data() @@ -221,7 +216,6 @@ class TestUsers(base.RequestsMockTestCase): self.assert_calls() def test_remove_user_from_group(self): - self._add_discovery_uri_call() user_data = self._get_user_data() group_data = self._get_group_data()