This patch addresses following facts:
1. common manager methods among plugins should be
defined in Tempest.
2. methods should be consistent with names and
parameters.
3. Add docstring about method usage and parameter.
Implements: blueprint tempest-scenario-manager-stable
Signed-off by: Soniya Vyas<svyas@redhat.com>
Change-Id: I191c8861c9ec29b78c9c8ad12ff2ddf3ffbf4db1
This was a backwards incompatible change that breaks tempest's stability
guarantee on tempest.config. While the option was marked as deprecated,
oslo.config does not alias deprecations in code. The fact this patch
had to update unit tests was an indication of this. This breaks anyone
who consumes these options via code. We can only land something like
this after we add aliasing to oslo.config for deprecations.
This reverts commit 1afca56b05.
Change-Id: I91600d8fc49db670b0f78ffd0094575fbfa0ca63
Tempest is defining stable interface of service clients
handling in lib but need to maintain the old interface
tempest.manager.get_auth_provider() as it is used by many
plugins and provide them a grace period to move to
stable interface.
This interface got broken while doing service clients work.
This patch fixing the same and fix gate for plugin using
this unstable interface.
Change-Id: I5733f20f5fba3c1aa1318405f5af976513eebf14
In https://review.openstack.org/#/c/294425/ a new config
section "service_clients" is added which hosts parameters
common to all service clients. ca_certificates_file and
disable_ssl_certificate_validation are also common to all
service clients, so this is to move them from section identity
to section service_clients
Change-Id: I296f1080ce89f0cdceae1c476866b215393b2605
Migrate the service_clients module to tempest.lib.services.clients.
Migrate related unit tests as well.
The clients module atm imports plugin.py from Tempest which is not
allowed via hacking to avoid cirtular dependencies.
If there is no way around this, I will have to remove the self
registration of the service clients from plugins, and ask the
plugins to do the registration themselves - which is a pity. Ideas?
Change-Id: I40e3478f69af62a7cdc14fa65ed21dcfbbe10e72
Remove CONF dependencies from the client manager base class,
to make it useful to external consumers (such as plugins).
The ultimate target is to have a manager which can be used with
as little as possible setup, which only instantiates the clients
which are actually needed by the test, and which allows to register
new service clients defined in plugins.
Since plugins already import both manager.Manager and
clients.Manager, we maintain for now both classes with their names.
The plan is to migrate the 6 core service client groups to
manager.Manager, so that those clients are available to all tests
along with plugin clients. That requires a few steps. I'm doing
changes in clients.Manager for now so that it's easier to review.
The result of this first step is:
- manager.Manager is moved to manager_lib.Manager and does not
depend on CONF anymore, nor on any tempest unstable class.
It does not provide any client yet.
Add unit test coverage for this class.
- manager.Manager is still provided with backward compatible
interface for plugins benefit.
Change-Id: Ic9ccc7037d15cdd4c6f1749eaeda13d4e7ee0114
Partially-implements: bp client-manager-refactor
There is a number of exceptions available in tempest.lib which are duplicated
in the exceptions module in tempest. They are all identitical, except for one:
TimeoutException. The tempest.lib version inherits from RestClientException,
while the tempest version is a TempestException. The only class that should
use the former is the RestClient (and derivative), while it is used by ssh
client as well. Changing the type of exception raised by ssh.py would be a
backward incompatible change, so I think we cannot change this now.
Change-Id: I98ad80266b00f7d0b9d269a516866d81312aa834
Dynamic credential providers generate TestResource objects, which
behave like Credentials but also include network resources.
We used to pass those directly into client managers, but that has
several issues: the interface of the client manager is confusing,
because it accepts two different type of objects in one parameter.
Having the client manager depending on the dynamic credential provider
is a problem because in turn that depends on the client manager,
which may lead to circular dependencies when trying to make those
stable interfaces for tempest.lib.
Finally TestResources seem to confused developers, since a number of tests
ignored the possibility of getting Credential fields from TestResources
directly, and went through the inner credentials atttribute.
I think the best approach for now is to pass auth.Credentials objects
only into the client manager. The client manager does not use the
network resources anyways.
We plan to refactor the link between credential provider and network
resources anyways, so it's better to have that outside of client
managers.
Change-Id: I71d4587bf0b640d05d0f78fb84364ce4d2d021f3
Partially-implements: bp client-manager-refactor
Adding the ability to select the scope of the authentication.
When using identity v3, this makes it possible to use either
project scope or domain scope regardless of whether a project
is included or not in the Credentials object.
The interface to auth for most tests is the AuthProvider.
The scope is defined in the constructor of the AuthProvider,
and it can also be changed at a later time via 'set_scope'.
In most cases a set of credentials will use the same scope.
Test credentials will use project scope. Admin test credentials
may use domain scope on identity API alls, or project scope on
other APIs. Since clients are initialised with an auth provider
by the client manager, we extend the client manager interface to
include the scope. Tests and Tempest parts that require a domain
scoped token will instanciate the relevant client manager with
scope == 'domain', or set the scope to domain on the 'auth_provider'.
The default scope in the v3 auth provider is 'projet;, which me must
do for backward compatibility reasons (besides it's what most tests
expects. We also filter the list of attributes based on scope, so
that tests or service clients may request a different scope.
The original behaviour of the token client is unchanged:
all fields passed to it towards the API server. This
maintains backward compatibility, and leaves full control
for test that want to define what is sent in the token
request.
Closes-bug: #1475359
Change-Id: I6fad6dd48a4d306f69da27c6793de687bbf72add
Now that tempest_lib code is copied back into tempest, stop using
tempest_lib in tempest, and start using the copied code.
Remove the dependency to tempest_lib from requirements, and drop
the script to use tempest_lib in tempest. Add os-testr to the
test-requirements.
Partially implements bp tempest-lib-reintegration
Change-Id: I21ab5fe6349f72c98ac9f960a29bf62e813f8b1b
There is a lot of H404/405 violations in Tempest now, and that leads
difficult to migrate the code to tempest-lib or the other projects'
repos. This patch fixes these violations for remaining.
Change-Id: I3abac40ebb33836980c119d59bc97f035b213c0a
Separate helpers methods to build credentials, credential providers and
client managers that depend on configuration. They are all moved to
the common.credentials module to achieve two objectives:
- prepare credential provider module to move to tempest-lib
- avoid circular dependencies
There are still dependencies to CONF in the credential providers,
removing all of them would make the patch too large; but there is
with this patch a single place where all relevant CONF parameters can
be looked up and passed into the credential providers.
Partially-implements: bp tempest-library
Change-Id: I351f86f0570070105bbf24f2d904e917feea6e57
Stop validating pre-provisioned credentials when requested
within the credential provider. This drops the need for
estabilishing connection to the identity service, and
reduces the amount of configuration that has to be passed
into the credentials provider for it to work.
This work is in preparation to the migration of the
pre-provisioned credentials provider to tempest-lib.
Change-Id: I825a01ff72cb3a937aafeb2104333db7113ef4d0
Rename accounts to preprovisioned accounts and related
unit tests as well, in preparation for migration to
tempest-lib
Partially-addresses: bp tempest-library
Change-Id: Iabf4b42e1beadb0540411b7a16cd494b081aabc5
auth has been migrated to tempest-lib.
Fix all auth imports to use tempest-lib. Drop auth and related
unit tests.
Use token client from tempest-lib as well.
Depends-on: Ie6435b4f3a367b0a8cec68f21c0b4f5f61d6b688
Change-Id: I8c2772d9fb42d352f4a1d3e74e20ce6e8f483559
Define a new class TestResources which embeds credentials and
their network resources.
This makes it easier to obtain network resources for a set
of credentials in case of preprovisioned accounts.
Partially-implements: bp test-accounts-continued
Change-Id: Ie3d5e2471db7371e1109fd24a716e7c449843904
Prepare token clients for migration to tempest-lib together
with auth.py. Removing all the dependencies from CONF, and thus
introducing new parameters in auth providers as well.
Change-Id: I7c03b07ec1b9268fea68125b5bbfa8fe0ff75b71
To move Token clients to tempest-lib, this patch moves
CONF values from Token clients to the client setting and classes
instantiate Token clients.
Also making necessary changes in tests files.
Change-Id: Ie405ba6a71d29258e99d2f0b68afb013a9619e9b
We used to run JSON and XML tests. XML has been dropped now,
but still in the code there are remains of the logic to switch
between JSON and XML. Cleaning them up.
Partially-implements: bp/resource-cleanup
Change-Id: I39ecfbd99861136a6a2adc3ce56bfdbba96d5c9b
Credential types available in configuration, and how to parse
them and validate them is currently embedded in the Credentials
class hierarchy.
Move the entire logic to cred_provider, in preparation for the
migration of the auth module to tempest-lib.
The pre-provisioned account credential provider relied on
the list of configured field to find the hash for a set of
credentials. Changed that to use the list of attributes with
which the credentials were initially setup.
Change-Id: Ic3ff15799f016277e6eb59c53cf8f24f6a7be9c9
Client type was designed to allow the auth module to consume
the official keystone client for tests based on the official clients.
Scenario tests have been migrated to tempest client, and CLI tests
are being moved out of tempest, and they don't need an external
auth provider anyways.
There's no need for client_type anymore, removing it.
Change-Id: I6eebd80ea2259b72e8013e65e9a83615f86a3f84
Partially-implemnts: bp/tempest-client-scenarios
auth_version is used to get defaul credentials as well as to
select the AuthProvider class. If credentials of an API version
different from the configured one are used, a mismatch happens.
Instantiating the AuthProvider class that corresponds to the
version of API represented by the credentials object.
Closes-Bug: #1369557
Change-Id: I1ed6da90ce0abed805cf39190cb1ac3baa3f63b6
Multiversion auth part5
Refactor mangers, utils and test base classes to use Credentials instead
of username, password and tenant_name.
Makes changes to tests where needed - some of the tests create their own
managers.
Partially implements: bp multi-keystone-api-version-tests
Change-Id: If05f5704d90390362cebf45e2664f2bfbc72268d
Object storage test uses get_auth_provider(), it should
just take the existing auth_provider instead.
Partially implements: bp multi-keystone-api-version-tests
Change-Id: I790c22becb28ef8c2946efcc4b1c47f8e295fb74
Multiversion auth part3
Refactor client managers to inherit from a common manager.Manager
class. Moves scenario base manager to clients.py.
Partially implements: bp multi-keystone-api-version-tests
Change-Id: Iddacbaa4593b7cb4d32538a5cade814751c180e0
This commit removes that last uses of config without using the global
CONF object.
Partially implements bp config-cleanup
Change-Id: Idc649993b7cd5a45282fde827b2b08f6fb19ab4d
We don't need to have the vim headers in each source files. We can set
it in our vimrc file instead. Also if set incorrectly, gate (pep8 check)
will catch the mistakes.
More discussions:
http://lists.openstack.org/pipermail/openstack-dev/2013-October/017353.html
Change-Id: I43703e2289212389c7841f44691ae7849ed1f505
Closes-Bug: #1229324
one of the problems we've got with tempest is the fact that config
loading is tied into the class hierarchy. However there is no
reason why it should be. If we instead create a config proxy
object we can lazy load the actual config when we are executing,
and not do it at import time.
This could use future iteration, but it does a huge job in
removing config from the object inheritance tree which massively
simplifies our ability to use config variables throughout the code.
Change-Id: I9b1bbfe231c85c01938bd68be4e5974bd24130d6
Some files still use trademark OpenStack LLC in header, which
should be changed to OpenStack Foundation.
NOTE: tools/install_venv.py is not synced from oslo-incubator, so
it is modified too.
Change-Id: I0084684ff5225076291fea857eb010d638291bd0
Fixes-Bug: #1214176
* Allow the generic resource deletion (thing.delete) to
operate on resources allocated in the setUpClass-es too.
* test_images_whitebox.py is using the python
client libraries as the scenario tests.
* Remove the not used part of the tempest/manager.py
Change-Id: I980a70d22dc7a3a65a26a8197c7888b125eb3b05
hacking 0.6 brings in H501, don't use locals() in strings, as it
has the ability to hide errors. This fixes it in preparation of
landing hacking 0.6.
Change-Id: I7972befbb945a27ed8aa601975205736038eefa2
The auth strategy selection is removed
since it is confusing and other authentication
methods are not supported.
Re-commit the files, because the previous update is not correct.
Implements: remove basic_auth strategy
Fixes: bug #1180972
Change-Id: I498be0b1e3eeea397e1f164caffe7cc88be0ceda
Now we can get tempest log file with options in run_tests.sh.
This adds log.py and enables to configure log format more flexibly
using configuration file.
This adds a LoggerAdaptor and a Formatter to output each test name
to log lines.
Implements: blueprint add-logging-configuration
Change-Id: I88cf18bb8bbc152e62ac83a9c7dc26067b7a11bd
this adds the scenario directory as part of the tempest
restructure, and moves scenario tests over to the new directory.
To ensure we got everything that used the old DefaultClient and
DefaultManager classes these are refactored out into the scenario
directory as OfficialClient and OfficialClientManager.
The Nework Smoke test base class becomes NetworkScenarioTest, and
the two test files that used that come over to scenario directory
in the process.
These are all done with a single tempest/scenario/manager.py file
for now. As the scenario tests grow we'll figure out better
refactorings there.
This gives us 4 scenario test files as a starting point for future
scenario work.
Fixed remaining refactor issues with network tests
Clean up the documentation on the extracted classes
Part of bp:tempest-repo-restructure
Change-Id: I143b282c58cfac3bf979ba5ac68226155beff343
Added logic to test_quotas.py file so as to support XML calls.
Hence added exclusive client files for XML. Also modified JSON client
file, manager.py and clients.py according to new addition of
XML support.
Change-Id: Ibbdd87c2d1bb4e26ff0f77441dc91d71abc00d7f
Implements: blueprint add-xml-support
* Credentials are moved to the identity section
* If the compute admin user defined in the compute-admin section it takes precedence
* The region just defined in the identity section
Change-Id: I1241116ce9312c90656a78235a4a91dd31460761
* Remove identity-admin section
* Remove network-admin section
* Remove image credentials
* "admin" word changed to "identity" where it makes more sense
The credentials will be moved to the identity section, in a future
commit.
Change-Id: Id443ea12d32f1de78487084e7364774efa838aec
Deprecates the piecemeal identity URL buildup and
replaces with a simple uri configuration setting.
Gets rid of the /tokens path stuff that was not
necessary to have in configuration file.
Change-Id: I5e80177073f756781f813438d054fede2d6334a3
* Breakout of prior large patchset. This patch only adds the
configurability of SSL cert validation in all the clients.
Change-Id: I48385eabd617d19705f3f2bff4820566547be56d
Added logic to test_console_output.py file so as to support XML calls.
Hence added exclusive client file for XML. Also modified JSON client
file and openstack.py according to new addition of XML support.
Change-Id: Ib1fab3e3dc97d3b61ceb60e0d846c4b36f472932
Implements: blueprint add-xml-support
* Added test_network_basic_ops, a port of the devstack exercise
script quantum-adv-test.sh.
* Tenant network connectivity can be tested by setting
the 'tenant_networks_reachable' key in tempest.conf to 'true'.
* Public (floating ip) connectivity can be tested by setting the
'public_network_id' key in tempest.conf.
* Addresses bug 1043980
Change-Id: I506518c431a8da0b91e3044f2a6aabce48081d93
* Adds a client for the 'os-quota-sets' extension
* Adds basic Admin and non-admin tests for GET and PUT operations for the
Quotas API
* Adds some tests to check Quota enforcement for create server (bug 1034453)
Fixes LP Bug #1040760
Fixes LP Bug #1034453
Change-Id: I7eb0041dbc80d8733bb2df54e4fc4755cfe9ae9c