python-tempestconf doesn't provide any way how to define a
different flavor memory and disk size but provides an option
for defining a custom image (not cirros which is default).
However, when using custom image the default flavor size is
Therefore the review adds two arguments which can be used
for defining flavor minimum memory and minimum disk size.
The review also edits the documentation and fixes a few typos.
Upload new images and flavours with random number generator
device . It prevents the tests failing due to an image
not ready for login error and can improve image boot time.
The review adds code which sets microversions for compute
The change also adds method for filtering microversions
to service base class. In order to save one query, the
new filtering method doesn't query the cloud for versions,
it reuses the version response from the previous query
by set_versions method.
The rest of services listed in the SERVICE_NAMES got
a class implementation under config_tempest/services
directory in order to remove the hardcoded list of
services - SERVICE_NAMES.
By implementing this method we will decrease dependency
on SERVICE_NAMES. python-tempestconf loops over any
service which has a class implementation under
config_tempest/services directory. Therefore we can easily
set service availability in the loop by calling
set_availability method which sets appropriate values in
[service_available] section of tempest.conf.
This review also fixes the problem with not taking
service's versions into account when setting service
There's a mismatch with Manila api microversions which leads to
many failures in tempest tests.
In order to resolve that issue the parameters 'min_api_microversion'
and 'max_api_microversion' should be added to tempest.conf.
It seems nova has changed defaults on who can create zero-sized
disk instances  and now os_tempest jobs failed with
Only volume-backed servers are allowed for flavors with zero disk.
Changing the disk to 1 fixes the same.
Using six.PY3 as configparser.SafeConfigParser in py2 got
renamed to configparser.ConfigParser in py3. In order to
keep the codebase running on both version, we are using
The patch adds a new unit test for profile feature.
The patch also converts all overrides values read from
profile.yaml to string as this is the data type of overrides.
The patch implements --profile argument, which defines a path to
a profile.yaml file - a file which contains python-tempestconf
arguments and their values.
Also --generate-profile argument is introduced. A user can generate
a sample profile.yaml file using this argument. The sample contains
definitions of all python-tempestconf arguments set to their default
--append argument appends a value or values to the specified
section.key pair. It may be helpful in cases when a user wants
to add custom extensions to tempest.conf in an automated job.
Until now the code has been counting on the fact that demo user
can't list roles. This has changed and the code has started
faling on creating a new role because demo user doesn't have
proper permissions. The patch wraps the whole logic around listing
and creating roles to try except block.
The patch also sets refstack-client-devstack-tempestconf as non
voting, because in order to fix it this review needs to be
Versions of flake8 and pyflakes to be installed are inherited from
somewhere, which may be dangerous. Therefore the patch adds their
versions explicitly to test-requrirements.txt file.
We can not rely on the response length of 'set_api_microversion' to
be the same everytime, otherewise it'll insert an incorrect values into
microversions parameters, therefore we should should filter the response
according to the desired api version, in our case is v3.
When an accounts.yaml file is used, python-tempestconf
has to set use_dynamic_credentials to False, otherwise
the generated tempest.conf doesn't work with Tempest.
However, values from a deployer input file are set with
a priority, so that they are not overriden during
To fix the issue, use_dynamic_credentials has to be set
with priority too.
The related unit tests checks only a return value from
set function. The patch improves them, so that they
check if a value was overriden when it was supposed to
and the other way around.
This commit remove the static class loader and add a dynamic one.
This is done using a new property available_classes that checks for
classes inherited by Services and generate a list of it.
It also change how tempestconf identify available services using the
list_services api instead of get_catalog api from tempest lib.
This way, tempestconf are no longer generating Services objects for
services that doesn't have a specialized class, but still set the
defaults for true or false if a service is running or not.
The discover method has changed to get the services from the list of
services instead of from the catalog.
The patch create utils.py for methods which might be used
elsewhere in the project, with no matter on context.
Move get_base_url method from credentials.py to util.py so that
the method is reusable.
Don't expose credentials to tempest.conf when
--create-test-accounts is used.
When generating tempest.conf with demo creds, use
--create-accounts-file argument so that the argument
is tested in the gates.
The argument is used only on Devstack.
Tempest concurrency of devstack demo job is reduced to 1
because the minimal accounts file is used.
Before we could diferentiate the api version for identity because
the use of /v2 or /v3. Even though v2 is now deprecated, we need
to continue support previous versions of openstack. In this case
We cannot relay on the /v2 or /v3 in the url. The best user case
is to do a request in the base url (without any version) and
check if we have v3 version stable. If so, we assume identity
version is v3 otherwise, is v2.
This patch remove the dependence of some services to check for the
catalog and supported versions on constant SERVICE_VERSIONS. It also
remove this constant since it's no longer required.
In order to do that, four new methods were added in Service:
get_supported_versions, get_catalog, get_feature_name and
should be implemented by each service that requires this check.
Right now, the only services that uses are image, identity and volume.
Otherwise the "if keystone_v3_support:" condition is always true
(any non empty string makes the condition True).
Thanks Trevor McCasland for the analysis.
The code should be rewritten anyway (see
and in general the detection of the dashboard location
should be more roboust, but the code should not raise
and horizon settings are relevant only for the (few)
Horizon Tempest tests, but the system can otherwise work.
The identity URLs have a different rules for parsing,
but the code before looked for word 'identity' in
whole given URL to determine it was an identity URL.
This can conflict with a URL hostname which can contain
The patch fixes that by looking for 'identity' only in
URL.path (after hostname:port part).
The patch also adds a new unit test for this case.
* https://review.openstack.org/#/c/568869/ adds support of using
healthcheck api to check swift functionality, This commit adds
what if healthcheck fails to discover it will give trackback it
needs to be handled.
The patch adds a functionality for detecting two smallest
flavors available in the system in case, creation of resources
is not allowed and m1.nano and m1.micro flavors are not available.
image.http_image was during the refactoring mistaken for an image
which is uploaded to glance and that caused the issues described
in the linked story.
image.http_image is a tempest option which defines http accessible
image. It can be also in a compressed format, so it can't be
uploaded to glance before it's unpacked first.
The patch introduces a new python-tempestconf option in tempest.conf
defining an image which will be uploaded to glance.