add bp:multi-keystone-api-version-tests
Blueprint to add support for keystone v3 throughout tempest. Change-Id: Ib9ff5ea56d708db7fd310a4f08dadacfc0b80f54
This commit is contained in:
parent
7c6f296c2c
commit
6ec2ea04b4
|
@ -0,0 +1,95 @@
|
||||||
|
::
|
||||||
|
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
..
|
||||||
|
This template should be in ReSTructured text. The filename in the git
|
||||||
|
repository should match the launchpad URL, for example a URL of
|
||||||
|
https://blueprints.launchpad.net/tempest/+spec/awesome-thing should be named
|
||||||
|
awesome-thing.rst . Please do not delete any of the sections in this
|
||||||
|
template. If you have nothing to say for a whole section, just write: None
|
||||||
|
For help with syntax, see http://sphinx-doc.org/rest.html
|
||||||
|
To test out your formatting, see http://www.tele3.cz/jbar/rest/rest.html
|
||||||
|
|
||||||
|
===================================================
|
||||||
|
Tempest support for multiple keystone API versions
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/tempest/+spec/multi-keystone-api-version-tests
|
||||||
|
|
||||||
|
Decouple tempest from keystone version specifics and run tests with keystone v3
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Tempest code is tightly coupled with keystone V2 specific implementations.
|
||||||
|
Common classes (such as rest client and tenant isolation), test base classes
|
||||||
|
and test themselves all assume the identity service is provided by a keystone
|
||||||
|
v2 endpoint.
|
||||||
|
Tempest shall be able to run with a keystone V3 identity service, and newer versions
|
||||||
|
as they become available.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
A new configuration flag is introduced to specify the auth version to be used.
|
||||||
|
A number of refactors are required to achieve this and make sure we don't need
|
||||||
|
to change test code again when moving to different keystone API versions.
|
||||||
|
|
||||||
|
Authentication are factored out in an authentication provider. Credentials are handled
|
||||||
|
via a dedicated class, provided to tests by a credential manager.
|
||||||
|
Clients managers receive credentials and are the sole responsible for instantiating
|
||||||
|
clients and provide them to tests. At the moment client managers instantiate all
|
||||||
|
available clients when created. This is unnecessary, and it leads to issues when not
|
||||||
|
all openstack services are available for test. Client managers are thus changed to
|
||||||
|
lazy instantiation of clients.
|
||||||
|
|
||||||
|
Areas affected by refactor:
|
||||||
|
- Rest client: move auth code to an external auth provider
|
||||||
|
- Client managers: work with a Credentials class. Lazy load of clients
|
||||||
|
- Tests base classes: adapt where needed to modified rest client, client manager and
|
||||||
|
credentials
|
||||||
|
- Tests: adapt where needed to modified rest client, client manager and credentials
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
We could change all the code in place - without refactoring - adding checks for the
|
||||||
|
configured auth version. This would still require touching a considerable chunk
|
||||||
|
of tempest code, without the benefit for future keystone versions.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Andrea Frittoli <andrea.frittoli@hp.com>
|
||||||
|
|
||||||
|
Milestones
|
||||||
|
----------
|
||||||
|
|
||||||
|
Target Milestone for completion:
|
||||||
|
Juno-1
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
- Move auth from rest_client to auth provider
|
||||||
|
- Provide unit tests for the new auth class
|
||||||
|
- Refactor Manager, Credentials class everywhere
|
||||||
|
- Client Manager provide client lazy load
|
||||||
|
- Tenant isolation support for V3
|
||||||
|
- Provide multi auth-version for API tests
|
||||||
|
- Provide multi auth-version for scenario tests
|
||||||
|
- Provide multi auth-version for CLI tests
|
||||||
|
- Provide multi auth-version for 3rd part tests
|
||||||
|
- Provide multi auth-version for stress framework
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
- Python bindings and CLI are not yet all V3 ready. Some of the work in this blueprint
|
||||||
|
will have to be postponed until this is fixed
|
Loading…
Reference in New Issue