blob: b571dff67172c44ffb0c7acc88a337b81780b492 [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 Treinish167b2be2015-01-15 17:20:27 -050062 cfg.ListOpt('tempest_roles',
63 help="Roles to assign to all users created by tempest",
64 default=[])
Matthew Treinishc791ac42014-07-16 09:15:23 -040065]
66
Matthew Treinish39e48ef2012-12-21 13:36:15 -050067identity_group = cfg.OptGroup(name='identity',
68 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050069
Matthew Treinish39e48ef2012-12-21 13:36:15 -050070IdentityGroup = [
71 cfg.StrOpt('catalog_type',
72 default='identity',
73 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050074 cfg.BoolOpt('disable_ssl_certificate_validation',
75 default=False,
76 help="Set to True if using self-signed SSL certificates."),
Rob Crittendena7db6692014-11-23 18:44:38 -050077 cfg.StrOpt('ca_certificates_file',
78 default=None,
79 help='Specify a CA bundle file to use in verifying a '
80 'TLS (https) server certificate.'),
Jay Pipes7c88eb22013-01-16 21:32:43 -050081 cfg.StrOpt('uri',
Brant Knudsonc7ca3342013-03-28 21:08:50 -050082 help="Full URI of the OpenStack Identity API (Keystone), v2"),
83 cfg.StrOpt('uri_v3',
84 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000085 cfg.StrOpt('auth_version',
86 default='v2',
87 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +000088 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050089 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010090 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +090091 help="The identity region name to use. Also used as the other "
92 "services' region name unless they are set explicitly. "
93 "If no such region is found in the service catalog, the "
94 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +000095 cfg.StrOpt('endpoint_type',
96 default='publicURL',
97 choices=['public', 'admin', 'internal',
98 'publicURL', 'adminURL', 'internalURL'],
99 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100100 cfg.StrOpt('username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100101 help="Username to use for Nova API requests."),
102 cfg.StrOpt('tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100103 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +1000104 cfg.StrOpt('admin_role',
105 default='admin',
106 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100107 cfg.StrOpt('password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100108 help="API key to use when authenticating.",
109 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100110 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100111 help="Domain name for authentication (Keystone V3)."
112 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100113 cfg.StrOpt('alt_username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100114 help="Username of alternate user to use for Nova API "
115 "requests."),
116 cfg.StrOpt('alt_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100117 help="Alternate user's Tenant name to use for Nova API "
118 "requests."),
119 cfg.StrOpt('alt_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100120 help="API key to use when authenticating as alternate user.",
121 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100122 cfg.StrOpt('alt_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100123 help="Alternate domain name for authentication (Keystone V3)."
124 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100125 cfg.StrOpt('admin_username',
Dirk Mueller14bd5622014-01-14 19:33:05 +0100126 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100127 "Keystone API requests."),
128 cfg.StrOpt('admin_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100129 help="Administrative Tenant name to use for Keystone API "
130 "requests."),
131 cfg.StrOpt('admin_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100132 help="API key to use when authenticating as admin.",
133 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100134 cfg.StrOpt('admin_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100135 help="Admin domain name for authentication (Keystone V3)."
136 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500137]
Jay Pipes3f981df2012-03-27 18:59:44 -0400138
Matthew Treinishd5021a72014-01-09 18:42:51 +0000139identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
140 title='Enabled Identity Features')
141
142IdentityFeatureGroup = [
143 cfg.BoolOpt('trust',
144 default=True,
145 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000146 'impersonation enabled'),
147 cfg.BoolOpt('api_v2',
148 default=True,
149 help='Is the v2 identity API enabled'),
150 cfg.BoolOpt('api_v3',
151 default=True,
152 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000153]
154
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500155compute_group = cfg.OptGroup(name='compute',
156 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800157
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500158ComputeGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500159 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400160 help="Valid primary image reference to be used in tests. "
161 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500162 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400163 help="Valid secondary image reference to be used in tests. "
164 "This is a required option, but if only one image is "
165 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900166 cfg.StrOpt('flavor_ref',
167 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500168 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900169 cfg.StrOpt('flavor_ref_alt',
170 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500171 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000172 cfg.StrOpt('image_ssh_user',
173 default="root",
174 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700175 cfg.StrOpt('image_ssh_password',
176 default="password",
177 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000178 cfg.StrOpt('image_alt_ssh_user',
179 default="root",
180 help="User name used to authenticate to an instance using "
181 "the alternate image."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700182 cfg.StrOpt('image_alt_ssh_password',
183 default="password",
184 help="Password used to authenticate to an instance using "
185 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500186 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400187 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500188 help="Time in seconds between build status checks."),
189 cfg.IntOpt('build_timeout',
190 default=300,
Hugh Saunders5b139ad2014-12-15 09:08:41 +0000191 help="Timeout in seconds to wait for an instance to build. "
192 "Other services that do not define build_timeout will "
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200193 "inherit this value."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500194 cfg.BoolOpt('run_ssh',
195 default=False,
Derek Higgins85cd5142013-12-17 17:10:11 +0000196 help="Should the tests ssh to instances?"),
Attila Fazekas423834d2014-03-14 17:33:13 +0100197 cfg.StrOpt('ssh_auth_method',
198 default='keypair',
199 help="Auth method used for authenticate to the instance. "
200 "Valid choices are: keypair, configured, adminpass. "
201 "keypair: start the servers with an ssh keypair. "
202 "configured: use the configured user and password. "
203 "adminpass: use the injected adminPass. "
204 "disabled: avoid using ssh when it is an option."),
205 cfg.StrOpt('ssh_connect_method',
206 default='fixed',
207 help="How to connect to the instance? "
208 "fixed: using the first ip belongs the fixed network "
209 "floating: creating and using a floating ip"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500210 cfg.StrOpt('ssh_user',
211 default='root',
212 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700213 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000214 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700215 help="Timeout in seconds to wait for ping to "
216 "succeed."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500217 cfg.IntOpt('ssh_timeout',
218 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030219 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500220 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200221 cfg.IntOpt('ready_wait',
222 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500223 help="Additional wait time for clean state, when there is "
224 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030225 cfg.IntOpt('ssh_channel_timeout',
226 default=60,
227 help="Timeout in seconds to wait for output from ssh "
228 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200229 cfg.StrOpt('fixed_network_name',
230 default='private',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800231 help="Name of the fixed network that is visible to all test "
232 "tenants."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500233 cfg.StrOpt('network_for_ssh',
234 default='public',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800235 help="Network used for SSH connections. Ignored if "
236 "use_floatingip_for_ssh=true or run_ssh=false."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500237 cfg.IntOpt('ip_version_for_ssh',
238 default=4,
239 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900240 cfg.BoolOpt('use_floatingip_for_ssh',
241 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700242 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500243 cfg.StrOpt('catalog_type',
244 default='compute',
245 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900246 cfg.StrOpt('region',
247 default='',
248 help="The compute region name to use. If empty, the value "
249 "of identity.region is used instead. If no such region "
250 "is found in the service catalog, the first found one is "
251 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000252 cfg.StrOpt('endpoint_type',
253 default='publicURL',
254 choices=['public', 'admin', 'internal',
255 'publicURL', 'adminURL', 'internalURL'],
256 help="The endpoint type to use for the compute service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100257 cfg.StrOpt('path_to_private_key',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100258 help="Path to a private key file for SSH access to remote "
259 "hosts"),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700260 cfg.StrOpt('volume_device_name',
261 default='vdb',
262 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900263 "an instance"),
264 cfg.IntOpt('shelved_offload_time',
265 default=0,
266 help='Time in seconds before a shelved instance is eligible '
267 'for removing from a host. -1 never offload, 0 offload '
268 'when shelved. This time should be the same as the time '
269 'of nova.conf, and some tests will run for as long as the '
Ghanshyam06a5b4a2014-04-11 17:32:45 +0900270 'time.'),
271 cfg.StrOpt('floating_ip_range',
272 default='10.0.0.0/29',
273 help='Unallocated floating IP range, which will be used to '
Chris Hoge8f1401b2014-11-19 14:00:37 -0800274 'test the floating IP bulk feature for CRUD operation. '
275 'This block must not overlap an existing floating IP '
276 'pool.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500277]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800278
Matthew Treinishd5c96022013-10-17 21:51:23 +0000279compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
280 title="Enabled Compute Service Features")
281
282ComputeFeaturesGroup = [
283 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 Treinishd5c96022013-10-17 21:51:23 +0000292 cfg.BoolOpt('change_password',
293 default=False,
294 help="Does the test environment support changing the admin "
295 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700296 cfg.BoolOpt('console_output',
297 default=True,
298 help="Does the test environment support obtaining instance "
299 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000300 cfg.BoolOpt('resize',
301 default=False,
302 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400303 cfg.BoolOpt('pause',
304 default=True,
305 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400306 cfg.BoolOpt('shelve',
307 default=True,
308 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400309 cfg.BoolOpt('suspend',
310 default=True,
311 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000312 cfg.BoolOpt('live_migration',
Joe Gordon31a139a2014-11-17 16:39:04 -0800313 default=True,
Matthew Treinishd5c96022013-10-17 21:51:23 +0000314 help="Does the test environment support live migration "
315 "available?"),
316 cfg.BoolOpt('block_migration_for_live_migration',
317 default=False,
318 help="Does the test environment use block devices for live "
319 "migration"),
320 cfg.BoolOpt('block_migrate_cinder_iscsi',
321 default=False,
322 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900323 "cinder iSCSI volumes"),
324 cfg.BoolOpt('vnc_console',
325 default=False,
326 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900327 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
328 cfg.BoolOpt('spice_console',
329 default=False,
330 help='Enable Spice console. This configuration value should '
331 'be same as [nova.spice]->enabled in nova.conf'),
332 cfg.BoolOpt('rdp_console',
333 default=False,
334 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700335 'be same as [nova.rdp]->enabled in nova.conf'),
336 cfg.BoolOpt('rescue',
337 default=True,
338 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900339 'mode?'),
340 cfg.BoolOpt('enable_instance_password',
341 default=True,
342 help='Enables returning of the instance password by the '
343 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400344 'or rescue.'),
345 cfg.BoolOpt('interface_attach',
346 default=True,
347 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700348 'interface attachment?'),
349 cfg.BoolOpt('snapshot',
350 default=True,
351 help='Does the test environment support creating snapshot '
352 'images of running instances?')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000353]
354
355
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500356image_group = cfg.OptGroup(name='image',
357 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400358
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500359ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500360 cfg.StrOpt('catalog_type',
361 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400362 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900363 cfg.StrOpt('region',
364 default='',
365 help="The image region name to use. If empty, the value "
366 "of identity.region is used instead. If no such region "
367 "is found in the service catalog, the first found one is "
368 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000369 cfg.StrOpt('endpoint_type',
370 default='publicURL',
371 choices=['public', 'admin', 'internal',
372 'publicURL', 'adminURL', 'internalURL'],
373 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400374 cfg.StrOpt('http_image',
375 default='http://download.cirros-cloud.net/0.3.1/'
376 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200377 help='http accessible image'),
378 cfg.IntOpt('build_timeout',
379 default=300,
380 help="Timeout in seconds to wait for an image to "
381 "become available."),
382 cfg.IntOpt('build_interval',
383 default=1,
384 help="Time in seconds between image operation status "
385 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500386]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400387
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000388image_feature_group = cfg.OptGroup(name='image-feature-enabled',
389 title='Enabled image service features')
390
391ImageFeaturesGroup = [
392 cfg.BoolOpt('api_v2',
393 default=True,
394 help="Is the v2 image API enabled"),
395 cfg.BoolOpt('api_v1',
396 default=True,
397 help="Is the v1 image API enabled"),
398]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400399
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500400network_group = cfg.OptGroup(name='network',
401 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600402
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500403NetworkGroup = [
404 cfg.StrOpt('catalog_type',
405 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400406 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900407 cfg.StrOpt('region',
408 default='',
409 help="The network region name to use. If empty, the value "
410 "of identity.region is used instead. If no such region "
411 "is found in the service catalog, the first found one is "
412 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000413 cfg.StrOpt('endpoint_type',
414 default='publicURL',
415 choices=['public', 'admin', 'internal',
416 'publicURL', 'adminURL', 'internalURL'],
417 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500418 cfg.StrOpt('tenant_network_cidr',
419 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500420 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500421 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200422 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500423 help="The mask bits for tenant ipv4 subnets"),
424 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400425 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500426 help="The cidr block to allocate tenant ipv6 subnets from"),
427 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400428 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500429 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500430 cfg.BoolOpt('tenant_networks_reachable',
431 default=False,
432 help="Whether tenant network connectivity should be "
433 "evaluated directly"),
434 cfg.StrOpt('public_network_id',
435 default="",
436 help="Id of the public network that provides external "
437 "connectivity"),
438 cfg.StrOpt('public_router_id',
439 default="",
440 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200441 "connectivity. This should only be used when Neutron's "
442 "'allow_overlapping_ips' is set to 'False' in "
443 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200444 cfg.IntOpt('build_timeout',
445 default=300,
446 help="Timeout in seconds to wait for network operation to "
447 "complete."),
448 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400449 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200450 help="Time in seconds between network operation status "
451 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200452 cfg.ListOpt('dns_servers',
453 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200454 help="List of dns servers which should be used"
Attila Fazekas640392b2014-06-12 15:58:10 +0200455 " for subnet creation")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500456]
Jay Pipes3f981df2012-03-27 18:59:44 -0400457
Matthew Treinishe3d26142013-11-26 19:14:58 +0000458network_feature_group = cfg.OptGroup(name='network-feature-enabled',
459 title='Enabled network service features')
460
461NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000462 cfg.BoolOpt('ipv6',
463 default=True,
464 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000465 cfg.ListOpt('api_extensions',
466 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800467 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300468 'entry all which indicates every extension is enabled. '
469 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400470 cfg.BoolOpt('ipv6_subnet_attributes',
471 default=False,
472 help="Allow the execution of IPv6 subnet tests that use "
473 "the extended IPv6 attributes ipv6_ra_mode "
474 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400475 ),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000476]
477
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300478messaging_group = cfg.OptGroup(name='messaging',
479 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500480
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300481MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500482 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300483 default='messaging',
484 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000485 cfg.IntOpt('max_queues_per_page',
486 default=20,
487 help='The maximum number of queue records per page when '
488 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400489 cfg.IntOpt('max_queue_metadata',
490 default=65536,
491 help='The maximum metadata size for a queue'),
492 cfg.IntOpt('max_messages_per_page',
493 default=20,
494 help='The maximum number of queue message per page when '
495 'listing (or) posting messages'),
496 cfg.IntOpt('max_message_size',
497 default=262144,
498 help='The maximum size of a message body'),
499 cfg.IntOpt('max_messages_per_claim',
500 default=20,
501 help='The maximum number of messages per claim'),
502 cfg.IntOpt('max_message_ttl',
503 default=1209600,
504 help='The maximum ttl for a message'),
505 cfg.IntOpt('max_claim_ttl',
506 default=43200,
507 help='The maximum ttl for a claim'),
508 cfg.IntOpt('max_claim_grace',
509 default=43200,
510 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500511]
512
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500513volume_group = cfg.OptGroup(name='volume',
514 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600515
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500516VolumeGroup = [
517 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400518 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500519 help='Time in seconds between volume availability checks.'),
520 cfg.IntOpt('build_timeout',
521 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400522 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500523 'available.'),
524 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000525 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500526 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900527 cfg.StrOpt('region',
528 default='',
529 help="The volume region name to use. If empty, the value "
530 "of identity.region is used instead. If no such region "
531 "is found in the service catalog, the first found one is "
532 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000533 cfg.StrOpt('endpoint_type',
534 default='publicURL',
535 choices=['public', 'admin', 'internal',
536 'publicURL', 'adminURL', 'internalURL'],
537 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100538 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200539 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100540 help="Name of the backend1 (must be declared in cinder.conf)"),
541 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200542 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100543 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700544 cfg.StrOpt('storage_protocol',
545 default='iSCSI',
546 help='Backend protocol to target when creating volume types'),
547 cfg.StrOpt('vendor_name',
548 default='Open Source',
549 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700550 cfg.StrOpt('disk_format',
551 default='raw',
552 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800553 cfg.IntOpt('volume_size',
554 default=1,
555 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500556]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800557
Matthew Treinishd5c96022013-10-17 21:51:23 +0000558volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
559 title='Enabled Cinder Features')
560
561VolumeFeaturesGroup = [
562 cfg.BoolOpt('multi_backend',
563 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000564 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100565 cfg.BoolOpt('backup',
566 default=True,
567 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100568 cfg.BoolOpt('snapshot',
569 default=True,
570 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000571 cfg.ListOpt('api_extensions',
572 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800573 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300574 'entry all which indicates every extension is enabled. '
575 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800576 cfg.BoolOpt('api_v1',
577 default=True,
578 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800579 cfg.BoolOpt('api_v2',
580 default=True,
581 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000582]
583
Daryl Walleck587385b2012-03-03 13:00:26 -0600584
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500585object_storage_group = cfg.OptGroup(name='object-storage',
586 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200587
DennyZhang1e71b612013-09-26 12:35:40 -0500588ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500589 cfg.StrOpt('catalog_type',
590 default='object-store',
591 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900592 cfg.StrOpt('region',
593 default='',
594 help="The object-storage region name to use. If empty, the "
595 "value of identity.region is used instead. If no such "
596 "region is found in the service catalog, the first found "
597 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000598 cfg.StrOpt('endpoint_type',
599 default='publicURL',
600 choices=['public', 'admin', 'internal',
601 'publicURL', 'adminURL', 'internalURL'],
602 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000603 cfg.IntOpt('container_sync_timeout',
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900604 default=600,
Fabien Boucher2178d312013-12-31 15:38:57 +0100605 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000606 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000607 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000608 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100609 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000610 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400611 cfg.StrOpt('operator_role',
612 default='Member',
613 help="Role to add to users created for swift tests to "
614 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500615 cfg.StrOpt('reseller_admin_role',
616 default='ResellerAdmin',
617 help="User role that has reseller admin"),
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900618 cfg.StrOpt('realm_name',
619 default='realm1',
620 help="Name of sync realm. A sync realm is a set of clusters "
621 "that have agreed to allow container syncing with each "
622 "other. Set the same realm name as Swift's "
623 "container-sync-realms.conf"),
624 cfg.StrOpt('cluster_name',
625 default='name1',
626 help="One name of cluster which is set in the realm whose name "
627 "is set in 'realm_name' item in this file. Set the "
628 "same cluster name as Swift's container-sync-realms.conf"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500629]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200630
Matthew Treinishd5c96022013-10-17 21:51:23 +0000631object_storage_feature_group = cfg.OptGroup(
632 name='object-storage-feature-enabled',
633 title='Enabled object-storage features')
634
635ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000636 cfg.ListOpt('discoverable_apis',
637 default=['all'],
638 help="A list of the enabled optional discoverable apis. "
639 "A single entry, all, indicates that all of these "
640 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900641 cfg.BoolOpt('container_sync',
642 default=True,
643 help="Execute (old style) container-sync tests"),
644 cfg.BoolOpt('object_versioning',
645 default=True,
646 help="Execute object-versioning tests"),
647 cfg.BoolOpt('discoverability',
648 default=True,
649 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000650]
651
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800652database_group = cfg.OptGroup(name='database',
653 title='Database Service Options')
654
655DatabaseGroup = [
656 cfg.StrOpt('catalog_type',
657 default='database',
658 help="Catalog type of the Database service."),
659 cfg.StrOpt('db_flavor_ref',
660 default="1",
661 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400662 cfg.StrOpt('db_current_version',
663 default="v1.0",
664 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800665]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200666
Steve Bakerc60e4e32013-05-06 15:22:41 +1200667orchestration_group = cfg.OptGroup(name='orchestration',
668 title='Orchestration Service Options')
669
670OrchestrationGroup = [
671 cfg.StrOpt('catalog_type',
672 default='orchestration',
673 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900674 cfg.StrOpt('region',
675 default='',
676 help="The orchestration region name to use. If empty, the "
677 "value of identity.region is used instead. If no such "
678 "region is found in the service catalog, the first found "
679 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000680 cfg.StrOpt('endpoint_type',
681 default='publicURL',
682 choices=['public', 'admin', 'internal',
683 'publicURL', 'adminURL', 'internalURL'],
684 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200685 cfg.IntOpt('build_interval',
686 default=1,
687 help="Time in seconds between build status checks."),
688 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400689 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200690 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200691 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200692 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200693 help="Instance type for tests. Needs to be big enough for a "
694 "full OS plus the test workload"),
695 cfg.StrOpt('image_ref',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200696 help="Name of heat-cfntools enabled image to use when "
697 "launching test instances."),
698 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200699 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700700 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100701 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700702 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000703 cfg.IntOpt('max_resources_per_stack',
704 default=1000,
705 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200706]
707
708
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100709telemetry_group = cfg.OptGroup(name='telemetry',
710 title='Telemetry Service Options')
711
712TelemetryGroup = [
713 cfg.StrOpt('catalog_type',
714 default='metering',
715 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000716 cfg.StrOpt('endpoint_type',
717 default='publicURL',
718 choices=['public', 'admin', 'internal',
719 'publicURL', 'adminURL', 'internalURL'],
720 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400721 cfg.BoolOpt('too_slow_to_test',
722 default=True,
723 help="This variable is used as flag to enable "
724 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100725]
726
727
Julie Pichond1017642013-07-24 16:37:23 +0100728dashboard_group = cfg.OptGroup(name="dashboard",
729 title="Dashboard options")
730
731DashboardGroup = [
732 cfg.StrOpt('dashboard_url',
733 default='http://localhost/',
734 help="Where the dashboard can be found"),
735 cfg.StrOpt('login_url',
736 default='http://localhost/auth/login/',
737 help="Login page for the dashboard"),
738]
739
740
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400741data_processing_group = cfg.OptGroup(name="data_processing",
742 title="Data Processing options")
743
744DataProcessingGroup = [
745 cfg.StrOpt('catalog_type',
746 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000747 help="Catalog type of the data processing service."),
748 cfg.StrOpt('endpoint_type',
749 default='publicURL',
750 choices=['public', 'admin', 'internal',
751 'publicURL', 'adminURL', 'internalURL'],
752 help="The endpoint type to use for the data processing "
753 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400754]
755
756
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500757boto_group = cfg.OptGroup(name='boto',
758 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500759BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500760 cfg.StrOpt('ec2_url',
761 default="http://localhost:8773/services/Cloud",
762 help="EC2 URL"),
763 cfg.StrOpt('s3_url',
764 default="http://localhost:8080",
765 help="S3 URL"),
766 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500767 help="AWS Secret Key",
768 secret=True),
769 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500770 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100771 cfg.StrOpt('aws_zone',
772 default="nova",
773 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500774 cfg.StrOpt('s3_materials_path',
775 default="/opt/stack/devstack/files/images/"
776 "s3-materials/cirros-0.3.0",
777 help="S3 Materials Path"),
778 cfg.StrOpt('ari_manifest',
779 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
780 help="ARI Ramdisk Image manifest"),
781 cfg.StrOpt('ami_manifest',
782 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
783 help="AMI Machine Image manifest"),
784 cfg.StrOpt('aki_manifest',
785 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
786 help="AKI Kernel Image manifest"),
787 cfg.StrOpt('instance_type',
788 default="m1.tiny",
789 help="Instance type"),
790 cfg.IntOpt('http_socket_timeout',
791 default=3,
792 help="boto Http socket timeout"),
793 cfg.IntOpt('num_retries',
794 default=1,
795 help="boto num_retries on error"),
796 cfg.IntOpt('build_timeout',
797 default=60,
798 help="Status Change Timeout"),
799 cfg.IntOpt('build_interval',
800 default=1,
801 help="Status Change Test Interval"),
802]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100803
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500804stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
805
806StressGroup = [
807 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500808 help='Directory containing log files on the compute nodes'),
809 cfg.IntOpt('max_instances',
810 default=16,
811 help='Maximum number of instances to create during test.'),
812 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400813 help='Controller host.'),
814 # new stress options
815 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400816 help='Controller host.'),
817 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400818 help='ssh user.'),
819 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400820 help='Path to private key.'),
821 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400822 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000823 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400824 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200825 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000826 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200827 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100828 help='The number of threads created while stress test.'),
829 cfg.BoolOpt('leave_dirty_stack',
830 default=False,
831 help='Prevent the cleaning (tearDownClass()) between'
832 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100833 ' during this run.'),
834 cfg.BoolOpt('full_clean_stack',
835 default=False,
836 help='Allows a full cleaning process after a stress test.'
837 ' Caution : this cleanup will remove every objects of'
838 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500839]
840
841
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900842scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
843
844ScenarioGroup = [
845 cfg.StrOpt('img_dir',
846 default='/opt/stack/new/devstack/files/images/'
847 'cirros-0.3.1-x86_64-uec',
848 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300849 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900850 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300851 help='Image file name'),
852 cfg.StrOpt('img_disk_format',
853 default='qcow2',
854 help='Image disk format'),
855 cfg.StrOpt('img_container_format',
856 default='bare',
857 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900858 cfg.StrOpt('ami_img_file',
859 default='cirros-0.3.1-x86_64-blank.img',
860 help='AMI image file name'),
861 cfg.StrOpt('ari_img_file',
862 default='cirros-0.3.1-x86_64-initrd',
863 help='ARI image file name'),
864 cfg.StrOpt('aki_img_file',
865 default='cirros-0.3.1-x86_64-vmlinuz',
866 help='AKI image file name'),
867 cfg.StrOpt('ssh_user',
868 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000869 help='ssh username for the image file'),
870 cfg.IntOpt(
871 'large_ops_number',
872 default=0,
873 help="specifies how many resources to request at once. Used "
Yair Fried413bf2d2014-11-19 17:07:11 +0200874 "for large operations testing."),
875 # TODO(yfried): add support for dhcpcd
876 cfg.StrOpt('dhcp_client',
877 default='udhcpc',
878 choices=["udhcpc", "dhclient"],
879 help='DHCP client used by images to renew DCHP lease. '
880 'If left empty, update operation will be skipped. '
881 'Supported clients: "udhcpc", "dhclient"')
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 = [
Sean Daguec522c092014-03-24 10:43:22 -0400931 cfg.StrOpt('trace_requests',
932 default='',
933 help="""A regex to determine which requests should be traced.
934
935This is a regex to match the caller for rest client requests to be able to
936selectively trace calls out of specific classes and methods. It largely
937exists for test development, and is not expected to be used in a real deploy
938of tempest. This will be matched against the discovered ClassName:method
939in the test environment.
940
941Expected values for this field are:
942
943 * ClassName:test_method_name - traces one test_method
944 * ClassName:setUp(Class) - traces specific setup functions
945 * ClassName:tearDown(Class) - traces specific teardown functions
946 * ClassName:_run_cleanups - traces the cleanup functions
947
948If nothing is specified, this feature is not enabled. To trace everything
949specify .* as the regex.
950""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200951]
952
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000953input_scenario_group = cfg.OptGroup(name="input-scenario",
954 title="Filters and values for"
955 " input scenarios")
956
957InputScenarioGroup = [
958 cfg.StrOpt('image_regex',
959 default='^cirros-0.3.1-x86_64-uec$',
960 help="Matching images become parameters for scenario tests"),
961 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000962 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000963 help="Matching flavors become parameters for scenario tests"),
964 cfg.StrOpt('non_ssh_image_regex',
965 default='^.*[Ww]in.*$',
966 help="SSH verification in tests is skipped"
967 "for matching images"),
968 cfg.StrOpt('ssh_user_regex',
969 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
970 help="List of user mapped to regex "
971 "to matching image names."),
972]
973
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200974
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300975baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800976 title='Baremetal provisioning service options',
977 help='When enabling baremetal tests, Nova '
978 'must be configured to use the Ironic '
979 'driver. The following paremeters for the '
980 '[compute] section must be disabled: '
981 'console_output, interface_attach, '
982 'live_migration, pause, rescue, resize '
983 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300984
985BaremetalGroup = [
986 cfg.StrOpt('catalog_type',
987 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -0700988 help="Catalog type of the baremetal provisioning service"),
989 cfg.BoolOpt('driver_enabled',
990 default=False,
991 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +0900992 cfg.StrOpt('driver',
993 default='fake',
994 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +0000995 cfg.StrOpt('endpoint_type',
996 default='publicURL',
997 choices=['public', 'admin', 'internal',
998 'publicURL', 'adminURL', 'internalURL'],
999 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001000 "service"),
1001 cfg.IntOpt('active_timeout',
1002 default=300,
1003 help="Timeout for Ironic node to completely provision"),
1004 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001005 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001006 help="Timeout for association of Nova instance and Ironic "
1007 "node"),
1008 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001009 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001010 help="Timeout for Ironic power transitions."),
1011 cfg.IntOpt('unprovision_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001012 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001013 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001014]
1015
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001016cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
1017
1018CLIGroup = [
1019 cfg.BoolOpt('enabled',
1020 default=True,
1021 help="enable cli tests"),
1022 cfg.StrOpt('cli_dir',
1023 default='/usr/local/bin',
1024 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -05001025 cfg.BoolOpt('has_manage',
1026 default=True,
1027 help=("Whether the tempest run location has access to the "
1028 "*-manage commands. In a pure blackbox environment "
1029 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001030 cfg.IntOpt('timeout',
1031 default=15,
1032 help="Number of seconds to wait on a CLI timeout"),
1033]
1034
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001035negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1036
1037NegativeGroup = [
1038 cfg.StrOpt('test_generator',
1039 default='tempest.common.' +
1040 'generator.negative_generator.NegativeTestGenerator',
1041 help="Test generator class for all negative tests"),
1042]
1043
Jon Grimm270bd7f2014-08-05 18:11:29 +00001044_opts = [
1045 (auth_group, AuthGroup),
1046 (compute_group, ComputeGroup),
1047 (compute_features_group, ComputeFeaturesGroup),
1048 (identity_group, IdentityGroup),
1049 (identity_feature_group, IdentityFeatureGroup),
1050 (image_group, ImageGroup),
1051 (image_feature_group, ImageFeaturesGroup),
1052 (network_group, NetworkGroup),
1053 (network_feature_group, NetworkFeaturesGroup),
1054 (messaging_group, MessagingGroup),
1055 (volume_group, VolumeGroup),
1056 (volume_feature_group, VolumeFeaturesGroup),
1057 (object_storage_group, ObjectStoreGroup),
1058 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1059 (database_group, DatabaseGroup),
1060 (orchestration_group, OrchestrationGroup),
1061 (telemetry_group, TelemetryGroup),
1062 (dashboard_group, DashboardGroup),
1063 (data_processing_group, DataProcessingGroup),
1064 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001065 (stress_group, StressGroup),
1066 (scenario_group, ScenarioGroup),
1067 (service_available_group, ServiceAvailableGroup),
1068 (debug_group, DebugGroup),
1069 (baremetal_group, BaremetalGroup),
1070 (input_scenario_group, InputScenarioGroup),
1071 (cli_group, CLIGroup),
1072 (negative_group, NegativeGroup)
1073]
1074
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001075
Matthew Treinish43b296a2014-02-28 15:23:00 -05001076def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001077 for g, o in _opts:
1078 register_opt_group(cfg.CONF, g, o)
1079
1080
1081def list_opts():
1082 """Return a list of oslo.config options available.
1083
1084 The purpose of this is to allow tools like the Oslo sample config file
1085 generator to discover the options exposed to users.
1086 """
1087 optlist = [(g.name, o) for g, o in _opts]
1088
1089 # NOTE(jgrimm): Can be removed once oslo-incubator/oslo changes happen.
1090 optlist.append((None, lockutils.util_opts))
1091 optlist.append((None, logging.common_cli_opts))
1092 optlist.append((None, logging.logging_cli_opts))
1093 optlist.append((None, logging.generic_log_opts))
1094 optlist.append((None, logging.log_opts))
1095
1096 return optlist
Matthew Treinish43b296a2014-02-28 15:23:00 -05001097
1098
Sean Dague3b9b1f32013-12-20 17:04:54 -05001099# this should never be called outside of this class
1100class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001101 """Provides OpenStack configuration information."""
1102
Brian Waldon738cd632011-12-12 18:45:09 -05001103 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001104 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001105 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001106
Brian Waldon738cd632011-12-12 18:45:09 -05001107 DEFAULT_CONFIG_FILE = "tempest.conf"
1108
Andrea Frittolia96ee212014-08-15 18:34:20 +01001109 def __getattr__(self, attr):
1110 # Handles config options from the default group
1111 return getattr(cfg.CONF, attr)
1112
Matthew Treinish43b296a2014-02-28 15:23:00 -05001113 def _set_attrs(self):
Matthew Treinishc791ac42014-07-16 09:15:23 -04001114 self.auth = cfg.CONF.auth
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001115 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001116 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001117 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001118 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001119 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001120 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001121 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001122 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001123 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001124 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001125 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001126 self.object_storage_feature_enabled = cfg.CONF[
1127 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001128 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001129 self.orchestration = cfg.CONF.orchestration
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -03001130 self.messaging = cfg.CONF.messaging
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001131 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001132 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001133 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001134 self.boto = cfg.CONF.boto
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001135 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001136 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001137 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001138 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001139 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001140 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001141 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001142 self.negative = cfg.CONF.negative
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001143 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1144 group='identity')
1145 cfg.CONF.set_default('alt_domain_name',
1146 self.identity.admin_domain_name,
1147 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001148
Joe Gordon28a84ae2014-07-17 15:38:28 +00001149 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001150 """Initialize a configuration from a conf directory and conf file."""
1151 super(TempestConfigPrivate, self).__init__()
1152 config_files = []
1153 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1154
Joe Gordon28a84ae2014-07-17 15:38:28 +00001155 if config_path:
1156 path = config_path
1157 else:
1158 # Environment variables override defaults...
1159 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1160 self.DEFAULT_CONFIG_DIR)
1161 conf_file = os.environ.get('TEMPEST_CONFIG',
1162 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001163
Joe Gordon28a84ae2014-07-17 15:38:28 +00001164 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001165
1166 if not os.path.isfile(path):
1167 path = failsafe_path
1168
1169 # only parse the config file if we expect one to exist. This is needed
1170 # to remove an issue with the config file up to date checker.
1171 if parse_conf:
1172 config_files.append(path)
Matthew Treinish5440a402014-10-02 14:36:16 -04001173 if os.path.isfile(path):
1174 cfg.CONF([], project='tempest', default_config_files=config_files)
1175 else:
1176 cfg.CONF([], project='tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001177 logging.setup('tempest')
1178 LOG = logging.getLogger('tempest')
1179 LOG.info("Using tempest config file %s" % path)
1180 register_opts()
1181 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001182 if parse_conf:
1183 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1184
Sean Dague86bd8422013-12-20 09:56:44 -05001185
1186class TempestConfigProxy(object):
1187 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001188 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001189
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001190 _extra_log_defaults = [
1191 'keystoneclient.session=INFO',
1192 'paramiko.transport=INFO',
1193 'requests.packages.urllib3.connectionpool=WARN'
1194 ]
1195
1196 def _fix_log_levels(self):
1197 """Tweak the oslo log defaults."""
1198 for opt in logging.log_opts:
1199 if opt.dest == 'default_log_levels':
1200 opt.default.extend(self._extra_log_defaults)
1201
Sean Dague86bd8422013-12-20 09:56:44 -05001202 def __getattr__(self, attr):
1203 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001204 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001205 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001206
1207 return getattr(self._config, attr)
1208
Joe Gordon28a84ae2014-07-17 15:38:28 +00001209 def set_config_path(self, path):
1210 self._path = path
1211
Sean Dague86bd8422013-12-20 09:56:44 -05001212
1213CONF = TempestConfigProxy()