blob: 365f8cab6e919af9ad74280b851ffad8480ab0d5 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Jay Pipes3f981df2012-03-27 18:59:44 -04002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Dirk Muellere746fc22013-06-29 16:29:29 +020016from __future__ import print_function
17
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +090018import logging as std_logging
Jay Pipes7f757632011-12-02 15:53:32 -050019import os
Jay Pipes3f981df2012-03-27 18:59:44 -040020
Matthew Treinish90aedd12013-02-25 17:56:49 -050021from oslo.config import cfg
22
Jon Grimm270bd7f2014-08-05 18:11:29 +000023from tempest.openstack.common import lockutils
Matthew Treinishf4a9b0f2013-07-26 16:58:26 -040024from tempest.openstack.common import log as logging
Jay Pipes7f757632011-12-02 15:53:32 -050025
Daryl Walleck1465d612011-11-02 02:22:15 -050026
DennyZhang88a2dd82013-10-07 12:55:35 -050027def register_opt_group(conf, opt_group, options):
28 conf.register_group(opt_group)
29 for opt in options:
30 conf.register_opt(opt, group=opt_group.name)
31
32
Matthew Treinishc791ac42014-07-16 09:15:23 -040033auth_group = cfg.OptGroup(name='auth',
34 title="Options for authentication and credentials")
35
36
37AuthGroup = [
38 cfg.StrOpt('test_accounts_file',
39 default='etc/accounts.yaml',
40 help="Path to the yaml file that contains the list of "
41 "credentials to use for running tests"),
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010042 cfg.BoolOpt('allow_tenant_isolation',
43 default=False,
44 help="Allows test cases to create/destroy tenants and "
45 "users. This option requires that OpenStack Identity "
46 "API admin credentials are known. If false, isolated "
47 "test cases and parallel execution, can still be "
48 "achieved configuring a list of test accounts",
49 deprecated_opts=[cfg.DeprecatedOpt('allow_tenant_isolation',
50 group='compute'),
51 cfg.DeprecatedOpt('allow_tenant_isolation',
52 group='orchestration')]),
53 cfg.BoolOpt('locking_credentials_provider',
54 default=False,
55 help="If set to True it enables the Accounts provider, "
56 "which locks credentials to allow for parallel execution "
57 "with pre-provisioned accounts. It can only be used to "
58 "run tests that ensure credentials cleanup happens. "
59 "It requires at least `2 * CONC` distinct accounts "
60 "configured in `test_accounts_file`, with CONC == the "
61 "number of concurrent test processes."),
Matthew Treinishc791ac42014-07-16 09:15:23 -040062]
63
Matthew Treinish39e48ef2012-12-21 13:36:15 -050064identity_group = cfg.OptGroup(name='identity',
65 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050066
Matthew Treinish39e48ef2012-12-21 13:36:15 -050067IdentityGroup = [
68 cfg.StrOpt('catalog_type',
69 default='identity',
70 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050071 cfg.BoolOpt('disable_ssl_certificate_validation',
72 default=False,
73 help="Set to True if using self-signed SSL certificates."),
Jay Pipes7c88eb22013-01-16 21:32:43 -050074 cfg.StrOpt('uri',
Brant Knudsonc7ca3342013-03-28 21:08:50 -050075 help="Full URI of the OpenStack Identity API (Keystone), v2"),
76 cfg.StrOpt('uri_v3',
77 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000078 cfg.StrOpt('auth_version',
79 default='v2',
80 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +000081 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050082 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010083 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +090084 help="The identity region name to use. Also used as the other "
85 "services' region name unless they are set explicitly. "
86 "If no such region is found in the service catalog, the "
87 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +000088 cfg.StrOpt('endpoint_type',
89 default='publicURL',
90 choices=['public', 'admin', 'internal',
91 'publicURL', 'adminURL', 'internalURL'],
92 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010093 cfg.StrOpt('username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010094 help="Username to use for Nova API requests."),
95 cfg.StrOpt('tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010096 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +100097 cfg.StrOpt('admin_role',
98 default='admin',
99 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100100 cfg.StrOpt('password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100101 help="API key to use when authenticating.",
102 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100103 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100104 help="Domain name for authentication (Keystone V3)."
105 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100106 cfg.StrOpt('alt_username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100107 help="Username of alternate user to use for Nova API "
108 "requests."),
109 cfg.StrOpt('alt_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100110 help="Alternate user's Tenant name to use for Nova API "
111 "requests."),
112 cfg.StrOpt('alt_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100113 help="API key to use when authenticating as alternate user.",
114 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100115 cfg.StrOpt('alt_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100116 help="Alternate domain name for authentication (Keystone V3)."
117 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100118 cfg.StrOpt('admin_username',
Dirk Mueller14bd5622014-01-14 19:33:05 +0100119 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100120 "Keystone API requests."),
121 cfg.StrOpt('admin_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100122 help="Administrative Tenant name to use for Keystone API "
123 "requests."),
124 cfg.StrOpt('admin_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100125 help="API key to use when authenticating as admin.",
126 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100127 cfg.StrOpt('admin_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100128 help="Admin domain name for authentication (Keystone V3)."
129 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500130]
Jay Pipes3f981df2012-03-27 18:59:44 -0400131
Matthew Treinishd5021a72014-01-09 18:42:51 +0000132identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
133 title='Enabled Identity Features')
134
135IdentityFeatureGroup = [
136 cfg.BoolOpt('trust',
137 default=True,
138 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000139 'impersonation enabled'),
140 cfg.BoolOpt('api_v2',
141 default=True,
142 help='Is the v2 identity API enabled'),
143 cfg.BoolOpt('api_v3',
144 default=True,
145 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000146]
147
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500148compute_group = cfg.OptGroup(name='compute',
149 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800150
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500151ComputeGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500152 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400153 help="Valid primary image reference to be used in tests. "
154 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500155 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400156 help="Valid secondary image reference to be used in tests. "
157 "This is a required option, but if only one image is "
158 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900159 cfg.StrOpt('flavor_ref',
160 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500161 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900162 cfg.StrOpt('flavor_ref_alt',
163 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500164 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000165 cfg.StrOpt('image_ssh_user',
166 default="root",
167 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700168 cfg.StrOpt('image_ssh_password',
169 default="password",
170 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000171 cfg.StrOpt('image_alt_ssh_user',
172 default="root",
173 help="User name used to authenticate to an instance using "
174 "the alternate image."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700175 cfg.StrOpt('image_alt_ssh_password',
176 default="password",
177 help="Password used to authenticate to an instance using "
178 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500179 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400180 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500181 help="Time in seconds between build status checks."),
182 cfg.IntOpt('build_timeout',
183 default=300,
184 help="Timeout in seconds to wait for an instance to build."),
185 cfg.BoolOpt('run_ssh',
186 default=False,
Derek Higgins85cd5142013-12-17 17:10:11 +0000187 help="Should the tests ssh to instances?"),
Attila Fazekas423834d2014-03-14 17:33:13 +0100188 cfg.StrOpt('ssh_auth_method',
189 default='keypair',
190 help="Auth method used for authenticate to the instance. "
191 "Valid choices are: keypair, configured, adminpass. "
192 "keypair: start the servers with an ssh keypair. "
193 "configured: use the configured user and password. "
194 "adminpass: use the injected adminPass. "
195 "disabled: avoid using ssh when it is an option."),
196 cfg.StrOpt('ssh_connect_method',
197 default='fixed',
198 help="How to connect to the instance? "
199 "fixed: using the first ip belongs the fixed network "
200 "floating: creating and using a floating ip"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500201 cfg.StrOpt('ssh_user',
202 default='root',
203 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700204 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000205 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700206 help="Timeout in seconds to wait for ping to "
207 "succeed."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500208 cfg.IntOpt('ssh_timeout',
209 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030210 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500211 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200212 cfg.IntOpt('ready_wait',
213 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500214 help="Additional wait time for clean state, when there is "
215 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030216 cfg.IntOpt('ssh_channel_timeout',
217 default=60,
218 help="Timeout in seconds to wait for output from ssh "
219 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200220 cfg.StrOpt('fixed_network_name',
221 default='private',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800222 help="Name of the fixed network that is visible to all test "
223 "tenants."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500224 cfg.StrOpt('network_for_ssh',
225 default='public',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800226 help="Network used for SSH connections. Ignored if "
227 "use_floatingip_for_ssh=true or run_ssh=false."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500228 cfg.IntOpt('ip_version_for_ssh',
229 default=4,
230 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900231 cfg.BoolOpt('use_floatingip_for_ssh',
232 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700233 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500234 cfg.StrOpt('catalog_type',
235 default='compute',
236 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900237 cfg.StrOpt('region',
238 default='',
239 help="The compute region name to use. If empty, the value "
240 "of identity.region is used instead. If no such region "
241 "is found in the service catalog, the first found one is "
242 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000243 cfg.StrOpt('endpoint_type',
244 default='publicURL',
245 choices=['public', 'admin', 'internal',
246 'publicURL', 'adminURL', 'internalURL'],
247 help="The endpoint type to use for the compute service."),
ivan-zhu8f992be2013-07-31 14:56:58 +0800248 cfg.StrOpt('catalog_v3_type',
249 default='computev3',
250 help="Catalog type of the Compute v3 service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100251 cfg.StrOpt('path_to_private_key',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100252 help="Path to a private key file for SSH access to remote "
253 "hosts"),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700254 cfg.StrOpt('volume_device_name',
255 default='vdb',
256 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900257 "an instance"),
258 cfg.IntOpt('shelved_offload_time',
259 default=0,
260 help='Time in seconds before a shelved instance is eligible '
261 'for removing from a host. -1 never offload, 0 offload '
262 'when shelved. This time should be the same as the time '
263 'of nova.conf, and some tests will run for as long as the '
Ghanshyam06a5b4a2014-04-11 17:32:45 +0900264 'time.'),
265 cfg.StrOpt('floating_ip_range',
266 default='10.0.0.0/29',
267 help='Unallocated floating IP range, which will be used to '
Chris Hoge8f1401b2014-11-19 14:00:37 -0800268 'test the floating IP bulk feature for CRUD operation. '
269 'This block must not overlap an existing floating IP '
270 'pool.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500271]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800272
Matthew Treinishd5c96022013-10-17 21:51:23 +0000273compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
274 title="Enabled Compute Service Features")
275
276ComputeFeaturesGroup = [
ivan-zhu8f992be2013-07-31 14:56:58 +0800277 cfg.BoolOpt('api_v3',
Matthew Treinish836e56b2014-06-12 13:55:19 -0400278 default=False,
ivan-zhu8f992be2013-07-31 14:56:58 +0800279 help="If false, skip all nova v3 tests."),
Matthew Treinish20866a22014-06-12 14:58:36 -0400280 cfg.BoolOpt('xml_api_v2',
281 default=True,
282 help="If false skip all v2 api tests with xml"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000283 cfg.BoolOpt('disk_config',
284 default=True,
285 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000286 cfg.ListOpt('api_extensions',
287 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800288 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900289 'entry all which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300290 'Each extension should be specified with alias name. '
291 'Empty list indicates all extensions are disabled'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000292 cfg.ListOpt('api_v3_extensions',
293 default=['all'],
294 help='A list of enabled v3 extensions with a special entry all'
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900295 ' which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300296 'Each extension should be specified with alias name. '
297 'Empty list indicates all extensions are disabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000298 cfg.BoolOpt('change_password',
299 default=False,
300 help="Does the test environment support changing the admin "
301 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700302 cfg.BoolOpt('console_output',
303 default=True,
304 help="Does the test environment support obtaining instance "
305 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000306 cfg.BoolOpt('resize',
307 default=False,
308 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400309 cfg.BoolOpt('pause',
310 default=True,
311 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400312 cfg.BoolOpt('shelve',
313 default=True,
314 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400315 cfg.BoolOpt('suspend',
316 default=True,
317 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000318 cfg.BoolOpt('live_migration',
319 default=False,
320 help="Does the test environment support live migration "
321 "available?"),
322 cfg.BoolOpt('block_migration_for_live_migration',
323 default=False,
324 help="Does the test environment use block devices for live "
325 "migration"),
326 cfg.BoolOpt('block_migrate_cinder_iscsi',
327 default=False,
328 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900329 "cinder iSCSI volumes"),
330 cfg.BoolOpt('vnc_console',
331 default=False,
332 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900333 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
334 cfg.BoolOpt('spice_console',
335 default=False,
336 help='Enable Spice console. This configuration value should '
337 'be same as [nova.spice]->enabled in nova.conf'),
338 cfg.BoolOpt('rdp_console',
339 default=False,
340 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700341 'be same as [nova.rdp]->enabled in nova.conf'),
342 cfg.BoolOpt('rescue',
343 default=True,
344 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900345 'mode?'),
346 cfg.BoolOpt('enable_instance_password',
347 default=True,
348 help='Enables returning of the instance password by the '
349 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400350 'or rescue.'),
351 cfg.BoolOpt('interface_attach',
352 default=True,
353 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700354 'interface attachment?'),
355 cfg.BoolOpt('snapshot',
356 default=True,
357 help='Does the test environment support creating snapshot '
358 'images of running instances?')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000359]
360
361
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500362compute_admin_group = cfg.OptGroup(name='compute-admin',
363 title="Compute Admin Options")
donald-ngo7fb1efa2011-12-13 17:17:36 -0800364
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500365ComputeAdminGroup = [
366 cfg.StrOpt('username',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500367 help="Administrative Username to use for Nova API requests."),
368 cfg.StrOpt('tenant_name',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500369 help="Administrative Tenant name to use for Nova API "
370 "requests."),
371 cfg.StrOpt('password',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500372 help="API key to use when authenticating as admin.",
373 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100374 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100375 help="Domain name for authentication as admin (Keystone V3)."
376 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500377]
Daryl Walleck587385b2012-03-03 13:00:26 -0600378
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500379image_group = cfg.OptGroup(name='image',
380 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400381
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500382ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500383 cfg.StrOpt('catalog_type',
384 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400385 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900386 cfg.StrOpt('region',
387 default='',
388 help="The image region name to use. If empty, the value "
389 "of identity.region is used instead. If no such region "
390 "is found in the service catalog, the first found one is "
391 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000392 cfg.StrOpt('endpoint_type',
393 default='publicURL',
394 choices=['public', 'admin', 'internal',
395 'publicURL', 'adminURL', 'internalURL'],
396 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400397 cfg.StrOpt('http_image',
398 default='http://download.cirros-cloud.net/0.3.1/'
399 'cirros-0.3.1-x86_64-uec.tar.gz',
DennyZhang8912d012013-09-25 18:08:34 -0500400 help='http accessible image')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500401]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400402
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000403image_feature_group = cfg.OptGroup(name='image-feature-enabled',
404 title='Enabled image service features')
405
406ImageFeaturesGroup = [
407 cfg.BoolOpt('api_v2',
408 default=True,
409 help="Is the v2 image API enabled"),
410 cfg.BoolOpt('api_v1',
411 default=True,
412 help="Is the v1 image API enabled"),
413]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400414
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500415network_group = cfg.OptGroup(name='network',
416 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600417
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500418NetworkGroup = [
419 cfg.StrOpt('catalog_type',
420 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400421 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900422 cfg.StrOpt('region',
423 default='',
424 help="The network region name to use. If empty, the value "
425 "of identity.region is used instead. If no such region "
426 "is found in the service catalog, the first found one is "
427 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000428 cfg.StrOpt('endpoint_type',
429 default='publicURL',
430 choices=['public', 'admin', 'internal',
431 'publicURL', 'adminURL', 'internalURL'],
432 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500433 cfg.StrOpt('tenant_network_cidr',
434 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500435 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500436 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200437 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500438 help="The mask bits for tenant ipv4 subnets"),
439 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400440 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500441 help="The cidr block to allocate tenant ipv6 subnets from"),
442 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400443 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500444 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500445 cfg.BoolOpt('tenant_networks_reachable',
446 default=False,
447 help="Whether tenant network connectivity should be "
448 "evaluated directly"),
449 cfg.StrOpt('public_network_id',
450 default="",
451 help="Id of the public network that provides external "
452 "connectivity"),
453 cfg.StrOpt('public_router_id',
454 default="",
455 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200456 "connectivity. This should only be used when Neutron's "
457 "'allow_overlapping_ips' is set to 'False' in "
458 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200459 cfg.IntOpt('build_timeout',
460 default=300,
461 help="Timeout in seconds to wait for network operation to "
462 "complete."),
463 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400464 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200465 help="Time in seconds between network operation status "
466 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200467 cfg.ListOpt('dns_servers',
468 default=["8.8.8.8", "8.8.4.4"],
469 help="List of dns servers whichs hould be used"
470 " for subnet creation")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500471]
Jay Pipes3f981df2012-03-27 18:59:44 -0400472
Matthew Treinishe3d26142013-11-26 19:14:58 +0000473network_feature_group = cfg.OptGroup(name='network-feature-enabled',
474 title='Enabled network service features')
475
476NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000477 cfg.BoolOpt('ipv6',
478 default=True,
479 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000480 cfg.ListOpt('api_extensions',
481 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800482 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300483 'entry all which indicates every extension is enabled. '
484 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400485 cfg.BoolOpt('ipv6_subnet_attributes',
486 default=False,
487 help="Allow the execution of IPv6 subnet tests that use "
488 "the extended IPv6 attributes ipv6_ra_mode "
489 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400490 ),
491 cfg.BoolOpt('xml_api',
492 default=False,
493 help='If false, skip all network api tests with xml')
Matthew Treinishe3d26142013-11-26 19:14:58 +0000494]
495
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300496messaging_group = cfg.OptGroup(name='messaging',
497 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500498
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300499MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500500 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300501 default='messaging',
502 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000503 cfg.IntOpt('max_queues_per_page',
504 default=20,
505 help='The maximum number of queue records per page when '
506 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400507 cfg.IntOpt('max_queue_metadata',
508 default=65536,
509 help='The maximum metadata size for a queue'),
510 cfg.IntOpt('max_messages_per_page',
511 default=20,
512 help='The maximum number of queue message per page when '
513 'listing (or) posting messages'),
514 cfg.IntOpt('max_message_size',
515 default=262144,
516 help='The maximum size of a message body'),
517 cfg.IntOpt('max_messages_per_claim',
518 default=20,
519 help='The maximum number of messages per claim'),
520 cfg.IntOpt('max_message_ttl',
521 default=1209600,
522 help='The maximum ttl for a message'),
523 cfg.IntOpt('max_claim_ttl',
524 default=43200,
525 help='The maximum ttl for a claim'),
526 cfg.IntOpt('max_claim_grace',
527 default=43200,
528 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500529]
530
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500531volume_group = cfg.OptGroup(name='volume',
532 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600533
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500534VolumeGroup = [
535 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400536 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500537 help='Time in seconds between volume availability checks.'),
538 cfg.IntOpt('build_timeout',
539 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400540 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500541 'available.'),
542 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000543 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500544 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900545 cfg.StrOpt('region',
546 default='',
547 help="The volume region name to use. If empty, the value "
548 "of identity.region is used instead. If no such region "
549 "is found in the service catalog, the first found one is "
550 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000551 cfg.StrOpt('endpoint_type',
552 default='publicURL',
553 choices=['public', 'admin', 'internal',
554 'publicURL', 'adminURL', 'internalURL'],
555 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100556 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200557 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100558 help="Name of the backend1 (must be declared in cinder.conf)"),
559 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200560 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100561 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700562 cfg.StrOpt('storage_protocol',
563 default='iSCSI',
564 help='Backend protocol to target when creating volume types'),
565 cfg.StrOpt('vendor_name',
566 default='Open Source',
567 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700568 cfg.StrOpt('disk_format',
569 default='raw',
570 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800571 cfg.IntOpt('volume_size',
572 default=1,
573 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500574]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800575
Matthew Treinishd5c96022013-10-17 21:51:23 +0000576volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
577 title='Enabled Cinder Features')
578
579VolumeFeaturesGroup = [
580 cfg.BoolOpt('multi_backend',
581 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000582 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100583 cfg.BoolOpt('backup',
584 default=True,
585 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100586 cfg.BoolOpt('snapshot',
587 default=True,
588 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000589 cfg.ListOpt('api_extensions',
590 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800591 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300592 'entry all which indicates every extension is enabled. '
593 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800594 cfg.BoolOpt('api_v1',
595 default=True,
596 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800597 cfg.BoolOpt('api_v2',
598 default=True,
599 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000600]
601
Daryl Walleck587385b2012-03-03 13:00:26 -0600602
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500603object_storage_group = cfg.OptGroup(name='object-storage',
604 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200605
DennyZhang1e71b612013-09-26 12:35:40 -0500606ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500607 cfg.StrOpt('catalog_type',
608 default='object-store',
609 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900610 cfg.StrOpt('region',
611 default='',
612 help="The object-storage region name to use. If empty, the "
613 "value of identity.region is used instead. If no such "
614 "region is found in the service catalog, the first found "
615 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000616 cfg.StrOpt('endpoint_type',
617 default='publicURL',
618 choices=['public', 'admin', 'internal',
619 'publicURL', 'adminURL', 'internalURL'],
620 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000621 cfg.IntOpt('container_sync_timeout',
nayna-patelb4989b32013-01-09 06:25:13 +0000622 default=120,
Fabien Boucher2178d312013-12-31 15:38:57 +0100623 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000624 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000625 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000626 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100627 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000628 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400629 cfg.StrOpt('operator_role',
630 default='Member',
631 help="Role to add to users created for swift tests to "
632 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500633 cfg.StrOpt('reseller_admin_role',
634 default='ResellerAdmin',
635 help="User role that has reseller admin"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500636]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200637
Matthew Treinishd5c96022013-10-17 21:51:23 +0000638object_storage_feature_group = cfg.OptGroup(
639 name='object-storage-feature-enabled',
640 title='Enabled object-storage features')
641
642ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000643 cfg.ListOpt('discoverable_apis',
644 default=['all'],
645 help="A list of the enabled optional discoverable apis. "
646 "A single entry, all, indicates that all of these "
647 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900648 cfg.BoolOpt('container_sync',
649 default=True,
650 help="Execute (old style) container-sync tests"),
651 cfg.BoolOpt('object_versioning',
652 default=True,
653 help="Execute object-versioning tests"),
654 cfg.BoolOpt('discoverability',
655 default=True,
656 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000657]
658
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800659database_group = cfg.OptGroup(name='database',
660 title='Database Service Options')
661
662DatabaseGroup = [
663 cfg.StrOpt('catalog_type',
664 default='database',
665 help="Catalog type of the Database service."),
666 cfg.StrOpt('db_flavor_ref',
667 default="1",
668 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400669 cfg.StrOpt('db_current_version',
670 default="v1.0",
671 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800672]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200673
Steve Bakerc60e4e32013-05-06 15:22:41 +1200674orchestration_group = cfg.OptGroup(name='orchestration',
675 title='Orchestration Service Options')
676
677OrchestrationGroup = [
678 cfg.StrOpt('catalog_type',
679 default='orchestration',
680 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900681 cfg.StrOpt('region',
682 default='',
683 help="The orchestration region name to use. If empty, the "
684 "value of identity.region is used instead. If no such "
685 "region is found in the service catalog, the first found "
686 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000687 cfg.StrOpt('endpoint_type',
688 default='publicURL',
689 choices=['public', 'admin', 'internal',
690 'publicURL', 'adminURL', 'internalURL'],
691 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200692 cfg.IntOpt('build_interval',
693 default=1,
694 help="Time in seconds between build status checks."),
695 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400696 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200697 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200698 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200699 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200700 help="Instance type for tests. Needs to be big enough for a "
701 "full OS plus the test workload"),
702 cfg.StrOpt('image_ref',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200703 help="Name of heat-cfntools enabled image to use when "
704 "launching test instances."),
705 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200706 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700707 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100708 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700709 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000710 cfg.IntOpt('max_resources_per_stack',
711 default=1000,
712 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200713]
714
715
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100716telemetry_group = cfg.OptGroup(name='telemetry',
717 title='Telemetry Service Options')
718
719TelemetryGroup = [
720 cfg.StrOpt('catalog_type',
721 default='metering',
722 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000723 cfg.StrOpt('endpoint_type',
724 default='publicURL',
725 choices=['public', 'admin', 'internal',
726 'publicURL', 'adminURL', 'internalURL'],
727 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400728 cfg.BoolOpt('too_slow_to_test',
729 default=True,
730 help="This variable is used as flag to enable "
731 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100732]
733
734
Julie Pichond1017642013-07-24 16:37:23 +0100735dashboard_group = cfg.OptGroup(name="dashboard",
736 title="Dashboard options")
737
738DashboardGroup = [
739 cfg.StrOpt('dashboard_url',
740 default='http://localhost/',
741 help="Where the dashboard can be found"),
742 cfg.StrOpt('login_url',
743 default='http://localhost/auth/login/',
744 help="Login page for the dashboard"),
745]
746
747
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400748data_processing_group = cfg.OptGroup(name="data_processing",
749 title="Data Processing options")
750
751DataProcessingGroup = [
752 cfg.StrOpt('catalog_type',
753 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000754 help="Catalog type of the data processing service."),
755 cfg.StrOpt('endpoint_type',
756 default='publicURL',
757 choices=['public', 'admin', 'internal',
758 'publicURL', 'adminURL', 'internalURL'],
759 help="The endpoint type to use for the data processing "
760 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400761]
762
763
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500764boto_group = cfg.OptGroup(name='boto',
765 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500766BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500767 cfg.StrOpt('ec2_url',
768 default="http://localhost:8773/services/Cloud",
769 help="EC2 URL"),
770 cfg.StrOpt('s3_url',
771 default="http://localhost:8080",
772 help="S3 URL"),
773 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500774 help="AWS Secret Key",
775 secret=True),
776 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500777 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100778 cfg.StrOpt('aws_zone',
779 default="nova",
780 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500781 cfg.StrOpt('s3_materials_path',
782 default="/opt/stack/devstack/files/images/"
783 "s3-materials/cirros-0.3.0",
784 help="S3 Materials Path"),
785 cfg.StrOpt('ari_manifest',
786 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
787 help="ARI Ramdisk Image manifest"),
788 cfg.StrOpt('ami_manifest',
789 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
790 help="AMI Machine Image manifest"),
791 cfg.StrOpt('aki_manifest',
792 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
793 help="AKI Kernel Image manifest"),
794 cfg.StrOpt('instance_type',
795 default="m1.tiny",
796 help="Instance type"),
797 cfg.IntOpt('http_socket_timeout',
798 default=3,
799 help="boto Http socket timeout"),
800 cfg.IntOpt('num_retries',
801 default=1,
802 help="boto num_retries on error"),
803 cfg.IntOpt('build_timeout',
804 default=60,
805 help="Status Change Timeout"),
806 cfg.IntOpt('build_interval',
807 default=1,
808 help="Status Change Test Interval"),
809]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100810
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500811stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
812
813StressGroup = [
814 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500815 help='Directory containing log files on the compute nodes'),
816 cfg.IntOpt('max_instances',
817 default=16,
818 help='Maximum number of instances to create during test.'),
819 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400820 help='Controller host.'),
821 # new stress options
822 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400823 help='Controller host.'),
824 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400825 help='ssh user.'),
826 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400827 help='Path to private key.'),
828 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400829 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000830 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400831 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200832 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000833 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200834 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100835 help='The number of threads created while stress test.'),
836 cfg.BoolOpt('leave_dirty_stack',
837 default=False,
838 help='Prevent the cleaning (tearDownClass()) between'
839 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100840 ' during this run.'),
841 cfg.BoolOpt('full_clean_stack',
842 default=False,
843 help='Allows a full cleaning process after a stress test.'
844 ' Caution : this cleanup will remove every objects of'
845 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500846]
847
848
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900849scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
850
851ScenarioGroup = [
852 cfg.StrOpt('img_dir',
853 default='/opt/stack/new/devstack/files/images/'
854 'cirros-0.3.1-x86_64-uec',
855 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300856 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900857 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300858 help='Image file name'),
859 cfg.StrOpt('img_disk_format',
860 default='qcow2',
861 help='Image disk format'),
862 cfg.StrOpt('img_container_format',
863 default='bare',
864 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900865 cfg.StrOpt('ami_img_file',
866 default='cirros-0.3.1-x86_64-blank.img',
867 help='AMI image file name'),
868 cfg.StrOpt('ari_img_file',
869 default='cirros-0.3.1-x86_64-initrd',
870 help='ARI image file name'),
871 cfg.StrOpt('aki_img_file',
872 default='cirros-0.3.1-x86_64-vmlinuz',
873 help='AKI image file name'),
874 cfg.StrOpt('ssh_user',
875 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000876 help='ssh username for the image file'),
877 cfg.IntOpt(
878 'large_ops_number',
879 default=0,
880 help="specifies how many resources to request at once. Used "
881 "for large operations testing.")
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900882]
883
884
Matthew Treinish4c412922013-07-16 15:27:42 -0400885service_available_group = cfg.OptGroup(name="service_available",
886 title="Available OpenStack Services")
887
888ServiceAvailableGroup = [
889 cfg.BoolOpt('cinder',
890 default=True,
891 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400892 cfg.BoolOpt('neutron',
893 default=False,
894 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400895 cfg.BoolOpt('glance',
896 default=True,
897 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400898 cfg.BoolOpt('swift',
899 default=True,
900 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400901 cfg.BoolOpt('nova',
902 default=True,
903 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400904 cfg.BoolOpt('heat',
905 default=False,
906 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200907 cfg.BoolOpt('ceilometer',
908 default=True,
909 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100910 cfg.BoolOpt('horizon',
911 default=True,
912 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400913 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400914 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400915 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300916 cfg.BoolOpt('ironic',
917 default=False,
918 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800919 cfg.BoolOpt('trove',
920 default=False,
921 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -0400922 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500923 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -0400924 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400925]
926
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200927debug_group = cfg.OptGroup(name="debug",
928 title="Debug System")
929
930DebugGroup = [
931 cfg.BoolOpt('enable',
932 default=True,
933 help="Enable diagnostic commands"),
Sean Daguec522c092014-03-24 10:43:22 -0400934 cfg.StrOpt('trace_requests',
935 default='',
936 help="""A regex to determine which requests should be traced.
937
938This is a regex to match the caller for rest client requests to be able to
939selectively trace calls out of specific classes and methods. It largely
940exists for test development, and is not expected to be used in a real deploy
941of tempest. This will be matched against the discovered ClassName:method
942in the test environment.
943
944Expected values for this field are:
945
946 * ClassName:test_method_name - traces one test_method
947 * ClassName:setUp(Class) - traces specific setup functions
948 * ClassName:tearDown(Class) - traces specific teardown functions
949 * ClassName:_run_cleanups - traces the cleanup functions
950
951If nothing is specified, this feature is not enabled. To trace everything
952specify .* as the regex.
953""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200954]
955
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000956input_scenario_group = cfg.OptGroup(name="input-scenario",
957 title="Filters and values for"
958 " input scenarios")
959
960InputScenarioGroup = [
961 cfg.StrOpt('image_regex',
962 default='^cirros-0.3.1-x86_64-uec$',
963 help="Matching images become parameters for scenario tests"),
964 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000965 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000966 help="Matching flavors become parameters for scenario tests"),
967 cfg.StrOpt('non_ssh_image_regex',
968 default='^.*[Ww]in.*$',
969 help="SSH verification in tests is skipped"
970 "for matching images"),
971 cfg.StrOpt('ssh_user_regex',
972 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
973 help="List of user mapped to regex "
974 "to matching image names."),
975]
976
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200977
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300978baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800979 title='Baremetal provisioning service options',
980 help='When enabling baremetal tests, Nova '
981 'must be configured to use the Ironic '
982 'driver. The following paremeters for the '
983 '[compute] section must be disabled: '
984 'console_output, interface_attach, '
985 'live_migration, pause, rescue, resize '
986 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300987
988BaremetalGroup = [
989 cfg.StrOpt('catalog_type',
990 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -0700991 help="Catalog type of the baremetal provisioning service"),
992 cfg.BoolOpt('driver_enabled',
993 default=False,
994 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +0900995 cfg.StrOpt('driver',
996 default='fake',
997 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +0000998 cfg.StrOpt('endpoint_type',
999 default='publicURL',
1000 choices=['public', 'admin', 'internal',
1001 'publicURL', 'adminURL', 'internalURL'],
1002 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001003 "service"),
1004 cfg.IntOpt('active_timeout',
1005 default=300,
1006 help="Timeout for Ironic node to completely provision"),
1007 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001008 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001009 help="Timeout for association of Nova instance and Ironic "
1010 "node"),
1011 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001012 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001013 help="Timeout for Ironic power transitions."),
1014 cfg.IntOpt('unprovision_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001015 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001016 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001017]
1018
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001019cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
1020
1021CLIGroup = [
1022 cfg.BoolOpt('enabled',
1023 default=True,
1024 help="enable cli tests"),
1025 cfg.StrOpt('cli_dir',
1026 default='/usr/local/bin',
1027 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -05001028 cfg.BoolOpt('has_manage',
1029 default=True,
1030 help=("Whether the tempest run location has access to the "
1031 "*-manage commands. In a pure blackbox environment "
1032 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001033 cfg.IntOpt('timeout',
1034 default=15,
1035 help="Number of seconds to wait on a CLI timeout"),
1036]
1037
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001038negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1039
1040NegativeGroup = [
1041 cfg.StrOpt('test_generator',
1042 default='tempest.common.' +
1043 'generator.negative_generator.NegativeTestGenerator',
1044 help="Test generator class for all negative tests"),
1045]
1046
Jon Grimm270bd7f2014-08-05 18:11:29 +00001047_opts = [
1048 (auth_group, AuthGroup),
1049 (compute_group, ComputeGroup),
1050 (compute_features_group, ComputeFeaturesGroup),
1051 (identity_group, IdentityGroup),
1052 (identity_feature_group, IdentityFeatureGroup),
1053 (image_group, ImageGroup),
1054 (image_feature_group, ImageFeaturesGroup),
1055 (network_group, NetworkGroup),
1056 (network_feature_group, NetworkFeaturesGroup),
1057 (messaging_group, MessagingGroup),
1058 (volume_group, VolumeGroup),
1059 (volume_feature_group, VolumeFeaturesGroup),
1060 (object_storage_group, ObjectStoreGroup),
1061 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1062 (database_group, DatabaseGroup),
1063 (orchestration_group, OrchestrationGroup),
1064 (telemetry_group, TelemetryGroup),
1065 (dashboard_group, DashboardGroup),
1066 (data_processing_group, DataProcessingGroup),
1067 (boto_group, BotoGroup),
1068 (compute_admin_group, ComputeAdminGroup),
1069 (stress_group, StressGroup),
1070 (scenario_group, ScenarioGroup),
1071 (service_available_group, ServiceAvailableGroup),
1072 (debug_group, DebugGroup),
1073 (baremetal_group, BaremetalGroup),
1074 (input_scenario_group, InputScenarioGroup),
1075 (cli_group, CLIGroup),
1076 (negative_group, NegativeGroup)
1077]
1078
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001079
Matthew Treinish43b296a2014-02-28 15:23:00 -05001080def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001081 for g, o in _opts:
1082 register_opt_group(cfg.CONF, g, o)
1083
1084
1085def list_opts():
1086 """Return a list of oslo.config options available.
1087
1088 The purpose of this is to allow tools like the Oslo sample config file
1089 generator to discover the options exposed to users.
1090 """
1091 optlist = [(g.name, o) for g, o in _opts]
1092
1093 # NOTE(jgrimm): Can be removed once oslo-incubator/oslo changes happen.
1094 optlist.append((None, lockutils.util_opts))
1095 optlist.append((None, logging.common_cli_opts))
1096 optlist.append((None, logging.logging_cli_opts))
1097 optlist.append((None, logging.generic_log_opts))
1098 optlist.append((None, logging.log_opts))
1099
1100 return optlist
Matthew Treinish43b296a2014-02-28 15:23:00 -05001101
1102
Sean Dague3b9b1f32013-12-20 17:04:54 -05001103# this should never be called outside of this class
1104class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001105 """Provides OpenStack configuration information."""
1106
Brian Waldon738cd632011-12-12 18:45:09 -05001107 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001108 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001109 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001110
Brian Waldon738cd632011-12-12 18:45:09 -05001111 DEFAULT_CONFIG_FILE = "tempest.conf"
1112
Andrea Frittolia96ee212014-08-15 18:34:20 +01001113 def __getattr__(self, attr):
1114 # Handles config options from the default group
1115 return getattr(cfg.CONF, attr)
1116
Matthew Treinish43b296a2014-02-28 15:23:00 -05001117 def _set_attrs(self):
Matthew Treinishc791ac42014-07-16 09:15:23 -04001118 self.auth = cfg.CONF.auth
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001119 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001120 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001121 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001122 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001123 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001124 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001125 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001126 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001127 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001128 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001129 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001130 self.object_storage_feature_enabled = cfg.CONF[
1131 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001132 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001133 self.orchestration = cfg.CONF.orchestration
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -03001134 self.messaging = cfg.CONF.messaging
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001135 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001136 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001137 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001138 self.boto = cfg.CONF.boto
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001139 self.compute_admin = cfg.CONF['compute-admin']
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001140 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001141 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001142 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001143 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001144 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001145 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001146 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001147 self.negative = cfg.CONF.negative
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001148 if not self.compute_admin.username:
1149 self.compute_admin.username = self.identity.admin_username
1150 self.compute_admin.password = self.identity.admin_password
1151 self.compute_admin.tenant_name = self.identity.admin_tenant_name
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001152 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1153 group='identity')
1154 cfg.CONF.set_default('alt_domain_name',
1155 self.identity.admin_domain_name,
1156 group='identity')
1157 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1158 group='compute-admin')
Sean Dague86bd8422013-12-20 09:56:44 -05001159
Joe Gordon28a84ae2014-07-17 15:38:28 +00001160 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001161 """Initialize a configuration from a conf directory and conf file."""
1162 super(TempestConfigPrivate, self).__init__()
1163 config_files = []
1164 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1165
Joe Gordon28a84ae2014-07-17 15:38:28 +00001166 if config_path:
1167 path = config_path
1168 else:
1169 # Environment variables override defaults...
1170 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1171 self.DEFAULT_CONFIG_DIR)
1172 conf_file = os.environ.get('TEMPEST_CONFIG',
1173 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001174
Joe Gordon28a84ae2014-07-17 15:38:28 +00001175 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001176
1177 if not os.path.isfile(path):
1178 path = failsafe_path
1179
1180 # only parse the config file if we expect one to exist. This is needed
1181 # to remove an issue with the config file up to date checker.
1182 if parse_conf:
1183 config_files.append(path)
Matthew Treinish5440a402014-10-02 14:36:16 -04001184 if os.path.isfile(path):
1185 cfg.CONF([], project='tempest', default_config_files=config_files)
1186 else:
1187 cfg.CONF([], project='tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001188 logging.setup('tempest')
1189 LOG = logging.getLogger('tempest')
1190 LOG.info("Using tempest config file %s" % path)
1191 register_opts()
1192 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001193 if parse_conf:
1194 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1195
Sean Dague86bd8422013-12-20 09:56:44 -05001196
1197class TempestConfigProxy(object):
1198 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001199 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001200
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001201 _extra_log_defaults = [
1202 'keystoneclient.session=INFO',
1203 'paramiko.transport=INFO',
1204 'requests.packages.urllib3.connectionpool=WARN'
1205 ]
1206
1207 def _fix_log_levels(self):
1208 """Tweak the oslo log defaults."""
1209 for opt in logging.log_opts:
1210 if opt.dest == 'default_log_levels':
1211 opt.default.extend(self._extra_log_defaults)
1212
Sean Dague86bd8422013-12-20 09:56:44 -05001213 def __getattr__(self, attr):
1214 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001215 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001216 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001217
1218 return getattr(self._config, attr)
1219
Joe Gordon28a84ae2014-07-17 15:38:28 +00001220 def set_config_path(self, path):
1221 self._path = path
1222
Sean Dague86bd8422013-12-20 09:56:44 -05001223
1224CONF = TempestConfigProxy()