Use get_discovery from keystoneauth

If we use the get_discovery call, we'll re-use the keystoneauth cache.
This removes the last stupid extra discovery call.

While doing this, noticed the dns version discovery was wrong, but we
weren't noticing because adapter magic. Fix it.

Change-Id: I01d07554d094fffd498f21a9291710c8eb0041f6
This commit is contained in:
Monty Taylor 2017-06-06 16:59:00 -05:00
parent 752d01eb27
commit 766d6227a3
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
15 changed files with 79 additions and 146 deletions

View File

@ -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']

View File

@ -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(

View File

@ -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"
}]
}
}

View File

@ -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',

View File

@ -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([

View File

@ -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',

View File

@ -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',

View File

@ -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'),

View File

@ -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)

View File

@ -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([

View File

@ -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):

View File

@ -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'),

View File

@ -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',

View File

@ -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()

View File

@ -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()