blob: dbe9bc2cbc870bbf4034aed46407e85f5fbcc1b7 [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
Jay Pipes3f981df2012-03-27 18:59:44 -04002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Dirk Muellere746fc22013-06-29 16:29:29 +020016from __future__ import print_function
17
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +090018import logging as std_logging
Jay Pipes7f757632011-12-02 15:53:32 -050019import os
Jay Pipes3f981df2012-03-27 18:59:44 -040020
Matthew Treinish90aedd12013-02-25 17:56:49 -050021from oslo.config import cfg
22
Jon Grimm270bd7f2014-08-05 18:11:29 +000023from tempest.openstack.common import lockutils
Matthew Treinishf4a9b0f2013-07-26 16:58:26 -040024from tempest.openstack.common import log as logging
Jay Pipes7f757632011-12-02 15:53:32 -050025
Daryl Walleck1465d612011-11-02 02:22:15 -050026
DennyZhang88a2dd82013-10-07 12:55:35 -050027def register_opt_group(conf, opt_group, options):
28 conf.register_group(opt_group)
29 for opt in options:
30 conf.register_opt(opt, group=opt_group.name)
31
32
Matthew Treinishc791ac42014-07-16 09:15:23 -040033auth_group = cfg.OptGroup(name='auth',
34 title="Options for authentication and credentials")
35
36
37AuthGroup = [
38 cfg.StrOpt('test_accounts_file',
39 default='etc/accounts.yaml',
40 help="Path to the yaml file that contains the list of "
41 "credentials to use for running tests"),
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010042 cfg.BoolOpt('allow_tenant_isolation',
43 default=False,
44 help="Allows test cases to create/destroy tenants and "
45 "users. This option requires that OpenStack Identity "
46 "API admin credentials are known. If false, isolated "
47 "test cases and parallel execution, can still be "
48 "achieved configuring a list of test accounts",
49 deprecated_opts=[cfg.DeprecatedOpt('allow_tenant_isolation',
50 group='compute'),
51 cfg.DeprecatedOpt('allow_tenant_isolation',
52 group='orchestration')]),
53 cfg.BoolOpt('locking_credentials_provider',
54 default=False,
55 help="If set to True it enables the Accounts provider, "
56 "which locks credentials to allow for parallel execution "
57 "with pre-provisioned accounts. It can only be used to "
58 "run tests that ensure credentials cleanup happens. "
59 "It requires at least `2 * CONC` distinct accounts "
60 "configured in `test_accounts_file`, with CONC == the "
61 "number of concurrent test processes."),
Matthew Treinishc791ac42014-07-16 09:15:23 -040062]
63
Matthew Treinish39e48ef2012-12-21 13:36:15 -050064identity_group = cfg.OptGroup(name='identity',
65 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050066
Matthew Treinish39e48ef2012-12-21 13:36:15 -050067IdentityGroup = [
68 cfg.StrOpt('catalog_type',
69 default='identity',
70 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050071 cfg.BoolOpt('disable_ssl_certificate_validation',
72 default=False,
73 help="Set to True if using self-signed SSL certificates."),
Rob Crittendena7db6692014-11-23 18:44:38 -050074 cfg.StrOpt('ca_certificates_file',
75 default=None,
76 help='Specify a CA bundle file to use in verifying a '
77 'TLS (https) server certificate.'),
Jay Pipes7c88eb22013-01-16 21:32:43 -050078 cfg.StrOpt('uri',
Brant Knudsonc7ca3342013-03-28 21:08:50 -050079 help="Full URI of the OpenStack Identity API (Keystone), v2"),
80 cfg.StrOpt('uri_v3',
81 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000082 cfg.StrOpt('auth_version',
83 default='v2',
84 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +000085 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050086 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010087 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +090088 help="The identity region name to use. Also used as the other "
89 "services' region name unless they are set explicitly. "
90 "If no such region is found in the service catalog, the "
91 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +000092 cfg.StrOpt('endpoint_type',
93 default='publicURL',
94 choices=['public', 'admin', 'internal',
95 'publicURL', 'adminURL', 'internalURL'],
96 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010097 cfg.StrOpt('username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010098 help="Username to use for Nova API requests."),
99 cfg.StrOpt('tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100100 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +1000101 cfg.StrOpt('admin_role',
102 default='admin',
103 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100104 cfg.StrOpt('password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100105 help="API key to use when authenticating.",
106 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100107 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100108 help="Domain name for authentication (Keystone V3)."
109 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100110 cfg.StrOpt('alt_username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100111 help="Username of alternate user to use for Nova API "
112 "requests."),
113 cfg.StrOpt('alt_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100114 help="Alternate user's Tenant name to use for Nova API "
115 "requests."),
116 cfg.StrOpt('alt_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100117 help="API key to use when authenticating as alternate user.",
118 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100119 cfg.StrOpt('alt_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100120 help="Alternate domain name for authentication (Keystone V3)."
121 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100122 cfg.StrOpt('admin_username',
Dirk Mueller14bd5622014-01-14 19:33:05 +0100123 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100124 "Keystone API requests."),
125 cfg.StrOpt('admin_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100126 help="Administrative Tenant name to use for Keystone API "
127 "requests."),
128 cfg.StrOpt('admin_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100129 help="API key to use when authenticating as admin.",
130 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100131 cfg.StrOpt('admin_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100132 help="Admin domain name for authentication (Keystone V3)."
133 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500134]
Jay Pipes3f981df2012-03-27 18:59:44 -0400135
Matthew Treinishd5021a72014-01-09 18:42:51 +0000136identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
137 title='Enabled Identity Features')
138
139IdentityFeatureGroup = [
140 cfg.BoolOpt('trust',
141 default=True,
142 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000143 'impersonation enabled'),
144 cfg.BoolOpt('api_v2',
145 default=True,
146 help='Is the v2 identity API enabled'),
147 cfg.BoolOpt('api_v3',
148 default=True,
149 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000150]
151
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500152compute_group = cfg.OptGroup(name='compute',
153 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800154
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500155ComputeGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500156 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400157 help="Valid primary image reference to be used in tests. "
158 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500159 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400160 help="Valid secondary image reference to be used in tests. "
161 "This is a required option, but if only one image is "
162 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900163 cfg.StrOpt('flavor_ref',
164 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500165 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900166 cfg.StrOpt('flavor_ref_alt',
167 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500168 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000169 cfg.StrOpt('image_ssh_user',
170 default="root",
171 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700172 cfg.StrOpt('image_ssh_password',
173 default="password",
174 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000175 cfg.StrOpt('image_alt_ssh_user',
176 default="root",
177 help="User name used to authenticate to an instance using "
178 "the alternate image."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700179 cfg.StrOpt('image_alt_ssh_password',
180 default="password",
181 help="Password used to authenticate to an instance using "
182 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500183 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400184 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500185 help="Time in seconds between build status checks."),
186 cfg.IntOpt('build_timeout',
187 default=300,
Hugh Saunders5b139ad2014-12-15 09:08:41 +0000188 help="Timeout in seconds to wait for an instance to build. "
189 "Other services that do not define build_timeout will "
190 "inherit this value, for example the image service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500191 cfg.BoolOpt('run_ssh',
192 default=False,
Derek Higgins85cd5142013-12-17 17:10:11 +0000193 help="Should the tests ssh to instances?"),
Attila Fazekas423834d2014-03-14 17:33:13 +0100194 cfg.StrOpt('ssh_auth_method',
195 default='keypair',
196 help="Auth method used for authenticate to the instance. "
197 "Valid choices are: keypair, configured, adminpass. "
198 "keypair: start the servers with an ssh keypair. "
199 "configured: use the configured user and password. "
200 "adminpass: use the injected adminPass. "
201 "disabled: avoid using ssh when it is an option."),
202 cfg.StrOpt('ssh_connect_method',
203 default='fixed',
204 help="How to connect to the instance? "
205 "fixed: using the first ip belongs the fixed network "
206 "floating: creating and using a floating ip"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500207 cfg.StrOpt('ssh_user',
208 default='root',
209 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700210 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000211 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700212 help="Timeout in seconds to wait for ping to "
213 "succeed."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500214 cfg.IntOpt('ssh_timeout',
215 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030216 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500217 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200218 cfg.IntOpt('ready_wait',
219 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500220 help="Additional wait time for clean state, when there is "
221 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030222 cfg.IntOpt('ssh_channel_timeout',
223 default=60,
224 help="Timeout in seconds to wait for output from ssh "
225 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200226 cfg.StrOpt('fixed_network_name',
227 default='private',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800228 help="Name of the fixed network that is visible to all test "
229 "tenants."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500230 cfg.StrOpt('network_for_ssh',
231 default='public',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800232 help="Network used for SSH connections. Ignored if "
233 "use_floatingip_for_ssh=true or run_ssh=false."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500234 cfg.IntOpt('ip_version_for_ssh',
235 default=4,
236 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900237 cfg.BoolOpt('use_floatingip_for_ssh',
238 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700239 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500240 cfg.StrOpt('catalog_type',
241 default='compute',
242 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900243 cfg.StrOpt('region',
244 default='',
245 help="The compute region name to use. If empty, the value "
246 "of identity.region is used instead. If no such region "
247 "is found in the service catalog, the first found one is "
248 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000249 cfg.StrOpt('endpoint_type',
250 default='publicURL',
251 choices=['public', 'admin', 'internal',
252 'publicURL', 'adminURL', 'internalURL'],
253 help="The endpoint type to use for the compute service."),
ivan-zhu8f992be2013-07-31 14:56:58 +0800254 cfg.StrOpt('catalog_v3_type',
255 default='computev3',
256 help="Catalog type of the Compute v3 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 = [
ivan-zhu8f992be2013-07-31 14:56:58 +0800283 cfg.BoolOpt('api_v3',
Matthew Treinish836e56b2014-06-12 13:55:19 -0400284 default=False,
ivan-zhu8f992be2013-07-31 14:56:58 +0800285 help="If false, skip all nova v3 tests."),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000286 cfg.BoolOpt('disk_config',
287 default=True,
288 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000289 cfg.ListOpt('api_extensions',
290 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800291 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900292 'entry all which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300293 'Each extension should be specified with alias name. '
294 'Empty list indicates all extensions are disabled'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000295 cfg.ListOpt('api_v3_extensions',
296 default=['all'],
297 help='A list of enabled v3 extensions with a special entry all'
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900298 ' which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300299 'Each extension should be specified with alias name. '
300 'Empty list indicates all extensions are disabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000301 cfg.BoolOpt('change_password',
302 default=False,
303 help="Does the test environment support changing the admin "
304 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700305 cfg.BoolOpt('console_output',
306 default=True,
307 help="Does the test environment support obtaining instance "
308 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000309 cfg.BoolOpt('resize',
310 default=False,
311 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400312 cfg.BoolOpt('pause',
313 default=True,
314 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400315 cfg.BoolOpt('shelve',
316 default=True,
317 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400318 cfg.BoolOpt('suspend',
319 default=True,
320 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000321 cfg.BoolOpt('live_migration',
Joe Gordon31a139a2014-11-17 16:39:04 -0800322 default=True,
Matthew Treinishd5c96022013-10-17 21:51:23 +0000323 help="Does the test environment support live migration "
324 "available?"),
325 cfg.BoolOpt('block_migration_for_live_migration',
326 default=False,
327 help="Does the test environment use block devices for live "
328 "migration"),
329 cfg.BoolOpt('block_migrate_cinder_iscsi',
330 default=False,
331 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900332 "cinder iSCSI volumes"),
333 cfg.BoolOpt('vnc_console',
334 default=False,
335 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900336 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
337 cfg.BoolOpt('spice_console',
338 default=False,
339 help='Enable Spice console. This configuration value should '
340 'be same as [nova.spice]->enabled in nova.conf'),
341 cfg.BoolOpt('rdp_console',
342 default=False,
343 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700344 'be same as [nova.rdp]->enabled in nova.conf'),
345 cfg.BoolOpt('rescue',
346 default=True,
347 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900348 'mode?'),
349 cfg.BoolOpt('enable_instance_password',
350 default=True,
351 help='Enables returning of the instance password by the '
352 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400353 'or rescue.'),
354 cfg.BoolOpt('interface_attach',
355 default=True,
356 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700357 'interface attachment?'),
358 cfg.BoolOpt('snapshot',
359 default=True,
360 help='Does the test environment support creating snapshot '
361 'images of running instances?')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000362]
363
364
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500365compute_admin_group = cfg.OptGroup(name='compute-admin',
366 title="Compute Admin Options")
donald-ngo7fb1efa2011-12-13 17:17:36 -0800367
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500368ComputeAdminGroup = [
369 cfg.StrOpt('username',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500370 help="Administrative Username to use for Nova API requests."),
371 cfg.StrOpt('tenant_name',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500372 help="Administrative Tenant name to use for Nova API "
373 "requests."),
374 cfg.StrOpt('password',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500375 help="API key to use when authenticating as admin.",
376 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100377 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100378 help="Domain name for authentication as admin (Keystone V3)."
379 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500380]
Daryl Walleck587385b2012-03-03 13:00:26 -0600381
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500382image_group = cfg.OptGroup(name='image',
383 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400384
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500385ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500386 cfg.StrOpt('catalog_type',
387 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400388 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900389 cfg.StrOpt('region',
390 default='',
391 help="The image region name to use. If empty, the value "
392 "of identity.region is used instead. If no such region "
393 "is found in the service catalog, the first found one is "
394 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000395 cfg.StrOpt('endpoint_type',
396 default='publicURL',
397 choices=['public', 'admin', 'internal',
398 'publicURL', 'adminURL', 'internalURL'],
399 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400400 cfg.StrOpt('http_image',
401 default='http://download.cirros-cloud.net/0.3.1/'
402 'cirros-0.3.1-x86_64-uec.tar.gz',
DennyZhang8912d012013-09-25 18:08:34 -0500403 help='http accessible image')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500404]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400405
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000406image_feature_group = cfg.OptGroup(name='image-feature-enabled',
407 title='Enabled image service features')
408
409ImageFeaturesGroup = [
410 cfg.BoolOpt('api_v2',
411 default=True,
412 help="Is the v2 image API enabled"),
413 cfg.BoolOpt('api_v1',
414 default=True,
415 help="Is the v1 image API enabled"),
416]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400417
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500418network_group = cfg.OptGroup(name='network',
419 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600420
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500421NetworkGroup = [
422 cfg.StrOpt('catalog_type',
423 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400424 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900425 cfg.StrOpt('region',
426 default='',
427 help="The network region name to use. If empty, the value "
428 "of identity.region is used instead. If no such region "
429 "is found in the service catalog, the first found one is "
430 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000431 cfg.StrOpt('endpoint_type',
432 default='publicURL',
433 choices=['public', 'admin', 'internal',
434 'publicURL', 'adminURL', 'internalURL'],
435 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500436 cfg.StrOpt('tenant_network_cidr',
437 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500438 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500439 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200440 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500441 help="The mask bits for tenant ipv4 subnets"),
442 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400443 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500444 help="The cidr block to allocate tenant ipv6 subnets from"),
445 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400446 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500447 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500448 cfg.BoolOpt('tenant_networks_reachable',
449 default=False,
450 help="Whether tenant network connectivity should be "
451 "evaluated directly"),
452 cfg.StrOpt('public_network_id',
453 default="",
454 help="Id of the public network that provides external "
455 "connectivity"),
456 cfg.StrOpt('public_router_id',
457 default="",
458 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200459 "connectivity. This should only be used when Neutron's "
460 "'allow_overlapping_ips' is set to 'False' in "
461 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200462 cfg.IntOpt('build_timeout',
463 default=300,
464 help="Timeout in seconds to wait for network operation to "
465 "complete."),
466 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400467 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200468 help="Time in seconds between network operation status "
469 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200470 cfg.ListOpt('dns_servers',
471 default=["8.8.8.8", "8.8.4.4"],
472 help="List of dns servers whichs hould be used"
473 " for subnet creation")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500474]
Jay Pipes3f981df2012-03-27 18:59:44 -0400475
Matthew Treinishe3d26142013-11-26 19:14:58 +0000476network_feature_group = cfg.OptGroup(name='network-feature-enabled',
477 title='Enabled network service features')
478
479NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000480 cfg.BoolOpt('ipv6',
481 default=True,
482 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000483 cfg.ListOpt('api_extensions',
484 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800485 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300486 'entry all which indicates every extension is enabled. '
487 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400488 cfg.BoolOpt('ipv6_subnet_attributes',
489 default=False,
490 help="Allow the execution of IPv6 subnet tests that use "
491 "the extended IPv6 attributes ipv6_ra_mode "
492 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400493 ),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000494]
495
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300496messaging_group = cfg.OptGroup(name='messaging',
497 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500498
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300499MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500500 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300501 default='messaging',
502 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000503 cfg.IntOpt('max_queues_per_page',
504 default=20,
505 help='The maximum number of queue records per page when '
506 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400507 cfg.IntOpt('max_queue_metadata',
508 default=65536,
509 help='The maximum metadata size for a queue'),
510 cfg.IntOpt('max_messages_per_page',
511 default=20,
512 help='The maximum number of queue message per page when '
513 'listing (or) posting messages'),
514 cfg.IntOpt('max_message_size',
515 default=262144,
516 help='The maximum size of a message body'),
517 cfg.IntOpt('max_messages_per_claim',
518 default=20,
519 help='The maximum number of messages per claim'),
520 cfg.IntOpt('max_message_ttl',
521 default=1209600,
522 help='The maximum ttl for a message'),
523 cfg.IntOpt('max_claim_ttl',
524 default=43200,
525 help='The maximum ttl for a claim'),
526 cfg.IntOpt('max_claim_grace',
527 default=43200,
528 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500529]
530
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500531volume_group = cfg.OptGroup(name='volume',
532 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600533
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500534VolumeGroup = [
535 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400536 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500537 help='Time in seconds between volume availability checks.'),
538 cfg.IntOpt('build_timeout',
539 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400540 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500541 'available.'),
542 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000543 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500544 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900545 cfg.StrOpt('region',
546 default='',
547 help="The volume region name to use. If empty, the value "
548 "of identity.region is used instead. If no such region "
549 "is found in the service catalog, the first found one is "
550 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000551 cfg.StrOpt('endpoint_type',
552 default='publicURL',
553 choices=['public', 'admin', 'internal',
554 'publicURL', 'adminURL', 'internalURL'],
555 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100556 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200557 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100558 help="Name of the backend1 (must be declared in cinder.conf)"),
559 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200560 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100561 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700562 cfg.StrOpt('storage_protocol',
563 default='iSCSI',
564 help='Backend protocol to target when creating volume types'),
565 cfg.StrOpt('vendor_name',
566 default='Open Source',
567 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700568 cfg.StrOpt('disk_format',
569 default='raw',
570 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800571 cfg.IntOpt('volume_size',
572 default=1,
573 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500574]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800575
Matthew Treinishd5c96022013-10-17 21:51:23 +0000576volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
577 title='Enabled Cinder Features')
578
579VolumeFeaturesGroup = [
580 cfg.BoolOpt('multi_backend',
581 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000582 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100583 cfg.BoolOpt('backup',
584 default=True,
585 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100586 cfg.BoolOpt('snapshot',
587 default=True,
588 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000589 cfg.ListOpt('api_extensions',
590 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800591 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300592 'entry all which indicates every extension is enabled. '
593 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800594 cfg.BoolOpt('api_v1',
595 default=True,
596 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800597 cfg.BoolOpt('api_v2',
598 default=True,
599 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000600]
601
Daryl Walleck587385b2012-03-03 13:00:26 -0600602
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500603object_storage_group = cfg.OptGroup(name='object-storage',
604 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200605
DennyZhang1e71b612013-09-26 12:35:40 -0500606ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500607 cfg.StrOpt('catalog_type',
608 default='object-store',
609 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900610 cfg.StrOpt('region',
611 default='',
612 help="The object-storage region name to use. If empty, the "
613 "value of identity.region is used instead. If no such "
614 "region is found in the service catalog, the first found "
615 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000616 cfg.StrOpt('endpoint_type',
617 default='publicURL',
618 choices=['public', 'admin', 'internal',
619 'publicURL', 'adminURL', 'internalURL'],
620 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000621 cfg.IntOpt('container_sync_timeout',
nayna-patelb4989b32013-01-09 06:25:13 +0000622 default=120,
Fabien Boucher2178d312013-12-31 15:38:57 +0100623 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000624 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000625 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000626 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100627 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000628 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400629 cfg.StrOpt('operator_role',
630 default='Member',
631 help="Role to add to users created for swift tests to "
632 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500633 cfg.StrOpt('reseller_admin_role',
634 default='ResellerAdmin',
635 help="User role that has reseller admin"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500636]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200637
Matthew Treinishd5c96022013-10-17 21:51:23 +0000638object_storage_feature_group = cfg.OptGroup(
639 name='object-storage-feature-enabled',
640 title='Enabled object-storage features')
641
642ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000643 cfg.ListOpt('discoverable_apis',
644 default=['all'],
645 help="A list of the enabled optional discoverable apis. "
646 "A single entry, all, indicates that all of these "
647 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900648 cfg.BoolOpt('container_sync',
649 default=True,
650 help="Execute (old style) container-sync tests"),
651 cfg.BoolOpt('object_versioning',
652 default=True,
653 help="Execute object-versioning tests"),
654 cfg.BoolOpt('discoverability',
655 default=True,
656 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000657]
658
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800659database_group = cfg.OptGroup(name='database',
660 title='Database Service Options')
661
662DatabaseGroup = [
663 cfg.StrOpt('catalog_type',
664 default='database',
665 help="Catalog type of the Database service."),
666 cfg.StrOpt('db_flavor_ref',
667 default="1",
668 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400669 cfg.StrOpt('db_current_version',
670 default="v1.0",
671 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800672]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200673
Steve Bakerc60e4e32013-05-06 15:22:41 +1200674orchestration_group = cfg.OptGroup(name='orchestration',
675 title='Orchestration Service Options')
676
677OrchestrationGroup = [
678 cfg.StrOpt('catalog_type',
679 default='orchestration',
680 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900681 cfg.StrOpt('region',
682 default='',
683 help="The orchestration region name to use. If empty, the "
684 "value of identity.region is used instead. If no such "
685 "region is found in the service catalog, the first found "
686 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000687 cfg.StrOpt('endpoint_type',
688 default='publicURL',
689 choices=['public', 'admin', 'internal',
690 'publicURL', 'adminURL', 'internalURL'],
691 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200692 cfg.IntOpt('build_interval',
693 default=1,
694 help="Time in seconds between build status checks."),
695 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400696 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200697 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200698 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200699 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200700 help="Instance type for tests. Needs to be big enough for a "
701 "full OS plus the test workload"),
702 cfg.StrOpt('image_ref',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200703 help="Name of heat-cfntools enabled image to use when "
704 "launching test instances."),
705 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200706 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700707 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100708 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700709 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000710 cfg.IntOpt('max_resources_per_stack',
711 default=1000,
712 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200713]
714
715
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100716telemetry_group = cfg.OptGroup(name='telemetry',
717 title='Telemetry Service Options')
718
719TelemetryGroup = [
720 cfg.StrOpt('catalog_type',
721 default='metering',
722 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000723 cfg.StrOpt('endpoint_type',
724 default='publicURL',
725 choices=['public', 'admin', 'internal',
726 'publicURL', 'adminURL', 'internalURL'],
727 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400728 cfg.BoolOpt('too_slow_to_test',
729 default=True,
730 help="This variable is used as flag to enable "
731 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100732]
733
734
Julie Pichond1017642013-07-24 16:37:23 +0100735dashboard_group = cfg.OptGroup(name="dashboard",
736 title="Dashboard options")
737
738DashboardGroup = [
739 cfg.StrOpt('dashboard_url',
740 default='http://localhost/',
741 help="Where the dashboard can be found"),
742 cfg.StrOpt('login_url',
743 default='http://localhost/auth/login/',
744 help="Login page for the dashboard"),
745]
746
747
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400748data_processing_group = cfg.OptGroup(name="data_processing",
749 title="Data Processing options")
750
751DataProcessingGroup = [
752 cfg.StrOpt('catalog_type',
753 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000754 help="Catalog type of the data processing service."),
755 cfg.StrOpt('endpoint_type',
756 default='publicURL',
757 choices=['public', 'admin', 'internal',
758 'publicURL', 'adminURL', 'internalURL'],
759 help="The endpoint type to use for the data processing "
760 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400761]
762
763
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500764boto_group = cfg.OptGroup(name='boto',
765 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500766BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500767 cfg.StrOpt('ec2_url',
768 default="http://localhost:8773/services/Cloud",
769 help="EC2 URL"),
770 cfg.StrOpt('s3_url',
771 default="http://localhost:8080",
772 help="S3 URL"),
773 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500774 help="AWS Secret Key",
775 secret=True),
776 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500777 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100778 cfg.StrOpt('aws_zone',
779 default="nova",
780 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500781 cfg.StrOpt('s3_materials_path',
782 default="/opt/stack/devstack/files/images/"
783 "s3-materials/cirros-0.3.0",
784 help="S3 Materials Path"),
785 cfg.StrOpt('ari_manifest',
786 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
787 help="ARI Ramdisk Image manifest"),
788 cfg.StrOpt('ami_manifest',
789 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
790 help="AMI Machine Image manifest"),
791 cfg.StrOpt('aki_manifest',
792 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
793 help="AKI Kernel Image manifest"),
794 cfg.StrOpt('instance_type',
795 default="m1.tiny",
796 help="Instance type"),
797 cfg.IntOpt('http_socket_timeout',
798 default=3,
799 help="boto Http socket timeout"),
800 cfg.IntOpt('num_retries',
801 default=1,
802 help="boto num_retries on error"),
803 cfg.IntOpt('build_timeout',
804 default=60,
805 help="Status Change Timeout"),
806 cfg.IntOpt('build_interval',
807 default=1,
808 help="Status Change Test Interval"),
809]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100810
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500811stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
812
813StressGroup = [
814 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500815 help='Directory containing log files on the compute nodes'),
816 cfg.IntOpt('max_instances',
817 default=16,
818 help='Maximum number of instances to create during test.'),
819 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400820 help='Controller host.'),
821 # new stress options
822 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400823 help='Controller host.'),
824 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400825 help='ssh user.'),
826 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400827 help='Path to private key.'),
828 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400829 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000830 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400831 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200832 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000833 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200834 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100835 help='The number of threads created while stress test.'),
836 cfg.BoolOpt('leave_dirty_stack',
837 default=False,
838 help='Prevent the cleaning (tearDownClass()) between'
839 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100840 ' during this run.'),
841 cfg.BoolOpt('full_clean_stack',
842 default=False,
843 help='Allows a full cleaning process after a stress test.'
844 ' Caution : this cleanup will remove every objects of'
845 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500846]
847
848
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900849scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
850
851ScenarioGroup = [
852 cfg.StrOpt('img_dir',
853 default='/opt/stack/new/devstack/files/images/'
854 'cirros-0.3.1-x86_64-uec',
855 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300856 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900857 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300858 help='Image file name'),
859 cfg.StrOpt('img_disk_format',
860 default='qcow2',
861 help='Image disk format'),
862 cfg.StrOpt('img_container_format',
863 default='bare',
864 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900865 cfg.StrOpt('ami_img_file',
866 default='cirros-0.3.1-x86_64-blank.img',
867 help='AMI image file name'),
868 cfg.StrOpt('ari_img_file',
869 default='cirros-0.3.1-x86_64-initrd',
870 help='ARI image file name'),
871 cfg.StrOpt('aki_img_file',
872 default='cirros-0.3.1-x86_64-vmlinuz',
873 help='AKI image file name'),
874 cfg.StrOpt('ssh_user',
875 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000876 help='ssh username for the image file'),
877 cfg.IntOpt(
878 'large_ops_number',
879 default=0,
880 help="specifies how many resources to request at once. Used "
881 "for large operations testing.")
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900882]
883
884
Matthew Treinish4c412922013-07-16 15:27:42 -0400885service_available_group = cfg.OptGroup(name="service_available",
886 title="Available OpenStack Services")
887
888ServiceAvailableGroup = [
889 cfg.BoolOpt('cinder',
890 default=True,
891 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400892 cfg.BoolOpt('neutron',
893 default=False,
894 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400895 cfg.BoolOpt('glance',
896 default=True,
897 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400898 cfg.BoolOpt('swift',
899 default=True,
900 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400901 cfg.BoolOpt('nova',
902 default=True,
903 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400904 cfg.BoolOpt('heat',
905 default=False,
906 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200907 cfg.BoolOpt('ceilometer',
908 default=True,
909 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100910 cfg.BoolOpt('horizon',
911 default=True,
912 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400913 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400914 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400915 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300916 cfg.BoolOpt('ironic',
917 default=False,
918 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800919 cfg.BoolOpt('trove',
920 default=False,
921 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -0400922 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500923 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -0400924 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400925]
926
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200927debug_group = cfg.OptGroup(name="debug",
928 title="Debug System")
929
930DebugGroup = [
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),
1065 (compute_admin_group, ComputeAdminGroup),
1066 (stress_group, StressGroup),
1067 (scenario_group, ScenarioGroup),
1068 (service_available_group, ServiceAvailableGroup),
1069 (debug_group, DebugGroup),
1070 (baremetal_group, BaremetalGroup),
1071 (input_scenario_group, InputScenarioGroup),
1072 (cli_group, CLIGroup),
1073 (negative_group, NegativeGroup)
1074]
1075
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001076
Matthew Treinish43b296a2014-02-28 15:23:00 -05001077def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001078 for g, o in _opts:
1079 register_opt_group(cfg.CONF, g, o)
1080
1081
1082def list_opts():
1083 """Return a list of oslo.config options available.
1084
1085 The purpose of this is to allow tools like the Oslo sample config file
1086 generator to discover the options exposed to users.
1087 """
1088 optlist = [(g.name, o) for g, o in _opts]
1089
1090 # NOTE(jgrimm): Can be removed once oslo-incubator/oslo changes happen.
1091 optlist.append((None, lockutils.util_opts))
1092 optlist.append((None, logging.common_cli_opts))
1093 optlist.append((None, logging.logging_cli_opts))
1094 optlist.append((None, logging.generic_log_opts))
1095 optlist.append((None, logging.log_opts))
1096
1097 return optlist
Matthew Treinish43b296a2014-02-28 15:23:00 -05001098
1099
Sean Dague3b9b1f32013-12-20 17:04:54 -05001100# this should never be called outside of this class
1101class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001102 """Provides OpenStack configuration information."""
1103
Brian Waldon738cd632011-12-12 18:45:09 -05001104 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001105 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001106 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001107
Brian Waldon738cd632011-12-12 18:45:09 -05001108 DEFAULT_CONFIG_FILE = "tempest.conf"
1109
Andrea Frittolia96ee212014-08-15 18:34:20 +01001110 def __getattr__(self, attr):
1111 # Handles config options from the default group
1112 return getattr(cfg.CONF, attr)
1113
Matthew Treinish43b296a2014-02-28 15:23:00 -05001114 def _set_attrs(self):
Matthew Treinishc791ac42014-07-16 09:15:23 -04001115 self.auth = cfg.CONF.auth
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001116 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001117 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001118 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001119 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001120 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001121 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001122 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001123 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001124 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001125 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001126 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001127 self.object_storage_feature_enabled = cfg.CONF[
1128 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001129 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001130 self.orchestration = cfg.CONF.orchestration
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -03001131 self.messaging = cfg.CONF.messaging
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001132 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001133 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001134 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001135 self.boto = cfg.CONF.boto
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001136 self.compute_admin = cfg.CONF['compute-admin']
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001137 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001138 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001139 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001140 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001141 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001142 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001143 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001144 self.negative = cfg.CONF.negative
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001145 if not self.compute_admin.username:
1146 self.compute_admin.username = self.identity.admin_username
1147 self.compute_admin.password = self.identity.admin_password
1148 self.compute_admin.tenant_name = self.identity.admin_tenant_name
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001149 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1150 group='identity')
1151 cfg.CONF.set_default('alt_domain_name',
1152 self.identity.admin_domain_name,
1153 group='identity')
1154 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1155 group='compute-admin')
Sean Dague86bd8422013-12-20 09:56:44 -05001156
Joe Gordon28a84ae2014-07-17 15:38:28 +00001157 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001158 """Initialize a configuration from a conf directory and conf file."""
1159 super(TempestConfigPrivate, self).__init__()
1160 config_files = []
1161 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1162
Joe Gordon28a84ae2014-07-17 15:38:28 +00001163 if config_path:
1164 path = config_path
1165 else:
1166 # Environment variables override defaults...
1167 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1168 self.DEFAULT_CONFIG_DIR)
1169 conf_file = os.environ.get('TEMPEST_CONFIG',
1170 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001171
Joe Gordon28a84ae2014-07-17 15:38:28 +00001172 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001173
1174 if not os.path.isfile(path):
1175 path = failsafe_path
1176
1177 # only parse the config file if we expect one to exist. This is needed
1178 # to remove an issue with the config file up to date checker.
1179 if parse_conf:
1180 config_files.append(path)
Matthew Treinish5440a402014-10-02 14:36:16 -04001181 if os.path.isfile(path):
1182 cfg.CONF([], project='tempest', default_config_files=config_files)
1183 else:
1184 cfg.CONF([], project='tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001185 logging.setup('tempest')
1186 LOG = logging.getLogger('tempest')
1187 LOG.info("Using tempest config file %s" % path)
1188 register_opts()
1189 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001190 if parse_conf:
1191 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1192
Sean Dague86bd8422013-12-20 09:56:44 -05001193
1194class TempestConfigProxy(object):
1195 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001196 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001197
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001198 _extra_log_defaults = [
1199 'keystoneclient.session=INFO',
1200 'paramiko.transport=INFO',
1201 'requests.packages.urllib3.connectionpool=WARN'
1202 ]
1203
1204 def _fix_log_levels(self):
1205 """Tweak the oslo log defaults."""
1206 for opt in logging.log_opts:
1207 if opt.dest == 'default_log_levels':
1208 opt.default.extend(self._extra_log_defaults)
1209
Sean Dague86bd8422013-12-20 09:56:44 -05001210 def __getattr__(self, attr):
1211 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001212 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001213 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001214
1215 return getattr(self._config, attr)
1216
Joe Gordon28a84ae2014-07-17 15:38:28 +00001217 def set_config_path(self, path):
1218 self._path = path
1219
Sean Dague86bd8422013-12-20 09:56:44 -05001220
1221CONF = TempestConfigProxy()