blob: 6b17885b8d3d76aed04daf3458bb848b8d1b1bd3 [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
Matthew Treinishf4a9b0f2013-07-26 16:58:26 -040023from tempest.openstack.common import log as logging
Jay Pipes7f757632011-12-02 15:53:32 -050024
Daryl Walleck1465d612011-11-02 02:22:15 -050025
DennyZhang88a2dd82013-10-07 12:55:35 -050026def register_opt_group(conf, opt_group, options):
27 conf.register_group(opt_group)
28 for opt in options:
29 conf.register_opt(opt, group=opt_group.name)
30
31
Matthew Treinish39e48ef2012-12-21 13:36:15 -050032identity_group = cfg.OptGroup(name='identity',
33 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050034
Matthew Treinish39e48ef2012-12-21 13:36:15 -050035IdentityGroup = [
36 cfg.StrOpt('catalog_type',
37 default='identity',
38 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050039 cfg.BoolOpt('disable_ssl_certificate_validation',
40 default=False,
41 help="Set to True if using self-signed SSL certificates."),
Jay Pipes7c88eb22013-01-16 21:32:43 -050042 cfg.StrOpt('uri',
43 default=None,
Brant Knudsonc7ca3342013-03-28 21:08:50 -050044 help="Full URI of the OpenStack Identity API (Keystone), v2"),
45 cfg.StrOpt('uri_v3',
46 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000047 cfg.StrOpt('auth_version',
48 default='v2',
49 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +000050 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050051 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010052 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +090053 help="The identity region name to use. Also used as the other "
54 "services' region name unless they are set explicitly. "
55 "If no such region is found in the service catalog, the "
56 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +000057 cfg.StrOpt('endpoint_type',
58 default='publicURL',
59 choices=['public', 'admin', 'internal',
60 'publicURL', 'adminURL', 'internalURL'],
61 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010062 cfg.StrOpt('username',
Andrea Frittolia9463672014-03-03 14:39:02 +000063 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +010064 help="Username to use for Nova API requests."),
65 cfg.StrOpt('tenant_name',
Andrea Frittolia9463672014-03-03 14:39:02 +000066 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +010067 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +100068 cfg.StrOpt('admin_role',
69 default='admin',
70 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010071 cfg.StrOpt('password',
Andrea Frittolia9463672014-03-03 14:39:02 +000072 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +010073 help="API key to use when authenticating.",
74 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +010075 cfg.StrOpt('domain_name',
76 default=None,
77 help="Domain name for authentication (Keystone V3)."
78 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010079 cfg.StrOpt('alt_username',
80 default=None,
81 help="Username of alternate user to use for Nova API "
82 "requests."),
83 cfg.StrOpt('alt_tenant_name',
84 default=None,
85 help="Alternate user's Tenant name to use for Nova API "
86 "requests."),
87 cfg.StrOpt('alt_password',
88 default=None,
89 help="API key to use when authenticating as alternate user.",
90 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +010091 cfg.StrOpt('alt_domain_name',
92 default=None,
93 help="Alternate domain name for authentication (Keystone V3)."
94 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +010095 cfg.StrOpt('admin_username',
Andrea Frittolia9463672014-03-03 14:39:02 +000096 default=None,
Dirk Mueller14bd5622014-01-14 19:33:05 +010097 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +010098 "Keystone API requests."),
99 cfg.StrOpt('admin_tenant_name',
Andrea Frittolia9463672014-03-03 14:39:02 +0000100 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100101 help="Administrative Tenant name to use for Keystone API "
102 "requests."),
103 cfg.StrOpt('admin_password',
Andrea Frittolia9463672014-03-03 14:39:02 +0000104 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100105 help="API key to use when authenticating as admin.",
106 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100107 cfg.StrOpt('admin_domain_name',
108 default=None,
109 help="Admin domain name for authentication (Keystone V3)."
110 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500111]
Jay Pipes3f981df2012-03-27 18:59:44 -0400112
Matthew Treinishd5021a72014-01-09 18:42:51 +0000113identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
114 title='Enabled Identity Features')
115
116IdentityFeatureGroup = [
117 cfg.BoolOpt('trust',
118 default=True,
119 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000120 'impersonation enabled'),
121 cfg.BoolOpt('api_v2',
122 default=True,
123 help='Is the v2 identity API enabled'),
124 cfg.BoolOpt('api_v3',
125 default=True,
126 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000127]
128
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500129compute_group = cfg.OptGroup(name='compute',
130 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800131
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500132ComputeGroup = [
133 cfg.BoolOpt('allow_tenant_isolation',
134 default=False,
135 help="Allows test cases to create/destroy tenants and "
136 "users. This option enables isolated test cases and "
137 "better parallel execution, but also requires that "
138 "OpenStack Identity API admin credentials are known."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500139 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400140 help="Valid primary image reference to be used in tests. "
141 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500142 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400143 help="Valid secondary image reference to be used in tests. "
144 "This is a required option, but if only one image is "
145 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900146 cfg.StrOpt('flavor_ref',
147 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500148 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900149 cfg.StrOpt('flavor_ref_alt',
150 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500151 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000152 cfg.StrOpt('image_ssh_user',
153 default="root",
154 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700155 cfg.StrOpt('image_ssh_password',
156 default="password",
157 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000158 cfg.StrOpt('image_alt_ssh_user',
159 default="root",
160 help="User name used to authenticate to an instance using "
161 "the alternate image."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700162 cfg.StrOpt('image_alt_ssh_password',
163 default="password",
164 help="Password used to authenticate to an instance using "
165 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500166 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400167 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500168 help="Time in seconds between build status checks."),
169 cfg.IntOpt('build_timeout',
170 default=300,
171 help="Timeout in seconds to wait for an instance to build."),
172 cfg.BoolOpt('run_ssh',
173 default=False,
Derek Higgins85cd5142013-12-17 17:10:11 +0000174 help="Should the tests ssh to instances?"),
Attila Fazekas423834d2014-03-14 17:33:13 +0100175 cfg.StrOpt('ssh_auth_method',
176 default='keypair',
177 help="Auth method used for authenticate to the instance. "
178 "Valid choices are: keypair, configured, adminpass. "
179 "keypair: start the servers with an ssh keypair. "
180 "configured: use the configured user and password. "
181 "adminpass: use the injected adminPass. "
182 "disabled: avoid using ssh when it is an option."),
183 cfg.StrOpt('ssh_connect_method',
184 default='fixed',
185 help="How to connect to the instance? "
186 "fixed: using the first ip belongs the fixed network "
187 "floating: creating and using a floating ip"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500188 cfg.StrOpt('ssh_user',
189 default='root',
190 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700191 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000192 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700193 help="Timeout in seconds to wait for ping to "
194 "succeed."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500195 cfg.IntOpt('ssh_timeout',
196 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030197 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500198 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200199 cfg.IntOpt('ready_wait',
200 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500201 help="Additional wait time for clean state, when there is "
202 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030203 cfg.IntOpt('ssh_channel_timeout',
204 default=60,
205 help="Timeout in seconds to wait for output from ssh "
206 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200207 cfg.StrOpt('fixed_network_name',
208 default='private',
209 help="Visible fixed network name "),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500210 cfg.StrOpt('network_for_ssh',
211 default='public',
212 help="Network used for SSH connections."),
213 cfg.IntOpt('ip_version_for_ssh',
214 default=4,
215 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900216 cfg.BoolOpt('use_floatingip_for_ssh',
217 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700218 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500219 cfg.StrOpt('catalog_type',
220 default='compute',
221 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900222 cfg.StrOpt('region',
223 default='',
224 help="The compute region name to use. If empty, the value "
225 "of identity.region is used instead. If no such region "
226 "is found in the service catalog, the first found one is "
227 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000228 cfg.StrOpt('endpoint_type',
229 default='publicURL',
230 choices=['public', 'admin', 'internal',
231 'publicURL', 'adminURL', 'internalURL'],
232 help="The endpoint type to use for the compute service."),
ivan-zhu8f992be2013-07-31 14:56:58 +0800233 cfg.StrOpt('catalog_v3_type',
234 default='computev3',
235 help="Catalog type of the Compute v3 service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100236 cfg.StrOpt('path_to_private_key',
237 default=None,
238 help="Path to a private key file for SSH access to remote "
239 "hosts"),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700240 cfg.StrOpt('volume_device_name',
241 default='vdb',
242 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900243 "an instance"),
244 cfg.IntOpt('shelved_offload_time',
245 default=0,
246 help='Time in seconds before a shelved instance is eligible '
247 'for removing from a host. -1 never offload, 0 offload '
248 'when shelved. This time should be the same as the time '
249 'of nova.conf, and some tests will run for as long as the '
250 'time.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500251]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800252
Matthew Treinishd5c96022013-10-17 21:51:23 +0000253compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
254 title="Enabled Compute Service Features")
255
256ComputeFeaturesGroup = [
ivan-zhu8f992be2013-07-31 14:56:58 +0800257 cfg.BoolOpt('api_v3',
Chris Yeohfbc15de2013-11-26 10:20:08 +1030258 default=True,
ivan-zhu8f992be2013-07-31 14:56:58 +0800259 help="If false, skip all nova v3 tests."),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000260 cfg.BoolOpt('disk_config',
261 default=True,
262 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000263 cfg.ListOpt('api_extensions',
264 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800265 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900266 'entry all which indicates every extension is enabled. '
267 'Each extension should be specified with alias name'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000268 cfg.ListOpt('api_v3_extensions',
269 default=['all'],
270 help='A list of enabled v3 extensions with a special entry all'
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900271 ' which indicates every extension is enabled. '
272 'Each extension should be specified with alias name'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000273 cfg.BoolOpt('change_password',
274 default=False,
275 help="Does the test environment support changing the admin "
276 "password?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000277 cfg.BoolOpt('resize',
278 default=False,
279 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400280 cfg.BoolOpt('pause',
281 default=True,
282 help="Does the test environment support pausing?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400283 cfg.BoolOpt('suspend',
284 default=True,
285 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000286 cfg.BoolOpt('live_migration',
287 default=False,
288 help="Does the test environment support live migration "
289 "available?"),
290 cfg.BoolOpt('block_migration_for_live_migration',
291 default=False,
292 help="Does the test environment use block devices for live "
293 "migration"),
294 cfg.BoolOpt('block_migrate_cinder_iscsi',
295 default=False,
296 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900297 "cinder iSCSI volumes"),
298 cfg.BoolOpt('vnc_console',
299 default=False,
300 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900301 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
302 cfg.BoolOpt('spice_console',
303 default=False,
304 help='Enable Spice console. This configuration value should '
305 'be same as [nova.spice]->enabled in nova.conf'),
306 cfg.BoolOpt('rdp_console',
307 default=False,
308 help='Enable RDP console. This configuration value should '
309 'be same as [nova.rdp]->enabled in nova.conf')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000310]
311
312
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500313compute_admin_group = cfg.OptGroup(name='compute-admin',
314 title="Compute Admin Options")
donald-ngo7fb1efa2011-12-13 17:17:36 -0800315
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500316ComputeAdminGroup = [
317 cfg.StrOpt('username',
Andrea Frittolia9463672014-03-03 14:39:02 +0000318 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500319 help="Administrative Username to use for Nova API requests."),
320 cfg.StrOpt('tenant_name',
Andrea Frittolia9463672014-03-03 14:39:02 +0000321 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500322 help="Administrative Tenant name to use for Nova API "
323 "requests."),
324 cfg.StrOpt('password',
Andrea Frittolia9463672014-03-03 14:39:02 +0000325 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500326 help="API key to use when authenticating as admin.",
327 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100328 cfg.StrOpt('domain_name',
329 default=None,
330 help="Domain name for authentication as admin (Keystone V3)."
331 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500332]
Daryl Walleck587385b2012-03-03 13:00:26 -0600333
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500334image_group = cfg.OptGroup(name='image',
335 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400336
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500337ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500338 cfg.StrOpt('catalog_type',
339 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400340 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900341 cfg.StrOpt('region',
342 default='',
343 help="The image region name to use. If empty, the value "
344 "of identity.region is used instead. If no such region "
345 "is found in the service catalog, the first found one is "
346 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000347 cfg.StrOpt('endpoint_type',
348 default='publicURL',
349 choices=['public', 'admin', 'internal',
350 'publicURL', 'adminURL', 'internalURL'],
351 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400352 cfg.StrOpt('http_image',
353 default='http://download.cirros-cloud.net/0.3.1/'
354 'cirros-0.3.1-x86_64-uec.tar.gz',
DennyZhang8912d012013-09-25 18:08:34 -0500355 help='http accessible image')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500356]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400357
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000358image_feature_group = cfg.OptGroup(name='image-feature-enabled',
359 title='Enabled image service features')
360
361ImageFeaturesGroup = [
362 cfg.BoolOpt('api_v2',
363 default=True,
364 help="Is the v2 image API enabled"),
365 cfg.BoolOpt('api_v1',
366 default=True,
367 help="Is the v1 image API enabled"),
368]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400369
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500370network_group = cfg.OptGroup(name='network',
371 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600372
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500373NetworkGroup = [
374 cfg.StrOpt('catalog_type',
375 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400376 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900377 cfg.StrOpt('region',
378 default='',
379 help="The network region name to use. If empty, the value "
380 "of identity.region is used instead. If no such region "
381 "is found in the service catalog, the first found one is "
382 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000383 cfg.StrOpt('endpoint_type',
384 default='publicURL',
385 choices=['public', 'admin', 'internal',
386 'publicURL', 'adminURL', 'internalURL'],
387 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500388 cfg.StrOpt('tenant_network_cidr',
389 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500390 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500391 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200392 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500393 help="The mask bits for tenant ipv4 subnets"),
394 cfg.StrOpt('tenant_network_v6_cidr',
395 default="2003::/64",
396 help="The cidr block to allocate tenant ipv6 subnets from"),
397 cfg.IntOpt('tenant_network_v6_mask_bits',
398 default=96,
399 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500400 cfg.BoolOpt('tenant_networks_reachable',
401 default=False,
402 help="Whether tenant network connectivity should be "
403 "evaluated directly"),
404 cfg.StrOpt('public_network_id',
405 default="",
406 help="Id of the public network that provides external "
407 "connectivity"),
408 cfg.StrOpt('public_router_id',
409 default="",
410 help="Id of the public router that provides external "
411 "connectivity"),
izikpensod9a01a62014-02-17 20:02:32 +0200412 cfg.IntOpt('build_timeout',
413 default=300,
414 help="Timeout in seconds to wait for network operation to "
415 "complete."),
416 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400417 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200418 help="Time in seconds between network operation status "
419 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200420 cfg.ListOpt('dns_servers',
421 default=["8.8.8.8", "8.8.4.4"],
422 help="List of dns servers whichs hould be used"
423 " for subnet creation")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500424]
Jay Pipes3f981df2012-03-27 18:59:44 -0400425
Matthew Treinishe3d26142013-11-26 19:14:58 +0000426network_feature_group = cfg.OptGroup(name='network-feature-enabled',
427 title='Enabled network service features')
428
429NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000430 cfg.BoolOpt('ipv6',
431 default=True,
432 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000433 cfg.ListOpt('api_extensions',
434 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800435 help='A list of enabled network extensions with a special '
436 'entry all which indicates every extension is enabled'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000437]
438
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500439queuing_group = cfg.OptGroup(name='queuing',
440 title='Queuing Service')
441
442QueuingGroup = [
443 cfg.StrOpt('catalog_type',
444 default='queuing',
445 help='Catalog type of the Queuing service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000446 cfg.IntOpt('max_queues_per_page',
447 default=20,
448 help='The maximum number of queue records per page when '
449 'listing queues'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500450]
451
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500452volume_group = cfg.OptGroup(name='volume',
453 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600454
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500455VolumeGroup = [
456 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400457 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500458 help='Time in seconds between volume availability checks.'),
459 cfg.IntOpt('build_timeout',
460 default=300,
461 help='Timeout in seconds to wait for a volume to become'
462 'available.'),
463 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000464 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500465 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900466 cfg.StrOpt('region',
467 default='',
468 help="The volume region name to use. If empty, the value "
469 "of identity.region is used instead. If no such region "
470 "is found in the service catalog, the first found one is "
471 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000472 cfg.StrOpt('endpoint_type',
473 default='publicURL',
474 choices=['public', 'admin', 'internal',
475 'publicURL', 'adminURL', 'internalURL'],
476 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100477 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200478 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100479 help="Name of the backend1 (must be declared in cinder.conf)"),
480 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200481 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100482 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700483 cfg.StrOpt('storage_protocol',
484 default='iSCSI',
485 help='Backend protocol to target when creating volume types'),
486 cfg.StrOpt('vendor_name',
487 default='Open Source',
488 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700489 cfg.StrOpt('disk_format',
490 default='raw',
491 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800492 cfg.IntOpt('volume_size',
493 default=1,
494 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500495]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800496
Matthew Treinishd5c96022013-10-17 21:51:23 +0000497volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
498 title='Enabled Cinder Features')
499
500VolumeFeaturesGroup = [
501 cfg.BoolOpt('multi_backend',
502 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000503 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100504 cfg.BoolOpt('backup',
505 default=True,
506 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100507 cfg.BoolOpt('snapshot',
508 default=True,
509 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000510 cfg.ListOpt('api_extensions',
511 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800512 help='A list of enabled volume extensions with a special '
513 'entry all which indicates every extension is enabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800514 cfg.BoolOpt('api_v1',
515 default=True,
516 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800517 cfg.BoolOpt('api_v2',
518 default=True,
519 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000520]
521
Daryl Walleck587385b2012-03-03 13:00:26 -0600522
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500523object_storage_group = cfg.OptGroup(name='object-storage',
524 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200525
DennyZhang1e71b612013-09-26 12:35:40 -0500526ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500527 cfg.StrOpt('catalog_type',
528 default='object-store',
529 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900530 cfg.StrOpt('region',
531 default='',
532 help="The object-storage region name to use. If empty, the "
533 "value of identity.region is used instead. If no such "
534 "region is found in the service catalog, the first found "
535 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000536 cfg.StrOpt('endpoint_type',
537 default='publicURL',
538 choices=['public', 'admin', 'internal',
539 'publicURL', 'adminURL', 'internalURL'],
540 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000541 cfg.IntOpt('container_sync_timeout',
nayna-patelb4989b32013-01-09 06:25:13 +0000542 default=120,
Fabien Boucher2178d312013-12-31 15:38:57 +0100543 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000544 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000545 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000546 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100547 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000548 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400549 cfg.StrOpt('operator_role',
550 default='Member',
551 help="Role to add to users created for swift tests to "
552 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500553 cfg.StrOpt('reseller_admin_role',
554 default='ResellerAdmin',
555 help="User role that has reseller admin"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500556]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200557
Matthew Treinishd5c96022013-10-17 21:51:23 +0000558object_storage_feature_group = cfg.OptGroup(
559 name='object-storage-feature-enabled',
560 title='Enabled object-storage features')
561
562ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000563 cfg.ListOpt('discoverable_apis',
564 default=['all'],
565 help="A list of the enabled optional discoverable apis. "
566 "A single entry, all, indicates that all of these "
567 "features are expected to be enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000568]
569
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800570database_group = cfg.OptGroup(name='database',
571 title='Database Service Options')
572
573DatabaseGroup = [
574 cfg.StrOpt('catalog_type',
575 default='database',
576 help="Catalog type of the Database service."),
577 cfg.StrOpt('db_flavor_ref',
578 default="1",
579 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400580 cfg.StrOpt('db_current_version',
581 default="v1.0",
582 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800583]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200584
Steve Bakerc60e4e32013-05-06 15:22:41 +1200585orchestration_group = cfg.OptGroup(name='orchestration',
586 title='Orchestration Service Options')
587
588OrchestrationGroup = [
589 cfg.StrOpt('catalog_type',
590 default='orchestration',
591 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900592 cfg.StrOpt('region',
593 default='',
594 help="The orchestration region name to use. If empty, the "
595 "value of identity.region is used instead. If no such "
596 "region is found in the service catalog, the first found "
597 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000598 cfg.StrOpt('endpoint_type',
599 default='publicURL',
600 choices=['public', 'admin', 'internal',
601 'publicURL', 'adminURL', 'internalURL'],
602 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200603 cfg.BoolOpt('allow_tenant_isolation',
604 default=False,
605 help="Allows test cases to create/destroy tenants and "
606 "users. This option enables isolated test cases and "
607 "better parallel execution, but also requires that "
608 "OpenStack Identity API admin credentials are known."),
609 cfg.IntOpt('build_interval',
610 default=1,
611 help="Time in seconds between build status checks."),
612 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400613 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200614 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200615 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200616 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200617 help="Instance type for tests. Needs to be big enough for a "
618 "full OS plus the test workload"),
619 cfg.StrOpt('image_ref',
620 default=None,
621 help="Name of heat-cfntools enabled image to use when "
622 "launching test instances."),
623 cfg.StrOpt('keypair_name',
624 default=None,
625 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700626 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100627 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700628 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000629 cfg.IntOpt('max_resources_per_stack',
630 default=1000,
631 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200632]
633
634
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100635telemetry_group = cfg.OptGroup(name='telemetry',
636 title='Telemetry Service Options')
637
638TelemetryGroup = [
639 cfg.StrOpt('catalog_type',
640 default='metering',
641 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000642 cfg.StrOpt('endpoint_type',
643 default='publicURL',
644 choices=['public', 'admin', 'internal',
645 'publicURL', 'adminURL', 'internalURL'],
646 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400647 cfg.BoolOpt('too_slow_to_test',
648 default=True,
649 help="This variable is used as flag to enable "
650 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100651]
652
653
Julie Pichond1017642013-07-24 16:37:23 +0100654dashboard_group = cfg.OptGroup(name="dashboard",
655 title="Dashboard options")
656
657DashboardGroup = [
658 cfg.StrOpt('dashboard_url',
659 default='http://localhost/',
660 help="Where the dashboard can be found"),
661 cfg.StrOpt('login_url',
662 default='http://localhost/auth/login/',
663 help="Login page for the dashboard"),
664]
665
666
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400667data_processing_group = cfg.OptGroup(name="data_processing",
668 title="Data Processing options")
669
670DataProcessingGroup = [
671 cfg.StrOpt('catalog_type',
672 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000673 help="Catalog type of the data processing service."),
674 cfg.StrOpt('endpoint_type',
675 default='publicURL',
676 choices=['public', 'admin', 'internal',
677 'publicURL', 'adminURL', 'internalURL'],
678 help="The endpoint type to use for the data processing "
679 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400680]
681
682
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500683boto_group = cfg.OptGroup(name='boto',
684 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500685BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500686 cfg.StrOpt('ec2_url',
687 default="http://localhost:8773/services/Cloud",
688 help="EC2 URL"),
689 cfg.StrOpt('s3_url',
690 default="http://localhost:8080",
691 help="S3 URL"),
692 cfg.StrOpt('aws_secret',
693 default=None,
694 help="AWS Secret Key",
695 secret=True),
696 cfg.StrOpt('aws_access',
697 default=None,
698 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100699 cfg.StrOpt('aws_zone',
700 default="nova",
701 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500702 cfg.StrOpt('s3_materials_path',
703 default="/opt/stack/devstack/files/images/"
704 "s3-materials/cirros-0.3.0",
705 help="S3 Materials Path"),
706 cfg.StrOpt('ari_manifest',
707 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
708 help="ARI Ramdisk Image manifest"),
709 cfg.StrOpt('ami_manifest',
710 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
711 help="AMI Machine Image manifest"),
712 cfg.StrOpt('aki_manifest',
713 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
714 help="AKI Kernel Image manifest"),
715 cfg.StrOpt('instance_type',
716 default="m1.tiny",
717 help="Instance type"),
718 cfg.IntOpt('http_socket_timeout',
719 default=3,
720 help="boto Http socket timeout"),
721 cfg.IntOpt('num_retries',
722 default=1,
723 help="boto num_retries on error"),
724 cfg.IntOpt('build_timeout',
725 default=60,
726 help="Status Change Timeout"),
727 cfg.IntOpt('build_interval',
728 default=1,
729 help="Status Change Test Interval"),
730]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100731
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500732stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
733
734StressGroup = [
735 cfg.StrOpt('nova_logdir',
736 default=None,
737 help='Directory containing log files on the compute nodes'),
738 cfg.IntOpt('max_instances',
739 default=16,
740 help='Maximum number of instances to create during test.'),
741 cfg.StrOpt('controller',
742 default=None,
David Kranzb9d97502013-05-01 15:55:04 -0400743 help='Controller host.'),
744 # new stress options
745 cfg.StrOpt('target_controller',
746 default=None,
747 help='Controller host.'),
748 cfg.StrOpt('target_ssh_user',
749 default=None,
750 help='ssh user.'),
751 cfg.StrOpt('target_private_key_path',
752 default=None,
753 help='Path to private key.'),
754 cfg.StrOpt('target_logfiles',
755 default=None,
756 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000757 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400758 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200759 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000760 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200761 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100762 help='The number of threads created while stress test.'),
763 cfg.BoolOpt('leave_dirty_stack',
764 default=False,
765 help='Prevent the cleaning (tearDownClass()) between'
766 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100767 ' during this run.'),
768 cfg.BoolOpt('full_clean_stack',
769 default=False,
770 help='Allows a full cleaning process after a stress test.'
771 ' Caution : this cleanup will remove every objects of'
772 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500773]
774
775
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900776scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
777
778ScenarioGroup = [
779 cfg.StrOpt('img_dir',
780 default='/opt/stack/new/devstack/files/images/'
781 'cirros-0.3.1-x86_64-uec',
782 help='Directory containing image files'),
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900783 cfg.StrOpt('qcow2_img_file',
784 default='cirros-0.3.1-x86_64-disk.img',
785 help='QCOW2 image file name'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900786 cfg.StrOpt('ami_img_file',
787 default='cirros-0.3.1-x86_64-blank.img',
788 help='AMI image file name'),
789 cfg.StrOpt('ari_img_file',
790 default='cirros-0.3.1-x86_64-initrd',
791 help='ARI image file name'),
792 cfg.StrOpt('aki_img_file',
793 default='cirros-0.3.1-x86_64-vmlinuz',
794 help='AKI image file name'),
795 cfg.StrOpt('ssh_user',
796 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000797 help='ssh username for the image file'),
798 cfg.IntOpt(
799 'large_ops_number',
800 default=0,
801 help="specifies how many resources to request at once. Used "
802 "for large operations testing.")
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900803]
804
805
Matthew Treinish4c412922013-07-16 15:27:42 -0400806service_available_group = cfg.OptGroup(name="service_available",
807 title="Available OpenStack Services")
808
809ServiceAvailableGroup = [
810 cfg.BoolOpt('cinder',
811 default=True,
812 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400813 cfg.BoolOpt('neutron',
814 default=False,
815 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400816 cfg.BoolOpt('glance',
817 default=True,
818 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400819 cfg.BoolOpt('swift',
820 default=True,
821 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400822 cfg.BoolOpt('nova',
823 default=True,
824 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400825 cfg.BoolOpt('heat',
826 default=False,
827 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200828 cfg.BoolOpt('ceilometer',
829 default=True,
830 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100831 cfg.BoolOpt('horizon',
832 default=True,
833 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400834 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400835 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400836 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300837 cfg.BoolOpt('ironic',
838 default=False,
839 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800840 cfg.BoolOpt('trove',
841 default=False,
842 help="Whether or not Trove is expected to be available"),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500843 cfg.BoolOpt('marconi',
844 default=False,
845 help="Whether or not Marconi is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400846]
847
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200848debug_group = cfg.OptGroup(name="debug",
849 title="Debug System")
850
851DebugGroup = [
852 cfg.BoolOpt('enable',
853 default=True,
854 help="Enable diagnostic commands"),
Sean Daguec522c092014-03-24 10:43:22 -0400855 cfg.StrOpt('trace_requests',
856 default='',
857 help="""A regex to determine which requests should be traced.
858
859This is a regex to match the caller for rest client requests to be able to
860selectively trace calls out of specific classes and methods. It largely
861exists for test development, and is not expected to be used in a real deploy
862of tempest. This will be matched against the discovered ClassName:method
863in the test environment.
864
865Expected values for this field are:
866
867 * ClassName:test_method_name - traces one test_method
868 * ClassName:setUp(Class) - traces specific setup functions
869 * ClassName:tearDown(Class) - traces specific teardown functions
870 * ClassName:_run_cleanups - traces the cleanup functions
871
872If nothing is specified, this feature is not enabled. To trace everything
873specify .* as the regex.
874""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200875]
876
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000877input_scenario_group = cfg.OptGroup(name="input-scenario",
878 title="Filters and values for"
879 " input scenarios")
880
881InputScenarioGroup = [
882 cfg.StrOpt('image_regex',
883 default='^cirros-0.3.1-x86_64-uec$',
884 help="Matching images become parameters for scenario tests"),
885 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000886 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000887 help="Matching flavors become parameters for scenario tests"),
888 cfg.StrOpt('non_ssh_image_regex',
889 default='^.*[Ww]in.*$',
890 help="SSH verification in tests is skipped"
891 "for matching images"),
892 cfg.StrOpt('ssh_user_regex',
893 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
894 help="List of user mapped to regex "
895 "to matching image names."),
896]
897
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200898
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300899baremetal_group = cfg.OptGroup(name='baremetal',
900 title='Baremetal provisioning service options')
901
902BaremetalGroup = [
903 cfg.StrOpt('catalog_type',
904 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -0700905 help="Catalog type of the baremetal provisioning service"),
906 cfg.BoolOpt('driver_enabled',
907 default=False,
908 help="Whether the Ironic nova-compute driver is enabled"),
JordanPfc62c902014-02-26 14:47:28 +0000909 cfg.StrOpt('endpoint_type',
910 default='publicURL',
911 choices=['public', 'admin', 'internal',
912 'publicURL', 'adminURL', 'internalURL'],
913 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -0700914 "service"),
915 cfg.IntOpt('active_timeout',
916 default=300,
917 help="Timeout for Ironic node to completely provision"),
918 cfg.IntOpt('association_timeout',
919 default=10,
920 help="Timeout for association of Nova instance and Ironic "
921 "node"),
922 cfg.IntOpt('power_timeout',
923 default=20,
924 help="Timeout for Ironic power transitions."),
925 cfg.IntOpt('unprovision_timeout',
926 default=20,
927 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300928]
929
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000930cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
931
932CLIGroup = [
933 cfg.BoolOpt('enabled',
934 default=True,
935 help="enable cli tests"),
936 cfg.StrOpt('cli_dir',
937 default='/usr/local/bin',
938 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -0500939 cfg.BoolOpt('has_manage',
940 default=True,
941 help=("Whether the tempest run location has access to the "
942 "*-manage commands. In a pure blackbox environment "
943 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000944 cfg.IntOpt('timeout',
945 default=15,
946 help="Number of seconds to wait on a CLI timeout"),
947]
948
Marc Koderer6ee82dc2014-02-17 10:26:29 +0100949negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
950
951NegativeGroup = [
952 cfg.StrOpt('test_generator',
953 default='tempest.common.' +
954 'generator.negative_generator.NegativeTestGenerator',
955 help="Test generator class for all negative tests"),
956]
957
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300958
Matthew Treinish43b296a2014-02-28 15:23:00 -0500959def register_opts():
960 register_opt_group(cfg.CONF, compute_group, ComputeGroup)
961 register_opt_group(cfg.CONF, compute_features_group,
962 ComputeFeaturesGroup)
963 register_opt_group(cfg.CONF, identity_group, IdentityGroup)
964 register_opt_group(cfg.CONF, identity_feature_group,
965 IdentityFeatureGroup)
966 register_opt_group(cfg.CONF, image_group, ImageGroup)
967 register_opt_group(cfg.CONF, image_feature_group, ImageFeaturesGroup)
968 register_opt_group(cfg.CONF, network_group, NetworkGroup)
969 register_opt_group(cfg.CONF, network_feature_group,
970 NetworkFeaturesGroup)
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500971 register_opt_group(cfg.CONF, queuing_group, QueuingGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500972 register_opt_group(cfg.CONF, volume_group, VolumeGroup)
973 register_opt_group(cfg.CONF, volume_feature_group,
974 VolumeFeaturesGroup)
975 register_opt_group(cfg.CONF, object_storage_group, ObjectStoreGroup)
976 register_opt_group(cfg.CONF, object_storage_feature_group,
977 ObjectStoreFeaturesGroup)
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800978 register_opt_group(cfg.CONF, database_group, DatabaseGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500979 register_opt_group(cfg.CONF, orchestration_group, OrchestrationGroup)
980 register_opt_group(cfg.CONF, telemetry_group, TelemetryGroup)
981 register_opt_group(cfg.CONF, dashboard_group, DashboardGroup)
982 register_opt_group(cfg.CONF, data_processing_group,
983 DataProcessingGroup)
984 register_opt_group(cfg.CONF, boto_group, BotoGroup)
985 register_opt_group(cfg.CONF, compute_admin_group, ComputeAdminGroup)
986 register_opt_group(cfg.CONF, stress_group, StressGroup)
987 register_opt_group(cfg.CONF, scenario_group, ScenarioGroup)
988 register_opt_group(cfg.CONF, service_available_group,
989 ServiceAvailableGroup)
990 register_opt_group(cfg.CONF, debug_group, DebugGroup)
991 register_opt_group(cfg.CONF, baremetal_group, BaremetalGroup)
992 register_opt_group(cfg.CONF, input_scenario_group, InputScenarioGroup)
993 register_opt_group(cfg.CONF, cli_group, CLIGroup)
Marc Koderer6ee82dc2014-02-17 10:26:29 +0100994 register_opt_group(cfg.CONF, negative_group, NegativeGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500995
996
Sean Dague3b9b1f32013-12-20 17:04:54 -0500997# this should never be called outside of this class
998class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -0500999 """Provides OpenStack configuration information."""
1000
Brian Waldon738cd632011-12-12 18:45:09 -05001001 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001002 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001003 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001004
Brian Waldon738cd632011-12-12 18:45:09 -05001005 DEFAULT_CONFIG_FILE = "tempest.conf"
1006
Matthew Treinish43b296a2014-02-28 15:23:00 -05001007 def _set_attrs(self):
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001008 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +00001009 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001010 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +00001011 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -08001012 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +00001013 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001014 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +00001015 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001016 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +00001017 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001018 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +00001019 self.object_storage_feature_enabled = cfg.CONF[
1020 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001021 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +12001022 self.orchestration = cfg.CONF.orchestration
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -05001023 self.queuing = cfg.CONF.queuing
Yassine Lamgarchalb158d412013-12-27 19:29:42 +01001024 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +01001025 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001026 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -05001027 self.boto = cfg.CONF.boto
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001028 self.compute_admin = cfg.CONF['compute-admin']
Matthew Treinish615ea6a2013-02-25 17:26:59 -05001029 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001030 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -04001031 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +02001032 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001033 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001034 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +00001035 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001036 self.negative = cfg.CONF.negative
Attila Fazekascadcb1f2013-01-21 23:10:53 +01001037 if not self.compute_admin.username:
1038 self.compute_admin.username = self.identity.admin_username
1039 self.compute_admin.password = self.identity.admin_password
1040 self.compute_admin.tenant_name = self.identity.admin_tenant_name
Andrea Frittolib1b04bb2014-04-06 11:57:07 +01001041 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1042 group='identity')
1043 cfg.CONF.set_default('alt_domain_name',
1044 self.identity.admin_domain_name,
1045 group='identity')
1046 cfg.CONF.set_default('domain_name', self.identity.admin_domain_name,
1047 group='compute-admin')
Sean Dague86bd8422013-12-20 09:56:44 -05001048
Matthew Treinish43b296a2014-02-28 15:23:00 -05001049 def __init__(self, parse_conf=True):
1050 """Initialize a configuration from a conf directory and conf file."""
1051 super(TempestConfigPrivate, self).__init__()
1052 config_files = []
1053 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1054
1055 # Environment variables override defaults...
1056 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1057 self.DEFAULT_CONFIG_DIR)
1058 conf_file = os.environ.get('TEMPEST_CONFIG', self.DEFAULT_CONFIG_FILE)
1059
1060 path = os.path.join(conf_dir, conf_file)
1061
1062 if not os.path.isfile(path):
1063 path = failsafe_path
1064
1065 # only parse the config file if we expect one to exist. This is needed
1066 # to remove an issue with the config file up to date checker.
1067 if parse_conf:
1068 config_files.append(path)
1069
1070 cfg.CONF([], project='tempest', default_config_files=config_files)
1071 logging.setup('tempest')
1072 LOG = logging.getLogger('tempest')
1073 LOG.info("Using tempest config file %s" % path)
1074 register_opts()
1075 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001076 if parse_conf:
1077 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1078
Sean Dague86bd8422013-12-20 09:56:44 -05001079
1080class TempestConfigProxy(object):
1081 _config = None
1082
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001083 _extra_log_defaults = [
1084 'keystoneclient.session=INFO',
1085 'paramiko.transport=INFO',
1086 'requests.packages.urllib3.connectionpool=WARN'
1087 ]
1088
1089 def _fix_log_levels(self):
1090 """Tweak the oslo log defaults."""
1091 for opt in logging.log_opts:
1092 if opt.dest == 'default_log_levels':
1093 opt.default.extend(self._extra_log_defaults)
1094
Sean Dague86bd8422013-12-20 09:56:44 -05001095 def __getattr__(self, attr):
1096 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001097 self._fix_log_levels()
Sean Dague3b9b1f32013-12-20 17:04:54 -05001098 self._config = TempestConfigPrivate()
Sean Dague86bd8422013-12-20 09:56:44 -05001099
1100 return getattr(self._config, attr)
1101
1102
1103CONF = TempestConfigProxy()