blob: 708476867d1de97106eba4aca867db35bd55fa0e [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),
75 cfg.StrOpt('alt_username',
76 default=None,
77 help="Username of alternate user to use for Nova API "
78 "requests."),
79 cfg.StrOpt('alt_tenant_name',
80 default=None,
81 help="Alternate user's Tenant name to use for Nova API "
82 "requests."),
83 cfg.StrOpt('alt_password',
84 default=None,
85 help="API key to use when authenticating as alternate user.",
86 secret=True),
87 cfg.StrOpt('admin_username',
Andrea Frittolia9463672014-03-03 14:39:02 +000088 default=None,
Dirk Mueller14bd5622014-01-14 19:33:05 +010089 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +010090 "Keystone API requests."),
91 cfg.StrOpt('admin_tenant_name',
Andrea Frittolia9463672014-03-03 14:39:02 +000092 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +010093 help="Administrative Tenant name to use for Keystone API "
94 "requests."),
95 cfg.StrOpt('admin_password',
Andrea Frittolia9463672014-03-03 14:39:02 +000096 default=None,
Attila Fazekascadcb1f2013-01-21 23:10:53 +010097 help="API key to use when authenticating as admin.",
98 secret=True),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050099]
Jay Pipes3f981df2012-03-27 18:59:44 -0400100
Matthew Treinishd5021a72014-01-09 18:42:51 +0000101identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
102 title='Enabled Identity Features')
103
104IdentityFeatureGroup = [
105 cfg.BoolOpt('trust',
106 default=True,
107 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000108 'impersonation enabled'),
109 cfg.BoolOpt('api_v2',
110 default=True,
111 help='Is the v2 identity API enabled'),
112 cfg.BoolOpt('api_v3',
113 default=True,
114 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000115]
116
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500117compute_group = cfg.OptGroup(name='compute',
118 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800119
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500120ComputeGroup = [
121 cfg.BoolOpt('allow_tenant_isolation',
122 default=False,
123 help="Allows test cases to create/destroy tenants and "
124 "users. This option enables isolated test cases and "
125 "better parallel execution, but also requires that "
126 "OpenStack Identity API admin credentials are known."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500127 cfg.StrOpt('image_ref',
128 default="{$IMAGE_ID}",
Jerry Cai9733d0e2014-03-19 15:50:49 +0800129 help="Valid primary image reference to be used in tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500130 cfg.StrOpt('image_ref_alt',
131 default="{$IMAGE_ID_ALT}",
132 help="Valid secondary image reference to be used in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900133 cfg.StrOpt('flavor_ref',
134 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500135 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900136 cfg.StrOpt('flavor_ref_alt',
137 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500138 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000139 cfg.StrOpt('image_ssh_user',
140 default="root",
141 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700142 cfg.StrOpt('image_ssh_password',
143 default="password",
144 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000145 cfg.StrOpt('image_alt_ssh_user',
146 default="root",
147 help="User name used to authenticate to an instance using "
148 "the alternate image."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700149 cfg.StrOpt('image_alt_ssh_password',
150 default="password",
151 help="Password used to authenticate to an instance using "
152 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500153 cfg.IntOpt('build_interval',
154 default=10,
155 help="Time in seconds between build status checks."),
156 cfg.IntOpt('build_timeout',
157 default=300,
158 help="Timeout in seconds to wait for an instance to build."),
159 cfg.BoolOpt('run_ssh',
160 default=False,
Derek Higgins85cd5142013-12-17 17:10:11 +0000161 help="Should the tests ssh to instances?"),
Attila Fazekas423834d2014-03-14 17:33:13 +0100162 cfg.StrOpt('ssh_auth_method',
163 default='keypair',
164 help="Auth method used for authenticate to the instance. "
165 "Valid choices are: keypair, configured, adminpass. "
166 "keypair: start the servers with an ssh keypair. "
167 "configured: use the configured user and password. "
168 "adminpass: use the injected adminPass. "
169 "disabled: avoid using ssh when it is an option."),
170 cfg.StrOpt('ssh_connect_method',
171 default='fixed',
172 help="How to connect to the instance? "
173 "fixed: using the first ip belongs the fixed network "
174 "floating: creating and using a floating ip"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500175 cfg.StrOpt('ssh_user',
176 default='root',
177 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700178 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000179 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700180 help="Timeout in seconds to wait for ping to "
181 "succeed."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500182 cfg.IntOpt('ssh_timeout',
183 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030184 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500185 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200186 cfg.IntOpt('ready_wait',
187 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500188 help="Additional wait time for clean state, when there is "
189 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030190 cfg.IntOpt('ssh_channel_timeout',
191 default=60,
192 help="Timeout in seconds to wait for output from ssh "
193 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200194 cfg.StrOpt('fixed_network_name',
195 default='private',
196 help="Visible fixed network name "),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500197 cfg.StrOpt('network_for_ssh',
198 default='public',
199 help="Network used for SSH connections."),
200 cfg.IntOpt('ip_version_for_ssh',
201 default=4,
202 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900203 cfg.BoolOpt('use_floatingip_for_ssh',
204 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700205 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500206 cfg.StrOpt('catalog_type',
207 default='compute',
208 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900209 cfg.StrOpt('region',
210 default='',
211 help="The compute region name to use. If empty, the value "
212 "of identity.region is used instead. If no such region "
213 "is found in the service catalog, the first found one is "
214 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000215 cfg.StrOpt('endpoint_type',
216 default='publicURL',
217 choices=['public', 'admin', 'internal',
218 'publicURL', 'adminURL', 'internalURL'],
219 help="The endpoint type to use for the compute service."),
ivan-zhu8f992be2013-07-31 14:56:58 +0800220 cfg.StrOpt('catalog_v3_type',
221 default='computev3',
222 help="Catalog type of the Compute v3 service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100223 cfg.StrOpt('path_to_private_key',
224 default=None,
225 help="Path to a private key file for SSH access to remote "
226 "hosts"),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700227 cfg.StrOpt('volume_device_name',
228 default='vdb',
229 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900230 "an instance"),
231 cfg.IntOpt('shelved_offload_time',
232 default=0,
233 help='Time in seconds before a shelved instance is eligible '
234 'for removing from a host. -1 never offload, 0 offload '
235 'when shelved. This time should be the same as the time '
236 'of nova.conf, and some tests will run for as long as the '
237 'time.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500238]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800239
Matthew Treinishd5c96022013-10-17 21:51:23 +0000240compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
241 title="Enabled Compute Service Features")
242
243ComputeFeaturesGroup = [
ivan-zhu8f992be2013-07-31 14:56:58 +0800244 cfg.BoolOpt('api_v3',
Chris Yeohfbc15de2013-11-26 10:20:08 +1030245 default=True,
ivan-zhu8f992be2013-07-31 14:56:58 +0800246 help="If false, skip all nova v3 tests."),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000247 cfg.BoolOpt('disk_config',
248 default=True,
249 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000250 cfg.ListOpt('api_extensions',
251 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800252 help='A list of enabled compute extensions with a special '
253 'entry all which indicates every extension is enabled'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000254 cfg.ListOpt('api_v3_extensions',
255 default=['all'],
256 help='A list of enabled v3 extensions with a special entry all'
257 ' which indicates every extension is enabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000258 cfg.BoolOpt('change_password',
259 default=False,
260 help="Does the test environment support changing the admin "
261 "password?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000262 cfg.BoolOpt('resize',
263 default=False,
264 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400265 cfg.BoolOpt('pause',
266 default=True,
267 help="Does the test environment support pausing?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400268 cfg.BoolOpt('suspend',
269 default=True,
270 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000271 cfg.BoolOpt('live_migration',
272 default=False,
273 help="Does the test environment support live migration "
274 "available?"),
275 cfg.BoolOpt('block_migration_for_live_migration',
276 default=False,
277 help="Does the test environment use block devices for live "
278 "migration"),
279 cfg.BoolOpt('block_migrate_cinder_iscsi',
280 default=False,
281 help="Does the test environment block migration support "
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900282 "cinder iSCSI volumes"),
283 cfg.BoolOpt('vnc_console',
284 default=False,
285 help='Enable VNC console. This configuration value should '
286 'be same as [nova.vnc]->vnc_enabled in nova.conf')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000287]
288
289
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500290compute_admin_group = cfg.OptGroup(name='compute-admin',
291 title="Compute Admin Options")
donald-ngo7fb1efa2011-12-13 17:17:36 -0800292
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500293ComputeAdminGroup = [
294 cfg.StrOpt('username',
Andrea Frittolia9463672014-03-03 14:39:02 +0000295 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500296 help="Administrative Username to use for Nova API requests."),
297 cfg.StrOpt('tenant_name',
Andrea Frittolia9463672014-03-03 14:39:02 +0000298 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500299 help="Administrative Tenant name to use for Nova API "
300 "requests."),
301 cfg.StrOpt('password',
Andrea Frittolia9463672014-03-03 14:39:02 +0000302 default=None,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500303 help="API key to use when authenticating as admin.",
304 secret=True),
305]
Daryl Walleck587385b2012-03-03 13:00:26 -0600306
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500307image_group = cfg.OptGroup(name='image',
308 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400309
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500310ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500311 cfg.StrOpt('catalog_type',
312 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400313 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900314 cfg.StrOpt('region',
315 default='',
316 help="The image region name to use. If empty, the value "
317 "of identity.region is used instead. If no such region "
318 "is found in the service catalog, the first found one is "
319 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000320 cfg.StrOpt('endpoint_type',
321 default='publicURL',
322 choices=['public', 'admin', 'internal',
323 'publicURL', 'adminURL', 'internalURL'],
324 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400325 cfg.StrOpt('http_image',
326 default='http://download.cirros-cloud.net/0.3.1/'
327 'cirros-0.3.1-x86_64-uec.tar.gz',
DennyZhang8912d012013-09-25 18:08:34 -0500328 help='http accessible image')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500329]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400330
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000331image_feature_group = cfg.OptGroup(name='image-feature-enabled',
332 title='Enabled image service features')
333
334ImageFeaturesGroup = [
335 cfg.BoolOpt('api_v2',
336 default=True,
337 help="Is the v2 image API enabled"),
338 cfg.BoolOpt('api_v1',
339 default=True,
340 help="Is the v1 image API enabled"),
341]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400342
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500343network_group = cfg.OptGroup(name='network',
344 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600345
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500346NetworkGroup = [
347 cfg.StrOpt('catalog_type',
348 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400349 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900350 cfg.StrOpt('region',
351 default='',
352 help="The network region name to use. If empty, the value "
353 "of identity.region is used instead. If no such region "
354 "is found in the service catalog, the first found one is "
355 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000356 cfg.StrOpt('endpoint_type',
357 default='publicURL',
358 choices=['public', 'admin', 'internal',
359 'publicURL', 'adminURL', 'internalURL'],
360 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500361 cfg.StrOpt('tenant_network_cidr',
362 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500363 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500364 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200365 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500366 help="The mask bits for tenant ipv4 subnets"),
367 cfg.StrOpt('tenant_network_v6_cidr',
368 default="2003::/64",
369 help="The cidr block to allocate tenant ipv6 subnets from"),
370 cfg.IntOpt('tenant_network_v6_mask_bits',
371 default=96,
372 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500373 cfg.BoolOpt('tenant_networks_reachable',
374 default=False,
375 help="Whether tenant network connectivity should be "
376 "evaluated directly"),
377 cfg.StrOpt('public_network_id',
378 default="",
379 help="Id of the public network that provides external "
380 "connectivity"),
381 cfg.StrOpt('public_router_id',
382 default="",
383 help="Id of the public router that provides external "
384 "connectivity"),
izikpensod9a01a62014-02-17 20:02:32 +0200385 cfg.IntOpt('build_timeout',
386 default=300,
387 help="Timeout in seconds to wait for network operation to "
388 "complete."),
389 cfg.IntOpt('build_interval',
390 default=10,
391 help="Time in seconds between network operation status "
392 "checks."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500393]
Jay Pipes3f981df2012-03-27 18:59:44 -0400394
Matthew Treinishe3d26142013-11-26 19:14:58 +0000395network_feature_group = cfg.OptGroup(name='network-feature-enabled',
396 title='Enabled network service features')
397
398NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000399 cfg.BoolOpt('ipv6',
400 default=True,
401 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000402 cfg.ListOpt('api_extensions',
403 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800404 help='A list of enabled network extensions with a special '
405 'entry all which indicates every extension is enabled'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000406]
407
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500408queuing_group = cfg.OptGroup(name='queuing',
409 title='Queuing Service')
410
411QueuingGroup = [
412 cfg.StrOpt('catalog_type',
413 default='queuing',
414 help='Catalog type of the Queuing service.'),
415]
416
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500417volume_group = cfg.OptGroup(name='volume',
418 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600419
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500420VolumeGroup = [
421 cfg.IntOpt('build_interval',
422 default=10,
423 help='Time in seconds between volume availability checks.'),
424 cfg.IntOpt('build_timeout',
425 default=300,
426 help='Timeout in seconds to wait for a volume to become'
427 'available.'),
428 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000429 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500430 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900431 cfg.StrOpt('region',
432 default='',
433 help="The volume region name to use. If empty, the value "
434 "of identity.region is used instead. If no such region "
435 "is found in the service catalog, the first found one is "
436 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000437 cfg.StrOpt('endpoint_type',
438 default='publicURL',
439 choices=['public', 'admin', 'internal',
440 'publicURL', 'adminURL', 'internalURL'],
441 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100442 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200443 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100444 help="Name of the backend1 (must be declared in cinder.conf)"),
445 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200446 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100447 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700448 cfg.StrOpt('storage_protocol',
449 default='iSCSI',
450 help='Backend protocol to target when creating volume types'),
451 cfg.StrOpt('vendor_name',
452 default='Open Source',
453 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700454 cfg.StrOpt('disk_format',
455 default='raw',
456 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800457 cfg.IntOpt('volume_size',
458 default=1,
459 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500460]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800461
Matthew Treinishd5c96022013-10-17 21:51:23 +0000462volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
463 title='Enabled Cinder Features')
464
465VolumeFeaturesGroup = [
466 cfg.BoolOpt('multi_backend',
467 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000468 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100469 cfg.BoolOpt('backup',
470 default=True,
471 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100472 cfg.BoolOpt('snapshot',
473 default=True,
474 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000475 cfg.ListOpt('api_extensions',
476 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800477 help='A list of enabled volume extensions with a special '
478 'entry all which indicates every extension is enabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800479 cfg.BoolOpt('api_v1',
480 default=True,
481 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800482 cfg.BoolOpt('api_v2',
483 default=True,
484 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000485]
486
Daryl Walleck587385b2012-03-03 13:00:26 -0600487
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500488object_storage_group = cfg.OptGroup(name='object-storage',
489 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200490
DennyZhang1e71b612013-09-26 12:35:40 -0500491ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500492 cfg.StrOpt('catalog_type',
493 default='object-store',
494 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900495 cfg.StrOpt('region',
496 default='',
497 help="The object-storage region name to use. If empty, the "
498 "value of identity.region is used instead. If no such "
499 "region is found in the service catalog, the first found "
500 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000501 cfg.StrOpt('endpoint_type',
502 default='publicURL',
503 choices=['public', 'admin', 'internal',
504 'publicURL', 'adminURL', 'internalURL'],
505 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000506 cfg.IntOpt('container_sync_timeout',
nayna-patelb4989b32013-01-09 06:25:13 +0000507 default=120,
Fabien Boucher2178d312013-12-31 15:38:57 +0100508 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000509 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000510 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000511 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100512 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000513 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400514 cfg.StrOpt('operator_role',
515 default='Member',
516 help="Role to add to users created for swift tests to "
517 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500518 cfg.StrOpt('reseller_admin_role',
519 default='ResellerAdmin',
520 help="User role that has reseller admin"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500521]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200522
Matthew Treinishd5c96022013-10-17 21:51:23 +0000523object_storage_feature_group = cfg.OptGroup(
524 name='object-storage-feature-enabled',
525 title='Enabled object-storage features')
526
527ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000528 cfg.ListOpt('discoverable_apis',
529 default=['all'],
530 help="A list of the enabled optional discoverable apis. "
531 "A single entry, all, indicates that all of these "
532 "features are expected to be enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000533]
534
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800535database_group = cfg.OptGroup(name='database',
536 title='Database Service Options')
537
538DatabaseGroup = [
539 cfg.StrOpt('catalog_type',
540 default='database',
541 help="Catalog type of the Database service."),
542 cfg.StrOpt('db_flavor_ref',
543 default="1",
544 help="Valid primary flavor to use in database tests."),
545]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200546
Steve Bakerc60e4e32013-05-06 15:22:41 +1200547orchestration_group = cfg.OptGroup(name='orchestration',
548 title='Orchestration Service Options')
549
550OrchestrationGroup = [
551 cfg.StrOpt('catalog_type',
552 default='orchestration',
553 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900554 cfg.StrOpt('region',
555 default='',
556 help="The orchestration region name to use. If empty, the "
557 "value of identity.region is used instead. If no such "
558 "region is found in the service catalog, the first found "
559 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000560 cfg.StrOpt('endpoint_type',
561 default='publicURL',
562 choices=['public', 'admin', 'internal',
563 'publicURL', 'adminURL', 'internalURL'],
564 help="The endpoint type to use for the orchestration service."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200565 cfg.BoolOpt('allow_tenant_isolation',
566 default=False,
567 help="Allows test cases to create/destroy tenants and "
568 "users. This option enables isolated test cases and "
569 "better parallel execution, but also requires that "
570 "OpenStack Identity API admin credentials are known."),
571 cfg.IntOpt('build_interval',
572 default=1,
573 help="Time in seconds between build status checks."),
574 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400575 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200576 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200577 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200578 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200579 help="Instance type for tests. Needs to be big enough for a "
580 "full OS plus the test workload"),
581 cfg.StrOpt('image_ref',
582 default=None,
583 help="Name of heat-cfntools enabled image to use when "
584 "launching test instances."),
585 cfg.StrOpt('keypair_name',
586 default=None,
587 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700588 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100589 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700590 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000591 cfg.IntOpt('max_resources_per_stack',
592 default=1000,
593 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200594]
595
596
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100597telemetry_group = cfg.OptGroup(name='telemetry',
598 title='Telemetry Service Options')
599
600TelemetryGroup = [
601 cfg.StrOpt('catalog_type',
602 default='metering',
603 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000604 cfg.StrOpt('endpoint_type',
605 default='publicURL',
606 choices=['public', 'admin', 'internal',
607 'publicURL', 'adminURL', 'internalURL'],
608 help="The endpoint type to use for the telemetry service."),
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100609]
610
611
Julie Pichond1017642013-07-24 16:37:23 +0100612dashboard_group = cfg.OptGroup(name="dashboard",
613 title="Dashboard options")
614
615DashboardGroup = [
616 cfg.StrOpt('dashboard_url',
617 default='http://localhost/',
618 help="Where the dashboard can be found"),
619 cfg.StrOpt('login_url',
620 default='http://localhost/auth/login/',
621 help="Login page for the dashboard"),
622]
623
624
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400625data_processing_group = cfg.OptGroup(name="data_processing",
626 title="Data Processing options")
627
628DataProcessingGroup = [
629 cfg.StrOpt('catalog_type',
630 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000631 help="Catalog type of the data processing service."),
632 cfg.StrOpt('endpoint_type',
633 default='publicURL',
634 choices=['public', 'admin', 'internal',
635 'publicURL', 'adminURL', 'internalURL'],
636 help="The endpoint type to use for the data processing "
637 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400638]
639
640
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500641boto_group = cfg.OptGroup(name='boto',
642 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500643BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500644 cfg.StrOpt('ec2_url',
645 default="http://localhost:8773/services/Cloud",
646 help="EC2 URL"),
647 cfg.StrOpt('s3_url',
648 default="http://localhost:8080",
649 help="S3 URL"),
650 cfg.StrOpt('aws_secret',
651 default=None,
652 help="AWS Secret Key",
653 secret=True),
654 cfg.StrOpt('aws_access',
655 default=None,
656 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100657 cfg.StrOpt('aws_zone',
658 default="nova",
659 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500660 cfg.StrOpt('s3_materials_path',
661 default="/opt/stack/devstack/files/images/"
662 "s3-materials/cirros-0.3.0",
663 help="S3 Materials Path"),
664 cfg.StrOpt('ari_manifest',
665 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
666 help="ARI Ramdisk Image manifest"),
667 cfg.StrOpt('ami_manifest',
668 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
669 help="AMI Machine Image manifest"),
670 cfg.StrOpt('aki_manifest',
671 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
672 help="AKI Kernel Image manifest"),
673 cfg.StrOpt('instance_type',
674 default="m1.tiny",
675 help="Instance type"),
676 cfg.IntOpt('http_socket_timeout',
677 default=3,
678 help="boto Http socket timeout"),
679 cfg.IntOpt('num_retries',
680 default=1,
681 help="boto num_retries on error"),
682 cfg.IntOpt('build_timeout',
683 default=60,
684 help="Status Change Timeout"),
685 cfg.IntOpt('build_interval',
686 default=1,
687 help="Status Change Test Interval"),
688]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100689
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500690stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
691
692StressGroup = [
693 cfg.StrOpt('nova_logdir',
694 default=None,
695 help='Directory containing log files on the compute nodes'),
696 cfg.IntOpt('max_instances',
697 default=16,
698 help='Maximum number of instances to create during test.'),
699 cfg.StrOpt('controller',
700 default=None,
David Kranzb9d97502013-05-01 15:55:04 -0400701 help='Controller host.'),
702 # new stress options
703 cfg.StrOpt('target_controller',
704 default=None,
705 help='Controller host.'),
706 cfg.StrOpt('target_ssh_user',
707 default=None,
708 help='ssh user.'),
709 cfg.StrOpt('target_private_key_path',
710 default=None,
711 help='Path to private key.'),
712 cfg.StrOpt('target_logfiles',
713 default=None,
714 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000715 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400716 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200717 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000718 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200719 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100720 help='The number of threads created while stress test.'),
721 cfg.BoolOpt('leave_dirty_stack',
722 default=False,
723 help='Prevent the cleaning (tearDownClass()) between'
724 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100725 ' during this run.'),
726 cfg.BoolOpt('full_clean_stack',
727 default=False,
728 help='Allows a full cleaning process after a stress test.'
729 ' Caution : this cleanup will remove every objects of'
730 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500731]
732
733
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900734scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
735
736ScenarioGroup = [
737 cfg.StrOpt('img_dir',
738 default='/opt/stack/new/devstack/files/images/'
739 'cirros-0.3.1-x86_64-uec',
740 help='Directory containing image files'),
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900741 cfg.StrOpt('qcow2_img_file',
742 default='cirros-0.3.1-x86_64-disk.img',
743 help='QCOW2 image file name'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900744 cfg.StrOpt('ami_img_file',
745 default='cirros-0.3.1-x86_64-blank.img',
746 help='AMI image file name'),
747 cfg.StrOpt('ari_img_file',
748 default='cirros-0.3.1-x86_64-initrd',
749 help='ARI image file name'),
750 cfg.StrOpt('aki_img_file',
751 default='cirros-0.3.1-x86_64-vmlinuz',
752 help='AKI image file name'),
753 cfg.StrOpt('ssh_user',
754 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000755 help='ssh username for the image file'),
756 cfg.IntOpt(
757 'large_ops_number',
758 default=0,
759 help="specifies how many resources to request at once. Used "
760 "for large operations testing.")
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900761]
762
763
Matthew Treinish4c412922013-07-16 15:27:42 -0400764service_available_group = cfg.OptGroup(name="service_available",
765 title="Available OpenStack Services")
766
767ServiceAvailableGroup = [
768 cfg.BoolOpt('cinder',
769 default=True,
770 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400771 cfg.BoolOpt('neutron',
772 default=False,
773 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400774 cfg.BoolOpt('glance',
775 default=True,
776 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400777 cfg.BoolOpt('swift',
778 default=True,
779 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400780 cfg.BoolOpt('nova',
781 default=True,
782 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400783 cfg.BoolOpt('heat',
784 default=False,
785 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200786 cfg.BoolOpt('ceilometer',
787 default=True,
788 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100789 cfg.BoolOpt('horizon',
790 default=True,
791 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400792 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400793 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +0400794 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300795 cfg.BoolOpt('ironic',
796 default=False,
797 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800798 cfg.BoolOpt('trove',
799 default=False,
800 help="Whether or not Trove is expected to be available"),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500801 cfg.BoolOpt('marconi',
802 default=False,
803 help="Whether or not Marconi is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -0400804]
805
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200806debug_group = cfg.OptGroup(name="debug",
807 title="Debug System")
808
809DebugGroup = [
810 cfg.BoolOpt('enable',
811 default=True,
812 help="Enable diagnostic commands"),
Sean Daguec522c092014-03-24 10:43:22 -0400813 cfg.StrOpt('trace_requests',
814 default='',
815 help="""A regex to determine which requests should be traced.
816
817This is a regex to match the caller for rest client requests to be able to
818selectively trace calls out of specific classes and methods. It largely
819exists for test development, and is not expected to be used in a real deploy
820of tempest. This will be matched against the discovered ClassName:method
821in the test environment.
822
823Expected values for this field are:
824
825 * ClassName:test_method_name - traces one test_method
826 * ClassName:setUp(Class) - traces specific setup functions
827 * ClassName:tearDown(Class) - traces specific teardown functions
828 * ClassName:_run_cleanups - traces the cleanup functions
829
830If nothing is specified, this feature is not enabled. To trace everything
831specify .* as the regex.
832""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200833]
834
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000835input_scenario_group = cfg.OptGroup(name="input-scenario",
836 title="Filters and values for"
837 " input scenarios")
838
839InputScenarioGroup = [
840 cfg.StrOpt('image_regex',
841 default='^cirros-0.3.1-x86_64-uec$',
842 help="Matching images become parameters for scenario tests"),
843 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +0000844 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000845 help="Matching flavors become parameters for scenario tests"),
846 cfg.StrOpt('non_ssh_image_regex',
847 default='^.*[Ww]in.*$',
848 help="SSH verification in tests is skipped"
849 "for matching images"),
850 cfg.StrOpt('ssh_user_regex',
851 default="[[\"^.*[Cc]irros.*$\", \"root\"]]",
852 help="List of user mapped to regex "
853 "to matching image names."),
854]
855
Attila Fazekasaeeeefd2013-08-06 17:01:56 +0200856
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300857baremetal_group = cfg.OptGroup(name='baremetal',
858 title='Baremetal provisioning service options')
859
860BaremetalGroup = [
861 cfg.StrOpt('catalog_type',
862 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -0700863 help="Catalog type of the baremetal provisioning service"),
864 cfg.BoolOpt('driver_enabled',
865 default=False,
866 help="Whether the Ironic nova-compute driver is enabled"),
JordanPfc62c902014-02-26 14:47:28 +0000867 cfg.StrOpt('endpoint_type',
868 default='publicURL',
869 choices=['public', 'admin', 'internal',
870 'publicURL', 'adminURL', 'internalURL'],
871 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -0700872 "service"),
873 cfg.IntOpt('active_timeout',
874 default=300,
875 help="Timeout for Ironic node to completely provision"),
876 cfg.IntOpt('association_timeout',
877 default=10,
878 help="Timeout for association of Nova instance and Ironic "
879 "node"),
880 cfg.IntOpt('power_timeout',
881 default=20,
882 help="Timeout for Ironic power transitions."),
883 cfg.IntOpt('unprovision_timeout',
884 default=20,
885 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300886]
887
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000888cli_group = cfg.OptGroup(name='cli', title="cli Configuration Options")
889
890CLIGroup = [
891 cfg.BoolOpt('enabled',
892 default=True,
893 help="enable cli tests"),
894 cfg.StrOpt('cli_dir',
895 default='/usr/local/bin',
896 help="directory where python client binaries are located"),
Sean Dague44b24682014-02-20 19:08:24 -0500897 cfg.BoolOpt('has_manage',
898 default=True,
899 help=("Whether the tempest run location has access to the "
900 "*-manage commands. In a pure blackbox environment "
901 "it will not.")),
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000902 cfg.IntOpt('timeout',
903 default=15,
904 help="Number of seconds to wait on a CLI timeout"),
905]
906
Marc Koderer6ee82dc2014-02-17 10:26:29 +0100907negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
908
909NegativeGroup = [
910 cfg.StrOpt('test_generator',
911 default='tempest.common.' +
912 'generator.negative_generator.NegativeTestGenerator',
913 help="Test generator class for all negative tests"),
914]
915
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300916
Matthew Treinish43b296a2014-02-28 15:23:00 -0500917def register_opts():
918 register_opt_group(cfg.CONF, compute_group, ComputeGroup)
919 register_opt_group(cfg.CONF, compute_features_group,
920 ComputeFeaturesGroup)
921 register_opt_group(cfg.CONF, identity_group, IdentityGroup)
922 register_opt_group(cfg.CONF, identity_feature_group,
923 IdentityFeatureGroup)
924 register_opt_group(cfg.CONF, image_group, ImageGroup)
925 register_opt_group(cfg.CONF, image_feature_group, ImageFeaturesGroup)
926 register_opt_group(cfg.CONF, network_group, NetworkGroup)
927 register_opt_group(cfg.CONF, network_feature_group,
928 NetworkFeaturesGroup)
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500929 register_opt_group(cfg.CONF, queuing_group, QueuingGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500930 register_opt_group(cfg.CONF, volume_group, VolumeGroup)
931 register_opt_group(cfg.CONF, volume_feature_group,
932 VolumeFeaturesGroup)
933 register_opt_group(cfg.CONF, object_storage_group, ObjectStoreGroup)
934 register_opt_group(cfg.CONF, object_storage_feature_group,
935 ObjectStoreFeaturesGroup)
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800936 register_opt_group(cfg.CONF, database_group, DatabaseGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500937 register_opt_group(cfg.CONF, orchestration_group, OrchestrationGroup)
938 register_opt_group(cfg.CONF, telemetry_group, TelemetryGroup)
939 register_opt_group(cfg.CONF, dashboard_group, DashboardGroup)
940 register_opt_group(cfg.CONF, data_processing_group,
941 DataProcessingGroup)
942 register_opt_group(cfg.CONF, boto_group, BotoGroup)
943 register_opt_group(cfg.CONF, compute_admin_group, ComputeAdminGroup)
944 register_opt_group(cfg.CONF, stress_group, StressGroup)
945 register_opt_group(cfg.CONF, scenario_group, ScenarioGroup)
946 register_opt_group(cfg.CONF, service_available_group,
947 ServiceAvailableGroup)
948 register_opt_group(cfg.CONF, debug_group, DebugGroup)
949 register_opt_group(cfg.CONF, baremetal_group, BaremetalGroup)
950 register_opt_group(cfg.CONF, input_scenario_group, InputScenarioGroup)
951 register_opt_group(cfg.CONF, cli_group, CLIGroup)
Marc Koderer6ee82dc2014-02-17 10:26:29 +0100952 register_opt_group(cfg.CONF, negative_group, NegativeGroup)
Matthew Treinish43b296a2014-02-28 15:23:00 -0500953
954
Sean Dague3b9b1f32013-12-20 17:04:54 -0500955# this should never be called outside of this class
956class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -0500957 """Provides OpenStack configuration information."""
958
Brian Waldon738cd632011-12-12 18:45:09 -0500959 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +0800960 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -0500961 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -0500962
Brian Waldon738cd632011-12-12 18:45:09 -0500963 DEFAULT_CONFIG_FILE = "tempest.conf"
964
Matthew Treinish43b296a2014-02-28 15:23:00 -0500965 def _set_attrs(self):
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500966 self.compute = cfg.CONF.compute
Matthew Treinishd5c96022013-10-17 21:51:23 +0000967 self.compute_feature_enabled = cfg.CONF['compute-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500968 self.identity = cfg.CONF.identity
Matthew Treinishd5021a72014-01-09 18:42:51 +0000969 self.identity_feature_enabled = cfg.CONF['identity-feature-enabled']
Matt Riedemannd3efe902014-02-10 06:46:38 -0800970 self.image = cfg.CONF.image
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000971 self.image_feature_enabled = cfg.CONF['image-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500972 self.network = cfg.CONF.network
Matthew Treinishe3d26142013-11-26 19:14:58 +0000973 self.network_feature_enabled = cfg.CONF['network-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500974 self.volume = cfg.CONF.volume
Matthew Treinishd5c96022013-10-17 21:51:23 +0000975 self.volume_feature_enabled = cfg.CONF['volume-feature-enabled']
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500976 self.object_storage = cfg.CONF['object-storage']
Matthew Treinishd5c96022013-10-17 21:51:23 +0000977 self.object_storage_feature_enabled = cfg.CONF[
978 'object-storage-feature-enabled']
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800979 self.database = cfg.CONF.database
Steve Bakerc60e4e32013-05-06 15:22:41 +1200980 self.orchestration = cfg.CONF.orchestration
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500981 self.queuing = cfg.CONF.queuing
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100982 self.telemetry = cfg.CONF.telemetry
Julie Pichond1017642013-07-24 16:37:23 +0100983 self.dashboard = cfg.CONF.dashboard
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400984 self.data_processing = cfg.CONF.data_processing
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500985 self.boto = cfg.CONF.boto
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100986 self.compute_admin = cfg.CONF['compute-admin']
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500987 self.stress = cfg.CONF.stress
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900988 self.scenario = cfg.CONF.scenario
Matthew Treinish4c412922013-07-16 15:27:42 -0400989 self.service_available = cfg.CONF.service_available
Attila Fazekas5fae7a32013-09-25 16:52:44 +0200990 self.debug = cfg.CONF.debug
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +0300991 self.baremetal = cfg.CONF.baremetal
Andrea Frittolif5da28b2013-12-06 07:08:07 +0000992 self.input_scenario = cfg.CONF['input-scenario']
Matthew Treinishe2b56b52014-01-29 19:25:50 +0000993 self.cli = cfg.CONF.cli
Marc Koderer6ee82dc2014-02-17 10:26:29 +0100994 self.negative = cfg.CONF.negative
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100995 if not self.compute_admin.username:
996 self.compute_admin.username = self.identity.admin_username
997 self.compute_admin.password = self.identity.admin_password
998 self.compute_admin.tenant_name = self.identity.admin_tenant_name
Sean Dague86bd8422013-12-20 09:56:44 -0500999
Matthew Treinish43b296a2014-02-28 15:23:00 -05001000 def __init__(self, parse_conf=True):
1001 """Initialize a configuration from a conf directory and conf file."""
1002 super(TempestConfigPrivate, self).__init__()
1003 config_files = []
1004 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1005
1006 # Environment variables override defaults...
1007 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1008 self.DEFAULT_CONFIG_DIR)
1009 conf_file = os.environ.get('TEMPEST_CONFIG', self.DEFAULT_CONFIG_FILE)
1010
1011 path = os.path.join(conf_dir, conf_file)
1012
1013 if not os.path.isfile(path):
1014 path = failsafe_path
1015
1016 # only parse the config file if we expect one to exist. This is needed
1017 # to remove an issue with the config file up to date checker.
1018 if parse_conf:
1019 config_files.append(path)
1020
1021 cfg.CONF([], project='tempest', default_config_files=config_files)
1022 logging.setup('tempest')
1023 LOG = logging.getLogger('tempest')
1024 LOG.info("Using tempest config file %s" % path)
1025 register_opts()
1026 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001027 if parse_conf:
1028 cfg.CONF.log_opt_values(LOG, std_logging.DEBUG)
1029
Sean Dague86bd8422013-12-20 09:56:44 -05001030
1031class TempestConfigProxy(object):
1032 _config = None
1033
1034 def __getattr__(self, attr):
1035 if not self._config:
Sean Dague3b9b1f32013-12-20 17:04:54 -05001036 self._config = TempestConfigPrivate()
Sean Dague86bd8422013-12-20 09:56:44 -05001037
1038 return getattr(self._config, attr)
1039
1040
1041CONF = TempestConfigProxy()