a4066a86b5
From the API-WG spec, there are two common patterns for service URLs that can be interpreted. Trailing project_id and a string that starts with v. If the project_id is in the URL, it needs to be removed before discovery can happen, but it needs to be put back on to the url found via discovery. If the endpointin the catalog has a version, and it matches the version we're asking for, then we don't need to go hunting for the unversioned doc. Also, in the EndpointData we're collecting, we want to grab microversion info, since we're already there in the discovery doc. There is one behavior change that can be seen in the tests. If the attempt at an unversioned discovery endpoint fails, we fall back to the url from the catalog ... but we attempt to get a discovery document from it because we need the metadata for microversions. The catalog URL should be returned as the endpoint even if the second discovery call attempt succeeds, so the user-facing interface is the same - there will just be, in some cases, an additional URL fetch behind the scenes. Change-Id: I2a036d65e4f7dba6f50daf6a0ce4589ee59ae95f
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
# 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.
|
|
|
|
"""
|
|
Produce keystone compliant structures for use in testing.
|
|
|
|
They are part of the public API because they may be relied upon to generate
|
|
test tokens for other clients. However they should never be imported into the
|
|
main client (keystoneauth or other). Because of this there may be dependencies
|
|
from this module on libraries that are only available in testing.
|
|
"""
|
|
|
|
from keystoneauth1.fixture.discovery import * # noqa
|
|
from keystoneauth1.fixture import exception
|
|
from keystoneauth1.fixture import v2
|
|
from keystoneauth1.fixture import v3
|
|
|
|
|
|
FixtureValidationError = exception.FixtureValidationError
|
|
V2Token = v2.Token
|
|
V3Token = v3.Token
|
|
V3FederationToken = v3.V3FederationToken
|
|
|
|
__all__ = ('DiscoveryList',
|
|
'FixtureValidationError',
|
|
'V2Discovery',
|
|
'V3Discovery',
|
|
'V2Token',
|
|
'V3Token',
|
|
'V3FederationToken',
|
|
'VersionDiscovery',
|
|
)
|