8bbdb1660f
Moves authentication from rest_client to an external auth_provider, assigned to the client by the client manager. The auth provider can decorate a request based on credentials (coming from the client manager) and filters (region, service, endpoint_type) given by the client. The auth provider can also return the raw auth_data, which in the Keystone implementation is a tuple (token, auth_data). The auth provider allows mixing multiple credentials when decorating a request, possibly using empty or invalid credentials, to facilitate negative tests. The auth provider caches auth data, so that all API requests for a specific set of credentials only require a single call to obtain a token, unless the token expires or is forcefully deleted from the auth provder. Two implementations of the auth provider are included: Keystonev2 and Keystonev3. The Manager object behaves as factory of auth_providers, building the correct one based on the configured auth_version, and on the interface type (JSON or XML). Fixes endpoint selection for v3 auth. Drops unused basic_auth. Extends TokenClients to provide both token and auth data, and accept different combinations of credentials for v3. Removes redundant server_client_v3_auth. Adapts tempest unit tests to work with modified rest client. Introduces a configuration parameter for authentication version to be used. That is used when instantiating the client manager, and it applies to all clients used by api tests. Next steps (next patches): - move to credentials as dict (as opposed to tuple) - expose a get_client method from the client manager and create clients only when requested - remove redundant CustomizedHeader object storage clients - supports keystone v3 in tenant isolation - use Auth Provider in scenario tests - use Auth Provider in CLI tests - implement parsing of catalog XML format (?) Partially implements: bp multi-keystone-api-version-tests Change-Id: Icfa921e9051c01f339f8d2471b12d6ec950cc456 |
||
---|---|---|
.. | ||
config | ||
check_logs.py | ||
colorizer.py | ||
find_stack_traces.py | ||
generate_sample.sh | ||
install_venv_common.py | ||
install_venv.py | ||
pretty_tox_serial.sh | ||
pretty_tox.sh | ||
skip_tracker.py | ||
tempest_auto_config.py | ||
verify_tempest_config.py | ||
with_venv.sh |