blob: a66aa9b3f953f739e7bfb50a920c8fb33fcc29ec [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',
Attila Fazekas5dda1582015-02-18 17:16:02 +010043 default=True,
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010044 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 '
Matthew Treinishdfd7ac02015-02-09 17:47:31 -0500352 'images of running instances?'),
353 cfg.BoolOpt('ec2_api',
354 default=True,
355 help='Does the test environment have the ec2 api running?')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000356]
357
358
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500359image_group = cfg.OptGroup(name='image',
360 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400361
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500362ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500363 cfg.StrOpt('catalog_type',
364 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400365 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900366 cfg.StrOpt('region',
367 default='',
368 help="The image region name to use. If empty, the value "
369 "of identity.region is used instead. If no such region "
370 "is found in the service catalog, the first found one is "
371 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000372 cfg.StrOpt('endpoint_type',
373 default='publicURL',
374 choices=['public', 'admin', 'internal',
375 'publicURL', 'adminURL', 'internalURL'],
376 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400377 cfg.StrOpt('http_image',
378 default='http://download.cirros-cloud.net/0.3.1/'
379 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200380 help='http accessible image'),
381 cfg.IntOpt('build_timeout',
382 default=300,
383 help="Timeout in seconds to wait for an image to "
384 "become available."),
385 cfg.IntOpt('build_interval',
386 default=1,
387 help="Time in seconds between image operation status "
388 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500389]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400390
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000391image_feature_group = cfg.OptGroup(name='image-feature-enabled',
392 title='Enabled image service features')
393
394ImageFeaturesGroup = [
395 cfg.BoolOpt('api_v2',
396 default=True,
397 help="Is the v2 image API enabled"),
398 cfg.BoolOpt('api_v1',
399 default=True,
400 help="Is the v1 image API enabled"),
401]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400402
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500403network_group = cfg.OptGroup(name='network',
404 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600405
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500406NetworkGroup = [
407 cfg.StrOpt('catalog_type',
408 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400409 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900410 cfg.StrOpt('region',
411 default='',
412 help="The network region name to use. If empty, the value "
413 "of identity.region is used instead. If no such region "
414 "is found in the service catalog, the first found one is "
415 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000416 cfg.StrOpt('endpoint_type',
417 default='publicURL',
418 choices=['public', 'admin', 'internal',
419 'publicURL', 'adminURL', 'internalURL'],
420 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500421 cfg.StrOpt('tenant_network_cidr',
422 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500423 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500424 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200425 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500426 help="The mask bits for tenant ipv4 subnets"),
427 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400428 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500429 help="The cidr block to allocate tenant ipv6 subnets from"),
430 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400431 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500432 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500433 cfg.BoolOpt('tenant_networks_reachable',
434 default=False,
435 help="Whether tenant network connectivity should be "
436 "evaluated directly"),
437 cfg.StrOpt('public_network_id',
438 default="",
439 help="Id of the public network that provides external "
440 "connectivity"),
441 cfg.StrOpt('public_router_id',
442 default="",
443 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200444 "connectivity. This should only be used when Neutron's "
445 "'allow_overlapping_ips' is set to 'False' in "
446 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200447 cfg.IntOpt('build_timeout',
448 default=300,
449 help="Timeout in seconds to wait for network operation to "
450 "complete."),
451 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400452 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200453 help="Time in seconds between network operation status "
454 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200455 cfg.ListOpt('dns_servers',
456 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200457 help="List of dns servers which should be used"
Itzik Brown2ca01cd2014-12-08 12:58:20 +0200458 " for subnet creation"),
459 cfg.StrOpt('port_vnic_type',
460 choices=[None, 'normal', 'direct', 'macvtap'],
461 help="vnic_type to use when Launching instances"
462 " with pre-configured ports."
463 " Supported ports are:"
464 " ['normal','direct','macvtap']"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500465]
Jay Pipes3f981df2012-03-27 18:59:44 -0400466
Matthew Treinishe3d26142013-11-26 19:14:58 +0000467network_feature_group = cfg.OptGroup(name='network-feature-enabled',
468 title='Enabled network service features')
469
470NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000471 cfg.BoolOpt('ipv6',
472 default=True,
473 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000474 cfg.ListOpt('api_extensions',
475 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800476 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300477 'entry all which indicates every extension is enabled. '
478 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400479 cfg.BoolOpt('ipv6_subnet_attributes',
480 default=False,
481 help="Allow the execution of IPv6 subnet tests that use "
482 "the extended IPv6 attributes ipv6_ra_mode "
483 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400484 ),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000485]
486
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300487messaging_group = cfg.OptGroup(name='messaging',
488 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500489
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300490MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500491 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300492 default='messaging',
493 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000494 cfg.IntOpt('max_queues_per_page',
495 default=20,
496 help='The maximum number of queue records per page when '
497 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400498 cfg.IntOpt('max_queue_metadata',
499 default=65536,
500 help='The maximum metadata size for a queue'),
501 cfg.IntOpt('max_messages_per_page',
502 default=20,
503 help='The maximum number of queue message per page when '
504 'listing (or) posting messages'),
505 cfg.IntOpt('max_message_size',
506 default=262144,
507 help='The maximum size of a message body'),
508 cfg.IntOpt('max_messages_per_claim',
509 default=20,
510 help='The maximum number of messages per claim'),
511 cfg.IntOpt('max_message_ttl',
512 default=1209600,
513 help='The maximum ttl for a message'),
514 cfg.IntOpt('max_claim_ttl',
515 default=43200,
516 help='The maximum ttl for a claim'),
517 cfg.IntOpt('max_claim_grace',
518 default=43200,
519 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500520]
521
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500522volume_group = cfg.OptGroup(name='volume',
523 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600524
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500525VolumeGroup = [
526 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400527 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500528 help='Time in seconds between volume availability checks.'),
529 cfg.IntOpt('build_timeout',
530 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400531 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500532 'available.'),
533 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000534 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500535 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900536 cfg.StrOpt('region',
537 default='',
538 help="The volume region name to use. If empty, the value "
539 "of identity.region is used instead. If no such region "
540 "is found in the service catalog, the first found one is "
541 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000542 cfg.StrOpt('endpoint_type',
543 default='publicURL',
544 choices=['public', 'admin', 'internal',
545 'publicURL', 'adminURL', 'internalURL'],
546 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100547 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200548 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100549 help="Name of the backend1 (must be declared in cinder.conf)"),
550 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200551 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100552 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700553 cfg.StrOpt('storage_protocol',
554 default='iSCSI',
555 help='Backend protocol to target when creating volume types'),
556 cfg.StrOpt('vendor_name',
557 default='Open Source',
558 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700559 cfg.StrOpt('disk_format',
560 default='raw',
561 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800562 cfg.IntOpt('volume_size',
563 default=1,
564 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500565]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800566
Matthew Treinishd5c96022013-10-17 21:51:23 +0000567volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
568 title='Enabled Cinder Features')
569
570VolumeFeaturesGroup = [
571 cfg.BoolOpt('multi_backend',
572 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000573 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100574 cfg.BoolOpt('backup',
575 default=True,
576 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100577 cfg.BoolOpt('snapshot',
578 default=True,
579 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000580 cfg.ListOpt('api_extensions',
581 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800582 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300583 'entry all which indicates every extension is enabled. '
584 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800585 cfg.BoolOpt('api_v1',
586 default=True,
587 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800588 cfg.BoolOpt('api_v2',
589 default=True,
590 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000591]
592
Daryl Walleck587385b2012-03-03 13:00:26 -0600593
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500594object_storage_group = cfg.OptGroup(name='object-storage',
595 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200596
DennyZhang1e71b612013-09-26 12:35:40 -0500597ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500598 cfg.StrOpt('catalog_type',
599 default='object-store',
600 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900601 cfg.StrOpt('region',
602 default='',
603 help="The object-storage region name to use. If empty, the "
604 "value of identity.region is used instead. If no such "
605 "region is found in the service catalog, the first found "
606 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000607 cfg.StrOpt('endpoint_type',
608 default='publicURL',
609 choices=['public', 'admin', 'internal',
610 'publicURL', 'adminURL', 'internalURL'],
611 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000612 cfg.IntOpt('container_sync_timeout',
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900613 default=600,
Fabien Boucher2178d312013-12-31 15:38:57 +0100614 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000615 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000616 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000617 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100618 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000619 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400620 cfg.StrOpt('operator_role',
621 default='Member',
622 help="Role to add to users created for swift tests to "
623 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500624 cfg.StrOpt('reseller_admin_role',
625 default='ResellerAdmin',
626 help="User role that has reseller admin"),
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900627 cfg.StrOpt('realm_name',
628 default='realm1',
629 help="Name of sync realm. A sync realm is a set of clusters "
630 "that have agreed to allow container syncing with each "
631 "other. Set the same realm name as Swift's "
632 "container-sync-realms.conf"),
633 cfg.StrOpt('cluster_name',
634 default='name1',
635 help="One name of cluster which is set in the realm whose name "
636 "is set in 'realm_name' item in this file. Set the "
637 "same cluster name as Swift's container-sync-realms.conf"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500638]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200639
Matthew Treinishd5c96022013-10-17 21:51:23 +0000640object_storage_feature_group = cfg.OptGroup(
641 name='object-storage-feature-enabled',
642 title='Enabled object-storage features')
643
644ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000645 cfg.ListOpt('discoverable_apis',
646 default=['all'],
647 help="A list of the enabled optional discoverable apis. "
648 "A single entry, all, indicates that all of these "
649 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900650 cfg.BoolOpt('container_sync',
651 default=True,
652 help="Execute (old style) container-sync tests"),
653 cfg.BoolOpt('object_versioning',
654 default=True,
655 help="Execute object-versioning tests"),
656 cfg.BoolOpt('discoverability',
657 default=True,
658 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000659]
660
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800661database_group = cfg.OptGroup(name='database',
662 title='Database Service Options')
663
664DatabaseGroup = [
665 cfg.StrOpt('catalog_type',
666 default='database',
667 help="Catalog type of the Database service."),
668 cfg.StrOpt('db_flavor_ref',
669 default="1",
670 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400671 cfg.StrOpt('db_current_version',
672 default="v1.0",
673 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800674]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200675
Steve Bakerc60e4e32013-05-06 15:22:41 +1200676orchestration_group = cfg.OptGroup(name='orchestration',
677 title='Orchestration Service Options')
678
679OrchestrationGroup = [
680 cfg.StrOpt('catalog_type',
681 default='orchestration',
682 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900683 cfg.StrOpt('region',
684 default='',
685 help="The orchestration region name to use. If empty, the "
686 "value of identity.region is used instead. If no such "
687 "region is found in the service catalog, the first found "
688 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000689 cfg.StrOpt('endpoint_type',
690 default='publicURL',
691 choices=['public', 'admin', 'internal',
692 'publicURL', 'adminURL', 'internalURL'],
693 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200694 cfg.IntOpt('build_interval',
695 default=1,
696 help="Time in seconds between build status checks."),
697 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400698 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200699 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200700 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200701 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200702 help="Instance type for tests. Needs to be big enough for a "
703 "full OS plus the test workload"),
704 cfg.StrOpt('image_ref',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200705 help="Name of heat-cfntools enabled image to use when "
706 "launching test instances."),
707 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200708 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700709 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100710 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700711 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000712 cfg.IntOpt('max_resources_per_stack',
713 default=1000,
714 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200715]
716
717
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100718telemetry_group = cfg.OptGroup(name='telemetry',
719 title='Telemetry Service Options')
720
721TelemetryGroup = [
722 cfg.StrOpt('catalog_type',
723 default='metering',
724 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000725 cfg.StrOpt('endpoint_type',
726 default='publicURL',
727 choices=['public', 'admin', 'internal',
728 'publicURL', 'adminURL', 'internalURL'],
729 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400730 cfg.BoolOpt('too_slow_to_test',
731 default=True,
732 help="This variable is used as flag to enable "
733 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100734]
735
736
Julie Pichond1017642013-07-24 16:37:23 +0100737dashboard_group = cfg.OptGroup(name="dashboard",
738 title="Dashboard options")
739
740DashboardGroup = [
741 cfg.StrOpt('dashboard_url',
742 default='http://localhost/',
743 help="Where the dashboard can be found"),
744 cfg.StrOpt('login_url',
745 default='http://localhost/auth/login/',
746 help="Login page for the dashboard"),
747]
748
749
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400750data_processing_group = cfg.OptGroup(name="data_processing",
751 title="Data Processing options")
752
753DataProcessingGroup = [
754 cfg.StrOpt('catalog_type',
755 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000756 help="Catalog type of the data processing service."),
757 cfg.StrOpt('endpoint_type',
758 default='publicURL',
759 choices=['public', 'admin', 'internal',
760 'publicURL', 'adminURL', 'internalURL'],
761 help="The endpoint type to use for the data processing "
762 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400763]
764
765
Luigi Toscano14d172d2015-01-23 16:37:47 +0100766data_processing_feature_group = cfg.OptGroup(
767 name="data_processing-feature-enabled",
768 title="Enabled Data Processing features")
769
770DataProcessingFeaturesGroup = [
771 cfg.ListOpt('plugins',
772 default=["vanilla", "hdp"],
773 help="List of enabled data processing plugins")
774]
775
776
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500777boto_group = cfg.OptGroup(name='boto',
778 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500779BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500780 cfg.StrOpt('ec2_url',
781 default="http://localhost:8773/services/Cloud",
782 help="EC2 URL"),
783 cfg.StrOpt('s3_url',
784 default="http://localhost:8080",
785 help="S3 URL"),
786 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500787 help="AWS Secret Key",
788 secret=True),
789 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500790 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100791 cfg.StrOpt('aws_zone',
792 default="nova",
793 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500794 cfg.StrOpt('s3_materials_path',
795 default="/opt/stack/devstack/files/images/"
796 "s3-materials/cirros-0.3.0",
797 help="S3 Materials Path"),
798 cfg.StrOpt('ari_manifest',
799 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
800 help="ARI Ramdisk Image manifest"),
801 cfg.StrOpt('ami_manifest',
802 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
803 help="AMI Machine Image manifest"),
804 cfg.StrOpt('aki_manifest',
805 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
806 help="AKI Kernel Image manifest"),
807 cfg.StrOpt('instance_type',
808 default="m1.tiny",
809 help="Instance type"),
810 cfg.IntOpt('http_socket_timeout',
811 default=3,
812 help="boto Http socket timeout"),
813 cfg.IntOpt('num_retries',
814 default=1,
815 help="boto num_retries on error"),
816 cfg.IntOpt('build_timeout',
817 default=60,
818 help="Status Change Timeout"),
819 cfg.IntOpt('build_interval',
820 default=1,
821 help="Status Change Test Interval"),
822]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100823
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500824stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
825
826StressGroup = [
827 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500828 help='Directory containing log files on the compute nodes'),
829 cfg.IntOpt('max_instances',
830 default=16,
831 help='Maximum number of instances to create during test.'),
832 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400833 help='Controller host.'),
834 # new stress options
835 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400836 help='Controller host.'),
837 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400838 help='ssh user.'),
839 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400840 help='Path to private key.'),
841 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400842 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000843 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400844 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200845 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000846 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200847 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100848 help='The number of threads created while stress test.'),
849 cfg.BoolOpt('leave_dirty_stack',
850 default=False,
851 help='Prevent the cleaning (tearDownClass()) between'
852 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100853 ' during this run.'),
854 cfg.BoolOpt('full_clean_stack',
855 default=False,
856 help='Allows a full cleaning process after a stress test.'
857 ' Caution : this cleanup will remove every objects of'
858 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500859]
860
861
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900862scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
863
864ScenarioGroup = [
865 cfg.StrOpt('img_dir',
866 default='/opt/stack/new/devstack/files/images/'
867 'cirros-0.3.1-x86_64-uec',
868 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300869 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900870 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300871 help='Image file name'),
872 cfg.StrOpt('img_disk_format',
873 default='qcow2',
874 help='Image disk format'),
875 cfg.StrOpt('img_container_format',
876 default='bare',
877 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900878 cfg.StrOpt('ami_img_file',
879 default='cirros-0.3.1-x86_64-blank.img',
880 help='AMI image file name'),
881 cfg.StrOpt('ari_img_file',
882 default='cirros-0.3.1-x86_64-initrd',
883 help='ARI image file name'),
884 cfg.StrOpt('aki_img_file',
885 default='cirros-0.3.1-x86_64-vmlinuz',
886 help='AKI image file name'),
887 cfg.StrOpt('ssh_user',
888 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000889 help='ssh username for the image file'),
890 cfg.IntOpt(
891 'large_ops_number',
892 default=0,
893 help="specifies how many resources to request at once. Used "
Yair Fried413bf2d2014-11-19 17:07:11 +0200894 "for large operations testing."),
895 # TODO(yfried): add support for dhcpcd
896 cfg.StrOpt('dhcp_client',
897 default='udhcpc',
898 choices=["udhcpc", "dhclient"],
899 help='DHCP client used by images to renew DCHP lease. '
900 'If left empty, update operation will be skipped. '
901 'Supported clients: "udhcpc", "dhclient"')
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900902]
903
904
Matthew Treinish4c412922013-07-16 15:27:42 -0400905service_available_group = cfg.OptGroup(name="service_available",
906 title="Available OpenStack Services")
907
908ServiceAvailableGroup = [
909 cfg.BoolOpt('cinder',
910 default=True,
911 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400912 cfg.BoolOpt('neutron',
913 default=False,
914 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400915 cfg.BoolOpt('glance',
916 default=True,
917 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400918 cfg.BoolOpt('swift',
919 default=True,
920 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400921 cfg.BoolOpt('nova',
922 default=True,
923 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400924 cfg.BoolOpt('heat',
925 default=False,
926 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200927 cfg.BoolOpt('ceilometer',
928 default=True,
929 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100930 cfg.BoolOpt('horizon',
931 default=True,
932 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400933 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400934 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400935 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300936 cfg.BoolOpt('ironic',
937 default=False,
938 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800939 cfg.BoolOpt('trove',
940 default=False,
941 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -0400942 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500943 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -0400944 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400945]
946
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200947debug_group = cfg.OptGroup(name="debug",
948 title="Debug System")
949
950DebugGroup = [
Sean Daguec522c092014-03-24 10:43:22 -0400951 cfg.StrOpt('trace_requests',
952 default='',
953 help="""A regex to determine which requests should be traced.
954
955This is a regex to match the caller for rest client requests to be able to
956selectively trace calls out of specific classes and methods. It largely
957exists for test development, and is not expected to be used in a real deploy
958of tempest. This will be matched against the discovered ClassName:method
959in the test environment.
960
961Expected values for this field are:
962
963 * ClassName:test_method_name - traces one test_method
964 * ClassName:setUp(Class) - traces specific setup functions
965 * ClassName:tearDown(Class) - traces specific teardown functions
966 * ClassName:_run_cleanups - traces the cleanup functions
967
968If nothing is specified, this feature is not enabled. To trace everything
969specify .* as the regex.
970""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200971]
972
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000973input_scenario_group = cfg.OptGroup(name="input-scenario",
974 title="Filters and values for"
975 " input scenarios")
976
977InputScenarioGroup = [
978 cfg.StrOpt('image_regex',
979 default='^cirros-0.3.1-x86_64-uec$',
980 help="Matching images become parameters for scenario tests"),
981 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000982 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000983 help="Matching flavors become parameters for scenario tests"),
984 cfg.StrOpt('non_ssh_image_regex',
985 default='^.*[Ww]in.*$',
986 help="SSH verification in tests is skipped"
987 "for matching images"),
988 cfg.StrOpt('ssh_user_regex',
989 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
990 help="List of user mapped to regex "
991 "to matching image names."),
992]
993
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200994
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300995baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800996 title='Baremetal provisioning service options',
997 help='When enabling baremetal tests, Nova '
998 'must be configured to use the Ironic '
999 'driver. The following paremeters for the '
1000 '[compute] section must be disabled: '
1001 'console_output, interface_attach, '
1002 'live_migration, pause, rescue, resize '
1003 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001004
1005BaremetalGroup = [
1006 cfg.StrOpt('catalog_type',
1007 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -07001008 help="Catalog type of the baremetal provisioning service"),
1009 cfg.BoolOpt('driver_enabled',
1010 default=False,
1011 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +09001012 cfg.StrOpt('driver',
1013 default='fake',
1014 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +00001015 cfg.StrOpt('endpoint_type',
1016 default='publicURL',
1017 choices=['public', 'admin', 'internal',
1018 'publicURL', 'adminURL', 'internalURL'],
1019 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001020 "service"),
1021 cfg.IntOpt('active_timeout',
1022 default=300,
1023 help="Timeout for Ironic node to completely provision"),
1024 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001025 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001026 help="Timeout for association of Nova instance and Ironic "
1027 "node"),
1028 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001029 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001030 help="Timeout for Ironic power transitions."),
1031 cfg.IntOpt('unprovision_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001032 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001033 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001034]
1035
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001036cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
1037
1038CLIGroup = [
1039 cfg.BoolOpt('enabled',
1040 default=True,
1041 help="enable cli tests"),
1042 cfg.StrOpt('cli_dir',
1043 default='/usr/local/bin',
1044 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -05001045 cfg.BoolOpt('has_manage',
1046 default=True,
1047 help=("Whether the tempest run location has access to the "
1048 "*-manage commands. In a pure blackbox environment "
1049 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001050 cfg.IntOpt('timeout',
1051 default=15,
1052 help="Number of seconds to wait on a CLI timeout"),
1053]
1054
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001055negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1056
1057NegativeGroup = [
1058 cfg.StrOpt('test_generator',
1059 default='tempest.common.' +
1060 'generator.negative_generator.NegativeTestGenerator',
1061 help="Test generator class for all negative tests"),
1062]
1063
Jon Grimm270bd7f2014-08-05 18:11:29 +00001064_opts = [
1065 (auth_group, AuthGroup),
1066 (compute_group, ComputeGroup),
1067 (compute_features_group, ComputeFeaturesGroup),
1068 (identity_group, IdentityGroup),
1069 (identity_feature_group, IdentityFeatureGroup),
1070 (image_group, ImageGroup),
1071 (image_feature_group, ImageFeaturesGroup),
1072 (network_group, NetworkGroup),
1073 (network_feature_group, NetworkFeaturesGroup),
1074 (messaging_group, MessagingGroup),
1075 (volume_group, VolumeGroup),
1076 (volume_feature_group, VolumeFeaturesGroup),
1077 (object_storage_group, ObjectStoreGroup),
1078 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1079 (database_group, DatabaseGroup),
1080 (orchestration_group, OrchestrationGroup),
1081 (telemetry_group, TelemetryGroup),
1082 (dashboard_group, DashboardGroup),
1083 (data_processing_group, DataProcessingGroup),
Luigi Toscano14d172d2015-01-23 16:37:47 +01001084 (data_processing_feature_group, DataProcessingFeaturesGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001085 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001086 (stress_group, StressGroup),
1087 (scenario_group, ScenarioGroup),
1088 (service_available_group, ServiceAvailableGroup),
1089 (debug_group, DebugGroup),
1090 (baremetal_group, BaremetalGroup),
1091 (input_scenario_group, InputScenarioGroup),
1092 (cli_group, CLIGroup),
1093 (negative_group, NegativeGroup)
1094]
1095
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001096
Matthew Treinish43b296a2014-02-28 15:23:00 -05001097def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001098 for g, o in _opts:
1099 register_opt_group(cfg.CONF, g, o)
1100
1101
1102def list_opts():
1103 """Return a list of oslo.config options available.
1104
1105 The purpose of this is to allow tools like the Oslo sample config file
1106 generator to discover the options exposed to users.
1107 """
1108 optlist = [(g.name, o) for g, o in _opts]
1109
1110 # NOTE(jgrimm): Can be removed once oslo-incubator/oslo changes happen.
1111 optlist.append((None, lockutils.util_opts))
1112 optlist.append((None, logging.common_cli_opts))
1113 optlist.append((None, logging.logging_cli_opts))
1114 optlist.append((None, logging.generic_log_opts))
1115 optlist.append((None, logging.log_opts))
1116
1117 return optlist
Matthew Treinish43b296a2014-02-28 15:23:00 -05001118
1119
Sean Dague3b9b1f32013-12-20 17:04:54 -05001120# this should never be called outside of this class
1121class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001122 """Provides OpenStack configuration information."""
1123
Brian Waldon738cd632011-12-12 18:45:09 -05001124 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001125 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001126 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001127
Brian Waldon738cd632011-12-12 18:45:09 -05001128 DEFAULT_CONFIG_FILE = "tempest.conf"
1129
Andrea Frittolia96ee212014-08-15 18:34:20 +01001130 def __getattr__(self, attr):
1131 # Handles config options from the default group
1132 return getattr(cfg.CONF, attr)
1133
Matthew Treinish43b296a2014-02-28 15:23:00 -05001134 def _set_attrs(self):
Matthew Treinishc791ac42014-07-16 09:15:23 -04001135 self.auth = cfg.CONF.auth
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001136 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001137 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001138 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001139 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001140 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001141 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001142 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001143 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001144 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001145 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001146 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001147 self.object_storage_feature_enabled = cfg.CONF[
1148 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001149 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001150 self.orchestration = cfg.CONF.orchestration
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -03001151 self.messaging = cfg.CONF.messaging
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001152 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001153 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001154 self.data_processing = cfg.CONF.data_processing
Luigi Toscano14d172d2015-01-23 16:37:47 +01001155 self.data_processing_feature_enabled = cfg.CONF[
1156 'data_processing-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001157 self.boto = cfg.CONF.boto
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001158 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001159 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001160 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001161 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001162 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001163 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001164 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001165 self.negative = cfg.CONF.negative
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001166 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1167 group='identity')
1168 cfg.CONF.set_default('alt_domain_name',
1169 self.identity.admin_domain_name,
1170 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001171
Joe Gordon28a84ae2014-07-17 15:38:28 +00001172 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001173 """Initialize a configuration from a conf directory and conf file."""
1174 super(TempestConfigPrivate, self).__init__()
1175 config_files = []
1176 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1177
Joe Gordon28a84ae2014-07-17 15:38:28 +00001178 if config_path:
1179 path = config_path
1180 else:
1181 # Environment variables override defaults...
1182 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1183 self.DEFAULT_CONFIG_DIR)
1184 conf_file = os.environ.get('TEMPEST_CONFIG',
1185 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001186
Joe Gordon28a84ae2014-07-17 15:38:28 +00001187 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001188
1189 if not os.path.isfile(path):
1190 path = failsafe_path
1191
1192 # only parse the config file if we expect one to exist. This is needed
1193 # to remove an issue with the config file up to date checker.
1194 if parse_conf:
1195 config_files.append(path)
Matthew Treinish5440a402014-10-02 14:36:16 -04001196 if os.path.isfile(path):
1197 cfg.CONF([], project='tempest', default_config_files=config_files)
1198 else:
1199 cfg.CONF([], project='tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001200 logging.setup('tempest')
1201 LOG = logging.getLogger('tempest')
1202 LOG.info("Using tempest config file %s" % path)
1203 register_opts()
1204 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001205 if parse_conf:
1206 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1207
Sean Dague86bd8422013-12-20 09:56:44 -05001208
1209class TempestConfigProxy(object):
1210 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001211 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001212
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001213 _extra_log_defaults = [
1214 'keystoneclient.session=INFO',
1215 'paramiko.transport=INFO',
1216 'requests.packages.urllib3.connectionpool=WARN'
1217 ]
1218
1219 def _fix_log_levels(self):
1220 """Tweak the oslo log defaults."""
1221 for opt in logging.log_opts:
1222 if opt.dest == 'default_log_levels':
1223 opt.default.extend(self._extra_log_defaults)
1224
Sean Dague86bd8422013-12-20 09:56:44 -05001225 def __getattr__(self, attr):
1226 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001227 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001228 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001229
1230 return getattr(self._config, attr)
1231
Joe Gordon28a84ae2014-07-17 15:38:28 +00001232 def set_config_path(self, path):
1233 self._path = path
1234
Sean Dague86bd8422013-12-20 09:56:44 -05001235
1236CONF = TempestConfigProxy()