Matthew Treinish | a970d65 | 2015-03-11 15:39:24 -0400 | [diff] [blame] | 1 | .. _tempest-configuration: |
| 2 | |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 3 | Tempest Configuration Guide |
| 4 | =========================== |
| 5 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 6 | This guide is a starting point for configuring Tempest. It aims to elaborate |
Matthew Treinish | f640f66 | 2015-03-11 15:13:30 -0400 | [diff] [blame] | 7 | on and explain some of the mandatory and common configuration settings and how |
| 8 | they are used in conjunction. The source of truth on each option is the sample |
Matthew Treinish | f45ba2e | 2015-08-24 15:05:01 -0400 | [diff] [blame] | 9 | config file which explains the purpose of each individual option. You can see |
| 10 | the sample config file here: :ref:`tempest-sampleconf` |
Matthew Treinish | f640f66 | 2015-03-11 15:13:30 -0400 | [diff] [blame] | 11 | |
Matthew Treinish | e8ab5f9 | 2017-03-01 15:25:39 -0500 | [diff] [blame] | 12 | .. _tempest_cred_provider_conf: |
| 13 | |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 14 | Test Credentials |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 15 | ---------------- |
| 16 | |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 17 | Tempest allows for configuring a set of admin credentials in the ``auth`` |
| 18 | section, via the following parameters: |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 19 | |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 20 | #. ``admin_username`` |
| 21 | #. ``admin_password`` |
| 22 | #. ``admin_project_name`` |
| 23 | #. ``admin_domain_name`` |
| 24 | |
| 25 | Admin credentials are not mandatory to run Tempest, but when provided they |
| 26 | can be used to: |
| 27 | |
| 28 | - Run tests for admin APIs |
| 29 | - Generate test credentials on the fly (see `Dynamic Credentials`_) |
| 30 | |
Andrea Frittoli (andreaf) | 100d18d | 2016-05-05 23:34:52 +0100 | [diff] [blame] | 31 | When keystone uses a policy that requires domain scoped tokens for admin |
| 32 | actions, the flag ``admin_domain_scope`` must be set to ``True``. |
| 33 | The admin user configured, if any, must have a role assigned to the domain to |
| 34 | be usable. |
| 35 | |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 36 | Tempest allows for configuring pre-provisioned test credentials as well. |
Matthew Treinish | 40847ac | 2016-01-04 13:16:03 -0500 | [diff] [blame] | 37 | This can be done using the accounts.yaml file (see |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 38 | `Pre-Provisioned Credentials`_). This file is used to specify an arbitrary |
| 39 | number of users available to run tests with. |
| 40 | You can specify the location of the file in the ``auth`` section in the |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 41 | tempest.conf file. To see the specific format used in the file please refer to |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 42 | the accounts.yaml.sample file included in Tempest. |
| 43 | |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 44 | Keystone Connection Info |
| 45 | ^^^^^^^^^^^^^^^^^^^^^^^^ |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 46 | In order for Tempest to be able to talk to your OpenStack deployment you need |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 47 | to provide it with information about how it communicates with keystone. |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 48 | This involves configuring the following options in the ``identity`` section: |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 49 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 50 | #. ``auth_version`` |
| 51 | #. ``uri`` |
| 52 | #. ``uri_v3`` |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 53 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 54 | The ``auth_version`` option is used to tell Tempest whether it should be using |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 55 | keystone's v2 or v3 api for communicating with keystone. (except for the |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 56 | identity api tests which will test a specific version) The two uri options are |
| 57 | used to tell Tempest the url of the keystone endpoint. The ``uri`` option is |
| 58 | used for keystone v2 request and ``uri_v3`` is used for keystone v3. You want to |
| 59 | ensure that which ever version you set for ``auth_version`` has its uri option |
| 60 | defined. |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 61 | |
| 62 | |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 63 | Credential Provider Mechanisms |
| 64 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 65 | |
Castulo J. Martinez | 34329b5 | 2016-07-08 10:56:52 -0700 | [diff] [blame] | 66 | Tempest currently has two different internal methods for providing authentication |
| 67 | to tests: dynamic credentials and pre-provisioned credentials. |
| 68 | Depending on which one is in use the configuration of Tempest is slightly different. |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 69 | |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 70 | Dynamic Credentials |
| 71 | """"""""""""""""""" |
| 72 | Dynamic Credentials (formerly known as Tenant isolation) was originally created |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 73 | to enable running Tempest in parallel. For each test class it creates a unique |
| 74 | set of user credentials to use for the tests in the class. It can create up to |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 75 | three sets of username, password, and project names for a primary user, |
| 76 | an admin user, and an alternate user. To enable and use dynamic credentials you |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 77 | only need to configure two things: |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 78 | |
| 79 | #. A set of admin credentials with permissions to create users and |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 80 | projects. This is specified in the ``auth`` section with the |
| 81 | ``admin_username``, ``admin_project_name``, ``admin_domain_name`` and |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 82 | ``admin_password`` options |
| 83 | #. To enable dynamic credentials in the ``auth`` section with the |
| 84 | ``use_dynamic_credentials`` option. |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 85 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 86 | This is also currently the default credential provider enabled by Tempest, due |
| 87 | to its common use and ease of configuration. |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 88 | |
Matthew Treinish | 4fae472 | 2015-04-16 21:03:54 -0400 | [diff] [blame] | 89 | It is worth pointing out that depending on your cloud configuration you might |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 90 | need to assign a role to each of the users created by Tempest's dynamic |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 91 | credentials. This can be set using the ``tempest_roles`` option. It takes in a |
| 92 | list of role names each of which will be assigned to each of the users created |
| 93 | by dynamic credentials. This option will not have any effect when Tempest is not |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 94 | configured to use dynamic credentials. |
Matthew Treinish | 4fae472 | 2015-04-16 21:03:54 -0400 | [diff] [blame] | 95 | |
Andrea Frittoli (andreaf) | 100d18d | 2016-05-05 23:34:52 +0100 | [diff] [blame] | 96 | When the ``admin_domain_scope`` option is set to ``True``, provisioned admin |
| 97 | accounts will be assigned a role on domain configured in |
| 98 | ``default_credentials_domain_name``. This will make the accounts provisioned |
| 99 | usable in a cloud where domain scoped tokens are required by keystone for |
Hironori Shiina | 91049ad | 2016-09-28 17:28:49 +0900 | [diff] [blame] | 100 | admin operations. Note that the initial pre-provision admin accounts, |
Andrea Frittoli (andreaf) | 100d18d | 2016-05-05 23:34:52 +0100 | [diff] [blame] | 101 | configured in tempest.conf, must have a role on the same domain as well, for |
| 102 | Dynamic Credentials to work. |
| 103 | |
Matthew Treinish | 4fae472 | 2015-04-16 21:03:54 -0400 | [diff] [blame] | 104 | |
Andrea Frittoli (andreaf) | dd25070 | 2016-04-29 15:01:22 -0500 | [diff] [blame] | 105 | Pre-Provisioned Credentials |
| 106 | """"""""""""""""""""""""""" |
| 107 | |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 108 | For a long time using dynamic credentials was the only method available if you |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 109 | wanted to enable parallel execution of Tempest tests. However, this was |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 110 | insufficient for certain use cases because of the admin credentials requirement |
| 111 | to create the credential sets on demand. To get around that the accounts.yaml |
| 112 | file was introduced and with that a new internal credential provider to enable |
| 113 | using the list of credentials instead of creating them on demand. With locking |
| 114 | test accounts each test class will reserve a set of credentials from the |
| 115 | accounts.yaml before executing any of its tests so that each class is isolated |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 116 | like with dynamic credentials. |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 117 | |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 118 | To enable and use locking test accounts you need do a few things: |
| 119 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 120 | #. Create an accounts.yaml file which contains the set of pre-existing |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 121 | credentials to use for testing. To make sure you don't have a credentials |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 122 | starvation issue when running in parallel make sure you have at least two |
| 123 | times the number of worker processes you are using to execute Tempest |
| 124 | available in the file. (If running serially the worker count is 1.) |
Matthew Treinish | 0fd69e4 | 2015-03-06 00:40:51 -0500 | [diff] [blame] | 125 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 126 | You can check the accounts.yaml.sample file packaged in Tempest for the yaml |
| 127 | format. |
| 128 | #. Provide Tempest with the location of your accounts.yaml file with the |
| 129 | ``test_accounts_file`` option in the ``auth`` section |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 130 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 131 | *NOTE: Be sure to use a full path for the file; otherwise Tempest will |
Matthew Treinish | 84c6d29 | 2015-12-16 17:50:57 -0500 | [diff] [blame] | 132 | likely not find it.* |
| 133 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 134 | #. Set ``use_dynamic_credentials = False`` in the ``auth`` group |
Fei Long Wang | 7fee787 | 2015-05-12 11:36:49 +1200 | [diff] [blame] | 135 | |
Matthew Treinish | 9329985 | 2015-04-24 09:58:18 -0400 | [diff] [blame] | 136 | It is worth pointing out that each set of credentials in the accounts.yaml |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 137 | should have a unique project. This is required to provide proper isolation |
Matthew Treinish | 9329985 | 2015-04-24 09:58:18 -0400 | [diff] [blame] | 138 | to the tests using the credentials, and failure to do this will likely cause |
Matthew Treinish | 45915b0 | 2016-08-31 10:25:55 -0400 | [diff] [blame] | 139 | unexpected failures in some tests. Also, ensure that these projects and users |
| 140 | used do not have any pre-existing resources created. Tempest assumes all |
| 141 | tenants it's using are empty and may sporadically fail if there are unexpected |
| 142 | resources present. |
Matthew Treinish | bc1b15b | 2015-02-20 15:56:07 -0500 | [diff] [blame] | 143 | |
Andrea Frittoli (andreaf) | 100d18d | 2016-05-05 23:34:52 +0100 | [diff] [blame] | 144 | When the keystone in the target cloud requires domain scoped tokens to |
| 145 | perform admin actions, all pre-provisioned admin users must have a role |
| 146 | assigned on the domain where test accounts a provisioned. |
| 147 | The option ``admin_domain_scope`` is used to tell tempest that domain scoped |
| 148 | tokens shall be used. ``default_credentials_domain_name`` is the domain where |
| 149 | test accounts are expected to be provisioned if no domain is specified. |
| 150 | |
| 151 | Note that if credentials are pre-provisioned via ``tempest account-generator`` |
| 152 | the role on the domain will be assigned automatically for you, as long as |
| 153 | ``admin_domain_scope`` as ``default_credentials_domain_name`` are configured |
| 154 | properly in tempest.conf. |
| 155 | |
Hironori Shiina | 91049ad | 2016-09-28 17:28:49 +0900 | [diff] [blame] | 156 | Pre-Provisioned Credentials are also known as accounts.yaml or accounts file. |
Matthew Treinish | 9329985 | 2015-04-24 09:58:18 -0400 | [diff] [blame] | 157 | |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 158 | Compute |
| 159 | ------- |
| 160 | |
| 161 | Flavors |
| 162 | ^^^^^^^ |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 163 | For Tempest to be able to create servers you need to specify flavors that it |
| 164 | can use to boot the servers with. There are two options in the Tempest config |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 165 | for doing this: |
| 166 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 167 | #. ``flavor_ref`` |
| 168 | #. ``flavor_ref_alt`` |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 169 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 170 | Both of these options are in the ``compute`` section of the config file and take |
| 171 | in the flavor id (not the name) from nova. The ``flavor_ref`` option is what |
| 172 | will be used for booting almost all of the guests; ``flavor_ref_alt`` is only |
| 173 | used in tests where two different-sized servers are required (for example, a |
| 174 | resize test). |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 175 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 176 | Using a smaller flavor is generally recommended. When larger flavors are used, |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 177 | the extra time required to bring up servers will likely affect total run time |
| 178 | and probably require tweaking timeout values to ensure tests have ample time to |
| 179 | finish. |
| 180 | |
| 181 | Images |
| 182 | ^^^^^^ |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 183 | Just like with flavors, Tempest needs to know which images to use for booting |
| 184 | servers. There are two options in the compute section just like with flavors: |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 185 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 186 | #. ``image_ref`` |
| 187 | #. ``image_ref_alt`` |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 188 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 189 | Both options are expecting an image id (not name) from nova. The ``image_ref`` |
| 190 | option is what will be used for booting the majority of servers in Tempest. |
| 191 | ``image_ref_alt`` is used for tests that require two images such as rebuild. If |
| 192 | two images are not available you can set both options to the same image id and |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 193 | those tests will be skipped. |
| 194 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 195 | There are also options in the ``scenario`` section for images: |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 196 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 197 | #. ``img_file`` |
| 198 | #. ``img_dir`` |
| 199 | #. ``aki_img_file`` |
| 200 | #. ``ari_img_file`` |
| 201 | #. ``ami_img_file`` |
| 202 | #. ``img_container_format`` |
| 203 | #. ``img_disk_format`` |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 204 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 205 | However, unlike the other image options, these are used for a very small subset |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 206 | of scenario tests which are uploading an image. These options are used to tell |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 207 | Tempest where an image file is located and describe its metadata for when it is |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 208 | uploaded. |
| 209 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 210 | The behavior of these options is a bit convoluted (which will likely be fixed in |
| 211 | future versions). You first need to specify ``img_dir``, which is the directory |
| 212 | in which Tempest will look for the image files. First it will check if the |
| 213 | filename set for ``img_file`` could be found in ``img_dir``. If it is found then |
| 214 | the ``img_container_format`` and ``img_disk_format`` options are used to upload |
| 215 | that image to glance. However, if it is not found, Tempest will look for the |
| 216 | three uec image file name options as a fallback. If neither is found, the tests |
| 217 | requiring an image to upload will fail. |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 218 | |
| 219 | It is worth pointing out that using `cirros`_ is a very good choice for running |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 220 | Tempest. It's what is used for upstream testing, they boot quickly and have a |
Matthew Treinish | 7909e12 | 2015-04-15 15:43:50 -0400 | [diff] [blame] | 221 | small footprint. |
| 222 | |
| 223 | .. _cirros: https://launchpad.net/cirros |
| 224 | |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 225 | Networking |
| 226 | ---------- |
| 227 | OpenStack has a myriad of different networking configurations possible and |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 228 | depending on which of the two network backends, nova-network or neutron, you are |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 229 | using things can vary drastically. Due to this complexity Tempest has to provide |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 230 | a certain level of flexibility in its configuration to ensure it will work |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 231 | against any cloud. This ends up causing a large number of permutations in |
| 232 | Tempest's config around network configuration. |
| 233 | |
| 234 | |
| 235 | Enabling Remote Access to Created Servers |
| 236 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
Matthew Treinish | e8ab5f9 | 2017-03-01 15:25:39 -0500 | [diff] [blame] | 237 | |
| 238 | .. _tempest_conf_network_allocation: |
| 239 | |
Matthew Treinish | 275f178 | 2016-06-07 12:19:34 -0400 | [diff] [blame] | 240 | Network Creation/Usage for Servers |
| 241 | """""""""""""""""""""""""""""""""" |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 242 | When Tempest creates servers for testing, some tests require being able to |
| 243 | connect those servers. Depending on the configuration of the cloud, the methods |
| 244 | for doing this can be different. In certain configurations it is required to |
| 245 | specify a single network with server create calls. Accordingly, Tempest provides |
| 246 | a few different methods for providing this information in configuration to try |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 247 | and ensure that regardless of the cloud's configuration it'll still be able to |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 248 | run. This section covers the different methods of configuring Tempest to provide |
| 249 | a network when creating servers. |
| 250 | |
| 251 | Fixed Network Name |
Matthew Treinish | 275f178 | 2016-06-07 12:19:34 -0400 | [diff] [blame] | 252 | '''''''''''''''''' |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 253 | This is the simplest method of specifying how networks should be used. You can |
| 254 | just specify a single network name/label to use for all server creations. The |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 255 | limitation with this is that all projects and users must be able to see |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 256 | that network name/label if they are to perform a network list and be able to use |
| 257 | it. |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 258 | |
| 259 | If no network name is assigned in the config file and none of the below |
| 260 | alternatives are used, then Tempest will not specify a network on server |
| 261 | creations, which depending on the cloud configuration might prevent them from |
| 262 | booting. |
| 263 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 264 | To set a fixed network name simply: |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 265 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 266 | #. Set the ``fixed_network_name`` option in the ``compute`` group |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 267 | |
| 268 | In the case that the configured fixed network name can not be found by a user |
| 269 | network list call, it will be treated like one was not provided except that a |
| 270 | warning will be logged stating that it couldn't be found. |
| 271 | |
| 272 | |
| 273 | Accounts File |
Matthew Treinish | 275f178 | 2016-06-07 12:19:34 -0400 | [diff] [blame] | 274 | ''''''''''''' |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 275 | If you are using an accounts file to provide credentials for running Tempest |
| 276 | then you can leverage it to also specify which network should be used with |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 277 | server creations on a per project and user pair basis. This provides |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 278 | the necessary flexibility to work with more intricate networking configurations |
| 279 | by enabling the user to specify exactly which network to use for which |
Sean Dague | ed6e586 | 2016-04-04 10:49:13 -0400 | [diff] [blame] | 280 | projects. You can refer to the accounts.yaml.sample file included in |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 281 | the Tempest repo for the syntax around specifying networks in the file. |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 282 | |
| 283 | However, specifying a network is not required when using an accounts file. If |
| 284 | one is not specified you can use a fixed network name to specify the network to |
| 285 | use when creating servers just as without an accounts file. However, any network |
| 286 | specified in the accounts file will take precedence over the fixed network name |
| 287 | provided. If no network is provided in the accounts file and a fixed network |
| 288 | name is not set then no network will be included in create server requests. |
| 289 | |
| 290 | If a fixed network is provided and the accounts.yaml file also contains networks |
| 291 | this has the benefit of enabling a couple more tests which require a static |
| 292 | network to perform operations like server lists with a network filter. If a |
| 293 | fixed network name is not provided these tests are skipped. Additionally, if a |
| 294 | fixed network name is provided it will serve as a fallback in case of a |
| 295 | misconfiguration or a missing network in the accounts file. |
| 296 | |
| 297 | |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 298 | With Dynamic Credentials |
Matthew Treinish | 275f178 | 2016-06-07 12:19:34 -0400 | [diff] [blame] | 299 | '''''''''''''''''''''''' |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 300 | With dynamic credentials enabled and using nova-network, your only option for |
lanoux | 63bb903 | 2016-03-21 03:16:18 -0700 | [diff] [blame] | 301 | configuration is to either set a fixed network name or not. However, in most |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 302 | cases it shouldn't matter because nova-network should have no problem booting a |
| 303 | server with multiple networks. If this is not the case for your cloud then using |
| 304 | an accounts file is recommended because it provides the necessary flexibility to |
| 305 | describe your configuration. Dynamic credentials is not able to dynamically |
| 306 | allocate things as necessary if neutron is not enabled. |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 307 | |
Andrea Frittoli (andreaf) | 17209bb | 2015-05-22 10:16:57 -0700 | [diff] [blame] | 308 | With neutron and dynamic credentials enabled there should not be any additional |
Matthew Treinish | 2b7f048 | 2015-04-10 12:49:01 -0400 | [diff] [blame] | 309 | configuration necessary to enable Tempest to create servers with working |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 310 | networking, assuming you have properly configured the ``network`` section to |
| 311 | work for your cloud. Tempest will dynamically create the neutron resources |
| 312 | necessary to enable using servers with that network. Also, just as with the |
| 313 | accounts file, if you specify a fixed network name while using neutron and |
| 314 | dynamic credentials it will enable running tests which require a static network |
| 315 | and it will additionally be used as a fallback for server creation. However, |
| 316 | unlike accounts.yaml this should never be triggered. |
Matthew Treinish | 3220cad | 2015-04-15 16:25:48 -0400 | [diff] [blame] | 317 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 318 | However, there is an option ``create_isolated_networks`` to disable dynamic |
| 319 | credentials's automatic provisioning of network resources. If this option is set |
| 320 | to False you will have to either rely on there only being a single/default |
| 321 | network available for the server creation, or use ``fixed_network_name`` to |
| 322 | inform Tempest which network to use. |
Matthew Treinish | 2219d38 | 2015-04-24 10:33:04 -0400 | [diff] [blame] | 323 | |
Matthew Treinish | 275f178 | 2016-06-07 12:19:34 -0400 | [diff] [blame] | 324 | SSH Connection Configuration |
| 325 | """""""""""""""""""""""""""" |
| 326 | There are also several different ways to actually establish a connection and |
| 327 | authenticate/login on the server. After a server is booted with a provided |
| 328 | network there are still details needed to know how to actually connect to |
| 329 | the server. The ``validation`` group gathers all the options regarding |
| 330 | connecting to and remotely accessing the created servers. |
| 331 | |
| 332 | To enable remote access to servers, there are 3 options at a minimum that are used: |
| 333 | |
| 334 | #. ``run_validation`` |
| 335 | #. ``connect_method`` |
| 336 | #. ``auth_method`` |
| 337 | |
| 338 | The ``run_validation`` is used to enable or disable ssh connectivity for |
| 339 | all tests (with the exception of scenario tests which do not have a flag for |
| 340 | enabling or disabling ssh) To enable ssh connectivity this needs be set to ``true``. |
| 341 | |
| 342 | The ``connect_method`` option is used to tell tempest what kind of IP to use for |
| 343 | establishing a connection to the server. Two methods are available: ``fixed`` |
| 344 | and ``floating``, the later being set by default. If this is set to floating |
| 345 | tempest will create a floating ip for the server before attempted to connect |
| 346 | to it. The IP for the floating ip is what is used for the connection. |
| 347 | |
| 348 | For the ``auth_method`` option there is currently, only one valid option, |
| 349 | ``keypair``. With this set to ``keypair`` tempest will create an ssh keypair |
| 350 | and use that for authenticating against the created server. |
| 351 | |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 352 | Configuring Available Services |
| 353 | ------------------------------ |
| 354 | OpenStack is really a constellation of several different projects which |
| 355 | are running together to create a cloud. However which projects you're running |
| 356 | is not set in stone, and which services are running is up to the deployer. |
| 357 | Tempest however needs to know which services are available so it can figure |
| 358 | out which tests it is able to run and certain setup steps which differ based |
| 359 | on the available services. |
| 360 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 361 | The ``service_available`` section of the config file is used to set which |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 362 | services are available. It contains a boolean option for each service (except |
| 363 | for keystone which is a hard requirement) set it to True if the service is |
| 364 | available or False if it is not. |
| 365 | |
| 366 | Service Catalog |
| 367 | ^^^^^^^^^^^^^^^ |
| 368 | Each project which has its own REST API contains an entry in the service |
| 369 | catalog. Like most things in OpenStack this is also completely configurable. |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 370 | However, for Tempest to be able to figure out which endpoints should get REST |
| 371 | API calls for each service, it needs to know how that project is defined in the |
| 372 | service catalog. There are three options for each service section to accomplish |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 373 | this: |
| 374 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 375 | #. ``catalog_type`` |
| 376 | #. ``endpoint_type`` |
| 377 | #. ``region`` |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 378 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 379 | Setting ``catalog_type`` and ``endpoint_type`` should normally give Tempest |
| 380 | enough information to determine which endpoint it should pull from the service |
| 381 | catalog to use for talking to that particular service. However, if your cloud |
| 382 | has multiple regions available and you need to specify a particular one to use a |
| 383 | service you can set the ``region`` option in that service's section. |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 384 | |
| 385 | It should also be noted that the default values for these options are set |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 386 | to what devstack uses (which is a de facto standard for service catalog |
| 387 | entries). So often nothing actually needs to be set on these options to enable |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 388 | communication to a particular service. It is only if you are either not using |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 389 | the same ``catalog_type`` as devstack or you want Tempest to talk to a different |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 390 | endpoint type instead of publicURL for a service that these need to be changed. |
| 391 | |
ghanshyam | 571dfac | 2015-10-30 11:21:28 +0900 | [diff] [blame] | 392 | .. note:: |
| 393 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 394 | Tempest does not serve all kinds of fancy URLs in the service catalog. The |
| 395 | service catalog should be in a standard format (which is going to be |
| 396 | standardized at the keystone level). |
| 397 | Tempest expects URLs in the Service catalog in the following format: |
Masayuki Igawa | e63cf0f | 2016-05-25 10:25:21 +0900 | [diff] [blame] | 398 | |
| 399 | * ``http://example.com:1234/<version-info>`` |
| 400 | |
ghanshyam | 571dfac | 2015-10-30 11:21:28 +0900 | [diff] [blame] | 401 | Examples: |
Masayuki Igawa | e63cf0f | 2016-05-25 10:25:21 +0900 | [diff] [blame] | 402 | |
| 403 | * Good - ``http://example.com:1234/v2.0`` |
| 404 | * Wouldn’t work - ``http://example.com:1234/xyz/v2.0/`` |
| 405 | (adding prefix/suffix around version etc) |
Matthew Treinish | f96ab3a | 2015-04-15 19:11:31 -0400 | [diff] [blame] | 406 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 407 | Service Feature Configuration |
Matthew Treinish | 3220cad | 2015-04-15 16:25:48 -0400 | [diff] [blame] | 408 | ----------------------------- |
| 409 | |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 410 | OpenStack provides its deployers a myriad of different configuration options to |
| 411 | enable anyone deploying it to create a cloud tailor-made for any individual use |
| 412 | case. It provides options for several different backend types, databases, |
Matthew Treinish | 3220cad | 2015-04-15 16:25:48 -0400 | [diff] [blame] | 413 | message queues, etc. However, the downside to this configurability is that |
| 414 | certain operations and features aren't supported depending on the configuration. |
| 415 | These features may or may not be discoverable from the API so the burden is |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 416 | often on the user to figure out what is supported by the cloud they're talking |
| 417 | to. Besides the obvious interoperability issues with this it also leaves |
| 418 | Tempest in an interesting situation trying to figure out which tests are |
| 419 | expected to work. However, Tempest tests do not rely on dynamic API discovery |
| 420 | for a feature (assuming one exists). Instead Tempest has to be explicitly |
| 421 | configured as to which optional features are enabled. This is in order to |
| 422 | prevent bugs in the discovery mechanisms from masking failures. |
Matthew Treinish | 3220cad | 2015-04-15 16:25:48 -0400 | [diff] [blame] | 423 | |
| 424 | The service feature-enabled config sections are how Tempest addresses the |
| 425 | optional feature question. Each service that has tests for optional features |
| 426 | contains one of these sections. The only options in it are boolean options |
| 427 | with the name of a feature which is used. If it is set to false any test which |
| 428 | depends on that functionality will be skipped. For a complete list of all these |
| 429 | options refer to the sample config file. |
| 430 | |
| 431 | |
| 432 | API Extensions |
| 433 | ^^^^^^^^^^^^^^ |
Eric Fried | e0cfc3e | 2015-12-14 16:10:49 -0600 | [diff] [blame] | 434 | The service feature-enabled sections often contain an ``api-extensions`` option |
| 435 | (or in the case of swift a ``discoverable_apis`` option). This is used to tell |
| 436 | Tempest which api extensions (or configurable middleware) is used in your |
| 437 | deployment. It has two valid config states: either it contains a single value |
| 438 | ``all`` (which is the default) which means that every api extension is assumed |
Matthew Treinish | 3220cad | 2015-04-15 16:25:48 -0400 | [diff] [blame] | 439 | to be enabled, or it is set to a list of each individual extension that is |
| 440 | enabled for that service. |