blob: 1c0dabbafa3b1bba6444f7de868d249e998e5951 [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 "
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200190 "inherit this value."),
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."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100254 cfg.StrOpt('path_to_private_key',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100255 help="Path to a private key file for SSH access to remote "
256 "hosts"),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700257 cfg.StrOpt('volume_device_name',
258 default='vdb',
259 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900260 "an instance"),
261 cfg.IntOpt('shelved_offload_time',
262 default=0,
263 help='Time in seconds before a shelved instance is eligible '
264 'for removing from a host. -1 never offload, 0 offload '
265 'when shelved. This time should be the same as the time '
266 'of nova.conf, and some tests will run for as long as the '
Ghanshyam06a5b4a2014-04-11 17:32:45 +0900267 'time.'),
268 cfg.StrOpt('floating_ip_range',
269 default='10.0.0.0/29',
270 help='Unallocated floating IP range, which will be used to '
Chris Hoge8f1401b2014-11-19 14:00:37 -0800271 'test the floating IP bulk feature for CRUD operation. '
272 'This block must not overlap an existing floating IP '
273 'pool.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500274]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800275
Matthew Treinishd5c96022013-10-17 21:51:23 +0000276compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
277 title="Enabled Compute Service Features")
278
279ComputeFeaturesGroup = [
280 cfg.BoolOpt('disk_config',
281 default=True,
282 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000283 cfg.ListOpt('api_extensions',
284 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800285 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900286 'entry all which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300287 'Each extension should be specified with alias name. '
288 'Empty list indicates all extensions are disabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000289 cfg.BoolOpt('change_password',
290 default=False,
291 help="Does the test environment support changing the admin "
292 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700293 cfg.BoolOpt('console_output',
294 default=True,
295 help="Does the test environment support obtaining instance "
296 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000297 cfg.BoolOpt('resize',
298 default=False,
299 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400300 cfg.BoolOpt('pause',
301 default=True,
302 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400303 cfg.BoolOpt('shelve',
304 default=True,
305 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400306 cfg.BoolOpt('suspend',
307 default=True,
308 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000309 cfg.BoolOpt('live_migration',
Joe Gordon31a139a2014-11-17 16:39:04 -0800310 default=True,
Matthew Treinishd5c96022013-10-17 21:51:23 +0000311 help="Does the test environment support live migration "
312 "available?"),
313 cfg.BoolOpt('block_migration_for_live_migration',
314 default=False,
315 help="Does the test environment use block devices for live "
316 "migration"),
317 cfg.BoolOpt('block_migrate_cinder_iscsi',
318 default=False,
319 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900320 "cinder iSCSI volumes"),
321 cfg.BoolOpt('vnc_console',
322 default=False,
323 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900324 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
325 cfg.BoolOpt('spice_console',
326 default=False,
327 help='Enable Spice console. This configuration value should '
328 'be same as [nova.spice]->enabled in nova.conf'),
329 cfg.BoolOpt('rdp_console',
330 default=False,
331 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700332 'be same as [nova.rdp]->enabled in nova.conf'),
333 cfg.BoolOpt('rescue',
334 default=True,
335 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900336 'mode?'),
337 cfg.BoolOpt('enable_instance_password',
338 default=True,
339 help='Enables returning of the instance password by the '
340 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400341 'or rescue.'),
342 cfg.BoolOpt('interface_attach',
343 default=True,
344 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700345 'interface attachment?'),
346 cfg.BoolOpt('snapshot',
347 default=True,
348 help='Does the test environment support creating snapshot '
349 'images of running instances?')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000350]
351
352
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500353image_group = cfg.OptGroup(name='image',
354 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400355
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500356ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500357 cfg.StrOpt('catalog_type',
358 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400359 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900360 cfg.StrOpt('region',
361 default='',
362 help="The image region name to use. If empty, the value "
363 "of identity.region is used instead. If no such region "
364 "is found in the service catalog, the first found one is "
365 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000366 cfg.StrOpt('endpoint_type',
367 default='publicURL',
368 choices=['public', 'admin', 'internal',
369 'publicURL', 'adminURL', 'internalURL'],
370 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400371 cfg.StrOpt('http_image',
372 default='http://download.cirros-cloud.net/0.3.1/'
373 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200374 help='http accessible image'),
375 cfg.IntOpt('build_timeout',
376 default=300,
377 help="Timeout in seconds to wait for an image to "
378 "become available."),
379 cfg.IntOpt('build_interval',
380 default=1,
381 help="Time in seconds between image operation status "
382 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500383]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400384
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000385image_feature_group = cfg.OptGroup(name='image-feature-enabled',
386 title='Enabled image service features')
387
388ImageFeaturesGroup = [
389 cfg.BoolOpt('api_v2',
390 default=True,
391 help="Is the v2 image API enabled"),
392 cfg.BoolOpt('api_v1',
393 default=True,
394 help="Is the v1 image API enabled"),
395]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400396
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500397network_group = cfg.OptGroup(name='network',
398 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600399
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500400NetworkGroup = [
401 cfg.StrOpt('catalog_type',
402 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400403 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900404 cfg.StrOpt('region',
405 default='',
406 help="The network region name to use. If empty, the value "
407 "of identity.region is used instead. If no such region "
408 "is found in the service catalog, the first found one is "
409 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000410 cfg.StrOpt('endpoint_type',
411 default='publicURL',
412 choices=['public', 'admin', 'internal',
413 'publicURL', 'adminURL', 'internalURL'],
414 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500415 cfg.StrOpt('tenant_network_cidr',
416 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500417 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500418 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200419 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500420 help="The mask bits for tenant ipv4 subnets"),
421 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400422 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500423 help="The cidr block to allocate tenant ipv6 subnets from"),
424 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400425 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500426 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500427 cfg.BoolOpt('tenant_networks_reachable',
428 default=False,
429 help="Whether tenant network connectivity should be "
430 "evaluated directly"),
431 cfg.StrOpt('public_network_id',
432 default="",
433 help="Id of the public network that provides external "
434 "connectivity"),
435 cfg.StrOpt('public_router_id',
436 default="",
437 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200438 "connectivity. This should only be used when Neutron's "
439 "'allow_overlapping_ips' is set to 'False' in "
440 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200441 cfg.IntOpt('build_timeout',
442 default=300,
443 help="Timeout in seconds to wait for network operation to "
444 "complete."),
445 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400446 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200447 help="Time in seconds between network operation status "
448 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200449 cfg.ListOpt('dns_servers',
450 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200451 help="List of dns servers which should be used"
Attila Fazekas640392b2014-06-12 15:58:10 +0200452 " for subnet creation")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500453]
Jay Pipes3f981df2012-03-27 18:59:44 -0400454
Matthew Treinishe3d26142013-11-26 19:14:58 +0000455network_feature_group = cfg.OptGroup(name='network-feature-enabled',
456 title='Enabled network service features')
457
458NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000459 cfg.BoolOpt('ipv6',
460 default=True,
461 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000462 cfg.ListOpt('api_extensions',
463 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800464 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300465 'entry all which indicates every extension is enabled. '
466 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400467 cfg.BoolOpt('ipv6_subnet_attributes',
468 default=False,
469 help="Allow the execution of IPv6 subnet tests that use "
470 "the extended IPv6 attributes ipv6_ra_mode "
471 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400472 ),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000473]
474
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300475messaging_group = cfg.OptGroup(name='messaging',
476 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500477
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300478MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500479 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300480 default='messaging',
481 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000482 cfg.IntOpt('max_queues_per_page',
483 default=20,
484 help='The maximum number of queue records per page when '
485 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400486 cfg.IntOpt('max_queue_metadata',
487 default=65536,
488 help='The maximum metadata size for a queue'),
489 cfg.IntOpt('max_messages_per_page',
490 default=20,
491 help='The maximum number of queue message per page when '
492 'listing (or) posting messages'),
493 cfg.IntOpt('max_message_size',
494 default=262144,
495 help='The maximum size of a message body'),
496 cfg.IntOpt('max_messages_per_claim',
497 default=20,
498 help='The maximum number of messages per claim'),
499 cfg.IntOpt('max_message_ttl',
500 default=1209600,
501 help='The maximum ttl for a message'),
502 cfg.IntOpt('max_claim_ttl',
503 default=43200,
504 help='The maximum ttl for a claim'),
505 cfg.IntOpt('max_claim_grace',
506 default=43200,
507 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500508]
509
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500510volume_group = cfg.OptGroup(name='volume',
511 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600512
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500513VolumeGroup = [
514 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400515 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500516 help='Time in seconds between volume availability checks.'),
517 cfg.IntOpt('build_timeout',
518 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400519 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500520 'available.'),
521 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000522 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500523 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900524 cfg.StrOpt('region',
525 default='',
526 help="The volume region name to use. If empty, the value "
527 "of identity.region is used instead. If no such region "
528 "is found in the service catalog, the first found one is "
529 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000530 cfg.StrOpt('endpoint_type',
531 default='publicURL',
532 choices=['public', 'admin', 'internal',
533 'publicURL', 'adminURL', 'internalURL'],
534 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100535 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200536 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100537 help="Name of the backend1 (must be declared in cinder.conf)"),
538 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200539 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100540 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700541 cfg.StrOpt('storage_protocol',
542 default='iSCSI',
543 help='Backend protocol to target when creating volume types'),
544 cfg.StrOpt('vendor_name',
545 default='Open Source',
546 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700547 cfg.StrOpt('disk_format',
548 default='raw',
549 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800550 cfg.IntOpt('volume_size',
551 default=1,
552 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500553]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800554
Matthew Treinishd5c96022013-10-17 21:51:23 +0000555volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
556 title='Enabled Cinder Features')
557
558VolumeFeaturesGroup = [
559 cfg.BoolOpt('multi_backend',
560 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000561 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100562 cfg.BoolOpt('backup',
563 default=True,
564 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100565 cfg.BoolOpt('snapshot',
566 default=True,
567 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000568 cfg.ListOpt('api_extensions',
569 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800570 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300571 'entry all which indicates every extension is enabled. '
572 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800573 cfg.BoolOpt('api_v1',
574 default=True,
575 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800576 cfg.BoolOpt('api_v2',
577 default=True,
578 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000579]
580
Daryl Walleck587385b2012-03-03 13:00:26 -0600581
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500582object_storage_group = cfg.OptGroup(name='object-storage',
583 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200584
DennyZhang1e71b612013-09-26 12:35:40 -0500585ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500586 cfg.StrOpt('catalog_type',
587 default='object-store',
588 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900589 cfg.StrOpt('region',
590 default='',
591 help="The object-storage region name to use. If empty, the "
592 "value of identity.region is used instead. If no such "
593 "region is found in the service catalog, the first found "
594 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000595 cfg.StrOpt('endpoint_type',
596 default='publicURL',
597 choices=['public', 'admin', 'internal',
598 'publicURL', 'adminURL', 'internalURL'],
599 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000600 cfg.IntOpt('container_sync_timeout',
nayna-patelb4989b32013-01-09 06:25:13 +0000601 default=120,
Fabien Boucher2178d312013-12-31 15:38:57 +0100602 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000603 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000604 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000605 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100606 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000607 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400608 cfg.StrOpt('operator_role',
609 default='Member',
610 help="Role to add to users created for swift tests to "
611 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500612 cfg.StrOpt('reseller_admin_role',
613 default='ResellerAdmin',
614 help="User role that has reseller admin"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500615]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200616
Matthew Treinishd5c96022013-10-17 21:51:23 +0000617object_storage_feature_group = cfg.OptGroup(
618 name='object-storage-feature-enabled',
619 title='Enabled object-storage features')
620
621ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000622 cfg.ListOpt('discoverable_apis',
623 default=['all'],
624 help="A list of the enabled optional discoverable apis. "
625 "A single entry, all, indicates that all of these "
626 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900627 cfg.BoolOpt('container_sync',
628 default=True,
629 help="Execute (old style) container-sync tests"),
630 cfg.BoolOpt('object_versioning',
631 default=True,
632 help="Execute object-versioning tests"),
633 cfg.BoolOpt('discoverability',
634 default=True,
635 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000636]
637
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800638database_group = cfg.OptGroup(name='database',
639 title='Database Service Options')
640
641DatabaseGroup = [
642 cfg.StrOpt('catalog_type',
643 default='database',
644 help="Catalog type of the Database service."),
645 cfg.StrOpt('db_flavor_ref',
646 default="1",
647 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400648 cfg.StrOpt('db_current_version',
649 default="v1.0",
650 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800651]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200652
Steve Bakerc60e4e32013-05-06 15:22:41 +1200653orchestration_group = cfg.OptGroup(name='orchestration',
654 title='Orchestration Service Options')
655
656OrchestrationGroup = [
657 cfg.StrOpt('catalog_type',
658 default='orchestration',
659 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900660 cfg.StrOpt('region',
661 default='',
662 help="The orchestration region name to use. If empty, the "
663 "value of identity.region is used instead. If no such "
664 "region is found in the service catalog, the first found "
665 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000666 cfg.StrOpt('endpoint_type',
667 default='publicURL',
668 choices=['public', 'admin', 'internal',
669 'publicURL', 'adminURL', 'internalURL'],
670 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200671 cfg.IntOpt('build_interval',
672 default=1,
673 help="Time in seconds between build status checks."),
674 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400675 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200676 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200677 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200678 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200679 help="Instance type for tests. Needs to be big enough for a "
680 "full OS plus the test workload"),
681 cfg.StrOpt('image_ref',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200682 help="Name of heat-cfntools enabled image to use when "
683 "launching test instances."),
684 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200685 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700686 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100687 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700688 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000689 cfg.IntOpt('max_resources_per_stack',
690 default=1000,
691 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200692]
693
694
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100695telemetry_group = cfg.OptGroup(name='telemetry',
696 title='Telemetry Service Options')
697
698TelemetryGroup = [
699 cfg.StrOpt('catalog_type',
700 default='metering',
701 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000702 cfg.StrOpt('endpoint_type',
703 default='publicURL',
704 choices=['public', 'admin', 'internal',
705 'publicURL', 'adminURL', 'internalURL'],
706 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400707 cfg.BoolOpt('too_slow_to_test',
708 default=True,
709 help="This variable is used as flag to enable "
710 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100711]
712
713
Julie Pichond1017642013-07-24 16:37:23 +0100714dashboard_group = cfg.OptGroup(name="dashboard",
715 title="Dashboard options")
716
717DashboardGroup = [
718 cfg.StrOpt('dashboard_url',
719 default='http://localhost/',
720 help="Where the dashboard can be found"),
721 cfg.StrOpt('login_url',
722 default='http://localhost/auth/login/',
723 help="Login page for the dashboard"),
724]
725
726
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400727data_processing_group = cfg.OptGroup(name="data_processing",
728 title="Data Processing options")
729
730DataProcessingGroup = [
731 cfg.StrOpt('catalog_type',
732 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000733 help="Catalog type of the data processing service."),
734 cfg.StrOpt('endpoint_type',
735 default='publicURL',
736 choices=['public', 'admin', 'internal',
737 'publicURL', 'adminURL', 'internalURL'],
738 help="The endpoint type to use for the data processing "
739 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400740]
741
742
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500743boto_group = cfg.OptGroup(name='boto',
744 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500745BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500746 cfg.StrOpt('ec2_url',
747 default="http://localhost:8773/services/Cloud",
748 help="EC2 URL"),
749 cfg.StrOpt('s3_url',
750 default="http://localhost:8080",
751 help="S3 URL"),
752 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500753 help="AWS Secret Key",
754 secret=True),
755 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500756 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100757 cfg.StrOpt('aws_zone',
758 default="nova",
759 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500760 cfg.StrOpt('s3_materials_path',
761 default="/opt/stack/devstack/files/images/"
762 "s3-materials/cirros-0.3.0",
763 help="S3 Materials Path"),
764 cfg.StrOpt('ari_manifest',
765 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
766 help="ARI Ramdisk Image manifest"),
767 cfg.StrOpt('ami_manifest',
768 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
769 help="AMI Machine Image manifest"),
770 cfg.StrOpt('aki_manifest',
771 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
772 help="AKI Kernel Image manifest"),
773 cfg.StrOpt('instance_type',
774 default="m1.tiny",
775 help="Instance type"),
776 cfg.IntOpt('http_socket_timeout',
777 default=3,
778 help="boto Http socket timeout"),
779 cfg.IntOpt('num_retries',
780 default=1,
781 help="boto num_retries on error"),
782 cfg.IntOpt('build_timeout',
783 default=60,
784 help="Status Change Timeout"),
785 cfg.IntOpt('build_interval',
786 default=1,
787 help="Status Change Test Interval"),
788]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100789
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500790stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
791
792StressGroup = [
793 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500794 help='Directory containing log files on the compute nodes'),
795 cfg.IntOpt('max_instances',
796 default=16,
797 help='Maximum number of instances to create during test.'),
798 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400799 help='Controller host.'),
800 # new stress options
801 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400802 help='Controller host.'),
803 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400804 help='ssh user.'),
805 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400806 help='Path to private key.'),
807 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400808 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000809 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400810 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200811 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000812 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200813 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100814 help='The number of threads created while stress test.'),
815 cfg.BoolOpt('leave_dirty_stack',
816 default=False,
817 help='Prevent the cleaning (tearDownClass()) between'
818 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100819 ' during this run.'),
820 cfg.BoolOpt('full_clean_stack',
821 default=False,
822 help='Allows a full cleaning process after a stress test.'
823 ' Caution : this cleanup will remove every objects of'
824 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500825]
826
827
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900828scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
829
830ScenarioGroup = [
831 cfg.StrOpt('img_dir',
832 default='/opt/stack/new/devstack/files/images/'
833 'cirros-0.3.1-x86_64-uec',
834 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300835 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900836 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300837 help='Image file name'),
838 cfg.StrOpt('img_disk_format',
839 default='qcow2',
840 help='Image disk format'),
841 cfg.StrOpt('img_container_format',
842 default='bare',
843 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900844 cfg.StrOpt('ami_img_file',
845 default='cirros-0.3.1-x86_64-blank.img',
846 help='AMI image file name'),
847 cfg.StrOpt('ari_img_file',
848 default='cirros-0.3.1-x86_64-initrd',
849 help='ARI image file name'),
850 cfg.StrOpt('aki_img_file',
851 default='cirros-0.3.1-x86_64-vmlinuz',
852 help='AKI image file name'),
853 cfg.StrOpt('ssh_user',
854 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000855 help='ssh username for the image file'),
856 cfg.IntOpt(
857 'large_ops_number',
858 default=0,
859 help="specifies how many resources to request at once. Used "
860 "for large operations testing.")
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900861]
862
863
Matthew Treinish4c412922013-07-16 15:27:42 -0400864service_available_group = cfg.OptGroup(name="service_available",
865 title="Available OpenStack Services")
866
867ServiceAvailableGroup = [
868 cfg.BoolOpt('cinder',
869 default=True,
870 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400871 cfg.BoolOpt('neutron',
872 default=False,
873 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400874 cfg.BoolOpt('glance',
875 default=True,
876 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400877 cfg.BoolOpt('swift',
878 default=True,
879 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400880 cfg.BoolOpt('nova',
881 default=True,
882 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400883 cfg.BoolOpt('heat',
884 default=False,
885 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200886 cfg.BoolOpt('ceilometer',
887 default=True,
888 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100889 cfg.BoolOpt('horizon',
890 default=True,
891 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400892 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400893 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400894 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300895 cfg.BoolOpt('ironic',
896 default=False,
897 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800898 cfg.BoolOpt('trove',
899 default=False,
900 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -0400901 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500902 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -0400903 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400904]
905
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200906debug_group = cfg.OptGroup(name="debug",
907 title="Debug System")
908
909DebugGroup = [
Sean Daguec522c092014-03-24 10:43:22 -0400910 cfg.StrOpt('trace_requests',
911 default='',
912 help="""A regex to determine which requests should be traced.
913
914This is a regex to match the caller for rest client requests to be able to
915selectively trace calls out of specific classes and methods. It largely
916exists for test development, and is not expected to be used in a real deploy
917of tempest. This will be matched against the discovered ClassName:method
918in the test environment.
919
920Expected values for this field are:
921
922 * ClassName:test_method_name - traces one test_method
923 * ClassName:setUp(Class) - traces specific setup functions
924 * ClassName:tearDown(Class) - traces specific teardown functions
925 * ClassName:_run_cleanups - traces the cleanup functions
926
927If nothing is specified, this feature is not enabled. To trace everything
928specify .* as the regex.
929""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200930]
931
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000932input_scenario_group = cfg.OptGroup(name="input-scenario",
933 title="Filters and values for"
934 " input scenarios")
935
936InputScenarioGroup = [
937 cfg.StrOpt('image_regex',
938 default='^cirros-0.3.1-x86_64-uec$',
939 help="Matching images become parameters for scenario tests"),
940 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000941 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000942 help="Matching flavors become parameters for scenario tests"),
943 cfg.StrOpt('non_ssh_image_regex',
944 default='^.*[Ww]in.*$',
945 help="SSH verification in tests is skipped"
946 "for matching images"),
947 cfg.StrOpt('ssh_user_regex',
948 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
949 help="List of user mapped to regex "
950 "to matching image names."),
951]
952
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200953
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300954baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800955 title='Baremetal provisioning service options',
956 help='When enabling baremetal tests, Nova '
957 'must be configured to use the Ironic '
958 'driver. The following paremeters for the '
959 '[compute] section must be disabled: '
960 'console_output, interface_attach, '
961 'live_migration, pause, rescue, resize '
962 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300963
964BaremetalGroup = [
965 cfg.StrOpt('catalog_type',
966 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -0700967 help="Catalog type of the baremetal provisioning service"),
968 cfg.BoolOpt('driver_enabled',
969 default=False,
970 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +0900971 cfg.StrOpt('driver',
972 default='fake',
973 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +0000974 cfg.StrOpt('endpoint_type',
975 default='publicURL',
976 choices=['public', 'admin', 'internal',
977 'publicURL', 'adminURL', 'internalURL'],
978 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -0700979 "service"),
980 cfg.IntOpt('active_timeout',
981 default=300,
982 help="Timeout for Ironic node to completely provision"),
983 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -0700984 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -0700985 help="Timeout for association of Nova instance and Ironic "
986 "node"),
987 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -0700988 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -0700989 help="Timeout for Ironic power transitions."),
990 cfg.IntOpt('unprovision_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -0700991 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -0700992 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300993]
994
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000995cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
996
997CLIGroup = [
998 cfg.BoolOpt('enabled',
999 default=True,
1000 help="enable cli tests"),
1001 cfg.StrOpt('cli_dir',
1002 default='/usr/local/bin',
1003 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -05001004 cfg.BoolOpt('has_manage',
1005 default=True,
1006 help=("Whether the tempest run location has access to the "
1007 "*-manage commands. In a pure blackbox environment "
1008 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001009 cfg.IntOpt('timeout',
1010 default=15,
1011 help="Number of seconds to wait on a CLI timeout"),
1012]
1013
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001014negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1015
1016NegativeGroup = [
1017 cfg.StrOpt('test_generator',
1018 default='tempest.common.' +
1019 'generator.negative_generator.NegativeTestGenerator',
1020 help="Test generator class for all negative tests"),
1021]
1022
Jon Grimm270bd7f2014-08-05 18:11:29 +00001023_opts = [
1024 (auth_group, AuthGroup),
1025 (compute_group, ComputeGroup),
1026 (compute_features_group, ComputeFeaturesGroup),
1027 (identity_group, IdentityGroup),
1028 (identity_feature_group, IdentityFeatureGroup),
1029 (image_group, ImageGroup),
1030 (image_feature_group, ImageFeaturesGroup),
1031 (network_group, NetworkGroup),
1032 (network_feature_group, NetworkFeaturesGroup),
1033 (messaging_group, MessagingGroup),
1034 (volume_group, VolumeGroup),
1035 (volume_feature_group, VolumeFeaturesGroup),
1036 (object_storage_group, ObjectStoreGroup),
1037 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1038 (database_group, DatabaseGroup),
1039 (orchestration_group, OrchestrationGroup),
1040 (telemetry_group, TelemetryGroup),
1041 (dashboard_group, DashboardGroup),
1042 (data_processing_group, DataProcessingGroup),
1043 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001044 (stress_group, StressGroup),
1045 (scenario_group, ScenarioGroup),
1046 (service_available_group, ServiceAvailableGroup),
1047 (debug_group, DebugGroup),
1048 (baremetal_group, BaremetalGroup),
1049 (input_scenario_group, InputScenarioGroup),
1050 (cli_group, CLIGroup),
1051 (negative_group, NegativeGroup)
1052]
1053
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001054
Matthew Treinish43b296a2014-02-28 15:23:00 -05001055def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001056 for g, o in _opts:
1057 register_opt_group(cfg.CONF, g, o)
1058
1059
1060def list_opts():
1061 """Return a list of oslo.config options available.
1062
1063 The purpose of this is to allow tools like the Oslo sample config file
1064 generator to discover the options exposed to users.
1065 """
1066 optlist = [(g.name, o) for g, o in _opts]
1067
1068 # NOTE(jgrimm): Can be removed once oslo-incubator/oslo changes happen.
1069 optlist.append((None, lockutils.util_opts))
1070 optlist.append((None, logging.common_cli_opts))
1071 optlist.append((None, logging.logging_cli_opts))
1072 optlist.append((None, logging.generic_log_opts))
1073 optlist.append((None, logging.log_opts))
1074
1075 return optlist
Matthew Treinish43b296a2014-02-28 15:23:00 -05001076
1077
Sean Dague3b9b1f32013-12-20 17:04:54 -05001078# this should never be called outside of this class
1079class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001080 """Provides OpenStack configuration information."""
1081
Brian Waldon738cd632011-12-12 18:45:09 -05001082 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001083 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001084 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001085
Brian Waldon738cd632011-12-12 18:45:09 -05001086 DEFAULT_CONFIG_FILE = "tempest.conf"
1087
Andrea Frittolia96ee212014-08-15 18:34:20 +01001088 def __getattr__(self, attr):
1089 # Handles config options from the default group
1090 return getattr(cfg.CONF, attr)
1091
Matthew Treinish43b296a2014-02-28 15:23:00 -05001092 def _set_attrs(self):
Matthew Treinishc791ac42014-07-16 09:15:23 -04001093 self.auth = cfg.CONF.auth
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001094 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001095 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001096 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001097 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001098 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001099 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001100 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001101 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001102 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001103 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001104 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001105 self.object_storage_feature_enabled = cfg.CONF[
1106 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001107 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001108 self.orchestration = cfg.CONF.orchestration
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -03001109 self.messaging = cfg.CONF.messaging
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001110 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001111 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001112 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001113 self.boto = cfg.CONF.boto
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001114 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001115 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001116 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001117 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001118 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001119 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001120 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001121 self.negative = cfg.CONF.negative
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001122 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1123 group='identity')
1124 cfg.CONF.set_default('alt_domain_name',
1125 self.identity.admin_domain_name,
1126 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001127
Joe Gordon28a84ae2014-07-17 15:38:28 +00001128 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001129 """Initialize a configuration from a conf directory and conf file."""
1130 super(TempestConfigPrivate, self).__init__()
1131 config_files = []
1132 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1133
Joe Gordon28a84ae2014-07-17 15:38:28 +00001134 if config_path:
1135 path = config_path
1136 else:
1137 # Environment variables override defaults...
1138 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1139 self.DEFAULT_CONFIG_DIR)
1140 conf_file = os.environ.get('TEMPEST_CONFIG',
1141 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001142
Joe Gordon28a84ae2014-07-17 15:38:28 +00001143 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001144
1145 if not os.path.isfile(path):
1146 path = failsafe_path
1147
1148 # only parse the config file if we expect one to exist. This is needed
1149 # to remove an issue with the config file up to date checker.
1150 if parse_conf:
1151 config_files.append(path)
Matthew Treinish5440a402014-10-02 14:36:16 -04001152 if os.path.isfile(path):
1153 cfg.CONF([], project='tempest', default_config_files=config_files)
1154 else:
1155 cfg.CONF([], project='tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001156 logging.setup('tempest')
1157 LOG = logging.getLogger('tempest')
1158 LOG.info("Using tempest config file %s" % path)
1159 register_opts()
1160 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001161 if parse_conf:
1162 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1163
Sean Dague86bd8422013-12-20 09:56:44 -05001164
1165class TempestConfigProxy(object):
1166 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001167 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001168
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001169 _extra_log_defaults = [
1170 'keystoneclient.session=INFO',
1171 'paramiko.transport=INFO',
1172 'requests.packages.urllib3.connectionpool=WARN'
1173 ]
1174
1175 def _fix_log_levels(self):
1176 """Tweak the oslo log defaults."""
1177 for opt in logging.log_opts:
1178 if opt.dest == 'default_log_levels':
1179 opt.default.extend(self._extra_log_defaults)
1180
Sean Dague86bd8422013-12-20 09:56:44 -05001181 def __getattr__(self, attr):
1182 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001183 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001184 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001185
1186 return getattr(self._config, attr)
1187
Joe Gordon28a84ae2014-07-17 15:38:28 +00001188 def set_config_path(self, path):
1189 self._path = path
1190
Sean Dague86bd8422013-12-20 09:56:44 -05001191
1192CONF = TempestConfigProxy()