blob: a7c8fb7f04a2d60976a0efbe707ce7a0698bff94 [file] [log] [blame]
Matthew Treinisha970d652015-03-11 15:39:24 -04001.. _tempest-configuration:
2
Matthew Treinishbc1b15b2015-02-20 15:56:07 -05003Tempest Configuration Guide
4===========================
5
6Auth/Credentials
7----------------
8
9Tempest currently has 2 different ways in configuration to provide credentials
10to use when running tempest. One is a traditional set of configuration options
11in the tempest.conf file. These options are in the identity section and let you
12specify a regular user, a global admin user, and a alternate user set of
13credentials. (which consist of a username, password, and project/tenant name)
14These options should be clearly labelled in the sample config file in the
15identity section.
16
17The other method to provide credentials is using the accounts.yaml file. This
18file is used to specify an arbitrary number of users available to run tests
19with. You can specify the location of the file in the
20auth section in the tempest.conf file. To see the specific format used in
21the file please refer to the accounts.yaml.sample file included in tempest.
22Currently users that are specified in the accounts.yaml file are assumed to
23have the same set of roles which can be used for executing all the tests you
24are running. This will be addressed in the future, but is a current limitation.
25Eventually the config options for providing credentials to tempest will be
26deprecated and removed in favor of the accounts.yaml file.
27
28Credential Provider Mechanisms
29^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30
31Tempest currently also has 3 different internal methods for providing
32authentication to tests. Tenant isolation, locking test accounts, and
33non-locking test accounts. Depending on which one is in use the configuration
34of tempest is slightly different.
35
36Tenant Isolation
37""""""""""""""""
38Tenant isolation was originally create to enable running tempest in parallel.
39For each test class it creates a unique set of user credentials to use for the
40tests in the class. It can create up to 3 sets of username, password, and
41tenant/project names for a primary user, an admin user, and an alternate user.
42To enable and use tenant isolation you only need to configure 2 things:
43
44 #. A set of admin credentials with permissions to create users and
45 tenants/projects. This is specified in the identity section with the
46 admin_username, admin_tenant_name, and admin_password options
47 #. To enable tenant_isolation in the auth section with the
48 allow_tenant_isolation option.
49
Matthew Treinish0fd69e42015-03-06 00:40:51 -050050This is also the currently the default credential provider enabled by tempest,
51due to it's common use and ease of configuration.
Matthew Treinishbc1b15b2015-02-20 15:56:07 -050052
53Locking Test Accounts
54"""""""""""""""""""""
55For a long time using tenant isolation was the only method available if you
56wanted to enable parallel execution of tempest tests. However this was
57insufficient for certain use cases because of the admin credentials requirement
58to create the credential sets on demand. To get around that the accounts.yaml
59file was introduced and with that a new internal credential provider to enable
60using the list of credentials instead of creating them on demand. With locking
61test accounts each test class will reserve a set of credentials from the
62accounts.yaml before executing any of its tests so that each class is isolated
63like in tenant isolation.
64
Matthew Treinish0fd69e42015-03-06 00:40:51 -050065Currently, this mechanism has some limitations, mostly around networking. The
66locking test accounts provider will only work with a single flat network as
Matthew Treinishbc1b15b2015-02-20 15:56:07 -050067the default for each tenant/project. If another network configuration is used
68in your cloud you might face unexpected failures.
69
70To enable and use locking test accounts you need do a few things:
71
72 #. Enable the locking test account provider with the
73 locking_credentials_provider option in the auth section
74 #. Create a accounts.yaml file which contains the set of pre-existing
75 credentials to use for testing. To make sure you don't have a credentials
76 starvation issue when running in parallel make sure you have at least 2
77 times the number of parallel workers you are using to execute tempest
78 available in the file.
Matthew Treinish0fd69e42015-03-06 00:40:51 -050079
80 You can check the sample file packaged in tempest for the yaml format
Matthew Treinishbc1b15b2015-02-20 15:56:07 -050081 #. Provide tempest with the location of you accounts.yaml file with the
82 test_accounts_file option in the auth section
83
84
85Non-locking test accounts
86"""""""""""""""""""""""""
87When tempest was refactored to allow for locking test accounts, the original
88non-tenant isolated case was converted to support the new accounts.yaml file.
89This mechanism is the non-locking test accounts provider. It only makes sense
90to use it if parallel execution isn't needed. If the role restrictions were too
91limiting with the locking accounts provider and tenant isolation is not wanted
92then you can use the non-locking test accounts credential provider without the
Matthew Treinish0fd69e42015-03-06 00:40:51 -050093accounts.yaml file.
Matthew Treinishbc1b15b2015-02-20 15:56:07 -050094
95To use the non-locking test accounts provider you have 2 ways to configure it.
96First you can specify the sets of credentials in the configuration file like
97detailed above with following 9 options in the identity section:
98
99 #. username
100 #. password
101 #. tenant_name
102 #. admin_username
103 #. admin_password
104 #. admin_tenant_name
105 #. alt_username
106 #. alt_password
107 #. alt_tenant_name
108
Matthew Treinish0fd69e42015-03-06 00:40:51 -0500109The only restriction with using the traditional config options for credentials
110is that if a test requires specific roles on accounts these tests can not be
111run. This is because the config options do not give sufficient flexibility to
112describe the roles assigned to a user for running the tests.
Matthew Treinishbc1b15b2015-02-20 15:56:07 -0500113
114You also can use the accounts.yaml file to specify the credentials used for
115testing. This will just allocate them serially so you only need to provide
116a pair of credentials. Do note that all the restrictions associated with
Matthew Treinish0fd69e42015-03-06 00:40:51 -0500117locking test accounts applies to using the accounts.yaml file this way too,
118except since you can't run in parallel only 2 of each type of credential is
119required to run. However, the limitation on tests which require specific roles
120does not apply here.
121
Matthew Treinishbc1b15b2015-02-20 15:56:07 -0500122The procedure for doing this is very similar to with the locking accounts
123provider just don't set the locking_credentials_provider to true and you
124only should need a single pair of credentials.