blob: a9f1e01b6b92ceb8e1a2c03da38d15ba8f01c2a7 [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
Doug Hellmann583ce2c2015-03-11 14:55:46 +000021from oslo_config import cfg
Matthew Treinish90aedd12013-02-25 17:56:49 -050022
Doug Hellmann583ce2c2015-03-11 14:55:46 +000023from oslo_log import log as logging
Jay Pipes7f757632011-12-02 15:53:32 -050024
Daryl Walleck1465d612011-11-02 02:22:15 -050025
Maru Newbyf440c292015-03-31 15:58:47 +000026# TODO(marun) Replace use of oslo_config's global ConfigOpts
27# (cfg.CONF) instance with a local instance (cfg.ConfigOpts()) once
28# the cli tests move to the clients. The cli tests rely on oslo
29# incubator modules that use the global cfg.CONF.
30_CONF = cfg.CONF
31
32
DennyZhang88a2dd82013-10-07 12:55:35 -050033def register_opt_group(conf, opt_group, options):
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +010034 if opt_group:
35 conf.register_group(opt_group)
DennyZhang88a2dd82013-10-07 12:55:35 -050036 for opt in options:
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +010037 conf.register_opt(opt, group=getattr(opt_group, 'name', None))
DennyZhang88a2dd82013-10-07 12:55:35 -050038
39
Matthew Treinishc791ac42014-07-16 09:15:23 -040040auth_group = cfg.OptGroup(name='auth',
41 title="Options for authentication and credentials")
42
43
44AuthGroup = [
45 cfg.StrOpt('test_accounts_file',
Matthew Treinishc791ac42014-07-16 09:15:23 -040046 help="Path to the yaml file that contains the list of "
Matthew Treinishfc7cd8f2015-03-30 11:51:55 -040047 "credentials to use for running tests. If used when "
48 "running in parallel you have to make sure sufficient "
49 "credentials are provided in the accounts file. For "
50 "example if no tests with roles are being run it requires "
51 "at least `2 * CONC` distinct accounts configured in "
52 " the `test_accounts_file`, with CONC == the "
53 "number of concurrent test processes."),
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010054 cfg.BoolOpt('allow_tenant_isolation',
Attila Fazekas5dda1582015-02-18 17:16:02 +010055 default=True,
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010056 help="Allows test cases to create/destroy tenants and "
57 "users. This option requires that OpenStack Identity "
58 "API admin credentials are known. If false, isolated "
59 "test cases and parallel execution, can still be "
60 "achieved configuring a list of test accounts",
61 deprecated_opts=[cfg.DeprecatedOpt('allow_tenant_isolation',
62 group='compute'),
63 cfg.DeprecatedOpt('allow_tenant_isolation',
64 group='orchestration')]),
Matthew Treinish167b2be2015-01-15 17:20:27 -050065 cfg.ListOpt('tempest_roles',
66 help="Roles to assign to all users created by tempest",
Andrea Frittolic3280152015-02-26 12:42:34 +000067 default=[]),
68 cfg.StrOpt('tenant_isolation_domain_name',
69 default=None,
70 help="Only applicable when identity.auth_version is v3."
71 "Domain within which isolated credentials are provisioned."
72 "The default \"None\" means that the domain from the"
Matthew Treinish2219d382015-04-24 10:33:04 -040073 "admin user is used instead."),
74 cfg.BoolOpt('create_isolated_networks',
75 default=True,
76 help="If allow_tenant_isolation is set to True and Neutron is "
77 "enabled Tempest will try to create a useable network, "
78 "subnet, and router when needed for each tenant it "
79 "creates. However in some neutron configurations, like "
80 "with VLAN provider networks, this doesn't work. So if "
81 "set to False the isolated networks will not be created"),
Matthew Treinishc791ac42014-07-16 09:15:23 -040082]
83
Matthew Treinish39e48ef2012-12-21 13:36:15 -050084identity_group = cfg.OptGroup(name='identity',
85 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050086
Matthew Treinish39e48ef2012-12-21 13:36:15 -050087IdentityGroup = [
88 cfg.StrOpt('catalog_type',
89 default='identity',
90 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050091 cfg.BoolOpt('disable_ssl_certificate_validation',
92 default=False,
93 help="Set to True if using self-signed SSL certificates."),
Rob Crittendena7db6692014-11-23 18:44:38 -050094 cfg.StrOpt('ca_certificates_file',
95 default=None,
96 help='Specify a CA bundle file to use in verifying a '
97 'TLS (https) server certificate.'),
Jay Pipes7c88eb22013-01-16 21:32:43 -050098 cfg.StrOpt('uri',
Brant Knudsonc7ca3342013-03-28 21:08:50 -050099 help="Full URI of the OpenStack Identity API (Keystone), v2"),
100 cfg.StrOpt('uri_v3',
101 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +0000102 cfg.StrOpt('auth_version',
103 default='v2',
104 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +0000105 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500106 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100107 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +0900108 help="The identity region name to use. Also used as the other "
109 "services' region name unless they are set explicitly. "
110 "If no such region is found in the service catalog, the "
111 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000112 cfg.StrOpt('endpoint_type',
113 default='publicURL',
114 choices=['public', 'admin', 'internal',
115 'publicURL', 'adminURL', 'internalURL'],
116 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100117 cfg.StrOpt('username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100118 help="Username to use for Nova API requests."),
119 cfg.StrOpt('tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100120 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +1000121 cfg.StrOpt('admin_role',
122 default='admin',
123 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100124 cfg.StrOpt('password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100125 help="API key to use when authenticating.",
126 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100127 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100128 help="Domain name for authentication (Keystone V3)."
129 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100130 cfg.StrOpt('alt_username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100131 help="Username of alternate user to use for Nova API "
132 "requests."),
133 cfg.StrOpt('alt_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100134 help="Alternate user's Tenant name to use for Nova API "
135 "requests."),
136 cfg.StrOpt('alt_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100137 help="API key to use when authenticating as alternate user.",
138 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100139 cfg.StrOpt('alt_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100140 help="Alternate domain name for authentication (Keystone V3)."
141 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100142 cfg.StrOpt('admin_username',
Dirk Mueller14bd5622014-01-14 19:33:05 +0100143 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100144 "Keystone API requests."),
145 cfg.StrOpt('admin_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100146 help="Administrative Tenant name to use for Keystone API "
147 "requests."),
148 cfg.StrOpt('admin_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100149 help="API key to use when authenticating as admin.",
150 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100151 cfg.StrOpt('admin_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100152 help="Admin domain name for authentication (Keystone V3)."
153 "The same domain applies to user and project"),
Martin Pavlasek4c3f2ab2014-04-15 17:15:15 +0200154 cfg.StrOpt('default_domain_id',
155 default='default',
156 help="ID of the default domain"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500157]
Jay Pipes3f981df2012-03-27 18:59:44 -0400158
Matthew Treinishd5021a72014-01-09 18:42:51 +0000159identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
160 title='Enabled Identity Features')
161
162IdentityFeatureGroup = [
163 cfg.BoolOpt('trust',
164 default=True,
165 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000166 'impersonation enabled'),
167 cfg.BoolOpt('api_v2',
168 default=True,
169 help='Is the v2 identity API enabled'),
170 cfg.BoolOpt('api_v3',
171 default=True,
172 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000173]
174
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500175compute_group = cfg.OptGroup(name='compute',
176 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800177
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500178ComputeGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500179 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400180 help="Valid primary image reference to be used in tests. "
181 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500182 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400183 help="Valid secondary image reference to be used in tests. "
184 "This is a required option, but if only one image is "
185 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900186 cfg.StrOpt('flavor_ref',
187 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500188 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900189 cfg.StrOpt('flavor_ref_alt',
190 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500191 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000192 cfg.StrOpt('image_ssh_user',
193 default="root",
194 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700195 cfg.StrOpt('image_ssh_password',
196 default="password",
197 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000198 cfg.StrOpt('image_alt_ssh_user',
199 default="root",
200 help="User name used to authenticate to an instance using "
201 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500202 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400203 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500204 help="Time in seconds between build status checks."),
205 cfg.IntOpt('build_timeout',
206 default=300,
Hugh Saunders5b139ad2014-12-15 09:08:41 +0000207 help="Timeout in seconds to wait for an instance to build. "
208 "Other services that do not define build_timeout will "
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200209 "inherit this value."),
David Kranz968f1b32015-06-18 16:58:18 -0400210 cfg.StrOpt('ssh_shell_prologue',
211 default="set -eu -o pipefail; PATH=$$PATH:/sbin;",
212 help="Shell fragments to use before executing a command "
213 "when sshing to a guest."),
Attila Fazekas423834d2014-03-14 17:33:13 +0100214 cfg.StrOpt('ssh_auth_method',
215 default='keypair',
216 help="Auth method used for authenticate to the instance. "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000217 "Valid choices are: keypair, configured, adminpass "
218 "and disabled. "
219 "Keypair: start the servers with a ssh keypair. "
220 "Configured: use the configured user and password. "
221 "Adminpass: use the injected adminPass. "
222 "Disabled: avoid using ssh when it is an option."),
Attila Fazekas423834d2014-03-14 17:33:13 +0100223 cfg.StrOpt('ssh_connect_method',
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000224 default='floating',
Attila Fazekas423834d2014-03-14 17:33:13 +0100225 help="How to connect to the instance? "
226 "fixed: using the first ip belongs the fixed network "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000227 "floating: creating and using a floating ip."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500228 cfg.StrOpt('ssh_user',
229 default='root',
230 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700231 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000232 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700233 help="Timeout in seconds to wait for ping to "
234 "succeed."),
Richard Wintersf87059b2015-02-17 11:46:54 -0500235 cfg.IntOpt('ping_size',
236 default=56,
237 help="The packet size for ping packets originating "
238 "from remote linux hosts"),
239 cfg.IntOpt('ping_count',
240 default=1,
241 help="The number of ping packets originating from remote "
242 "linux hosts"),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200243 cfg.IntOpt('ready_wait',
244 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500245 help="Additional wait time for clean state, when there is "
246 "no OS-EXT-STS extension available"),
Attila Fazekasb0661652013-05-08 13:01:36 +0200247 cfg.StrOpt('fixed_network_name',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800248 help="Name of the fixed network that is visible to all test "
Matthew Treinish03feae02015-03-27 10:25:45 -0400249 "tenants. If multiple networks are available for a tenant"
250 " this is the network which will be used for creating "
251 "servers if tempest does not create a network or a "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000252 "network is not specified elsewhere. It may be used for "
253 "ssh validation only if floating IPs are disabled."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500254 cfg.StrOpt('network_for_ssh',
255 default='public',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800256 help="Network used for SSH connections. Ignored if "
Matthew Treinishe5cca002015-05-11 15:36:50 -0400257 "use_floatingip_for_ssh=true or run_validation=false."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900258 cfg.BoolOpt('use_floatingip_for_ssh',
259 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700260 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500261 cfg.StrOpt('catalog_type',
262 default='compute',
263 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900264 cfg.StrOpt('region',
265 default='',
266 help="The compute region name to use. If empty, the value "
267 "of identity.region is used instead. If no such region "
268 "is found in the service catalog, the first found one is "
269 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000270 cfg.StrOpt('endpoint_type',
271 default='publicURL',
272 choices=['public', 'admin', 'internal',
273 'publicURL', 'adminURL', 'internalURL'],
274 help="The endpoint type to use for the compute service."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700275 cfg.StrOpt('volume_device_name',
276 default='vdb',
277 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900278 "an instance"),
279 cfg.IntOpt('shelved_offload_time',
280 default=0,
281 help='Time in seconds before a shelved instance is eligible '
282 'for removing from a host. -1 never offload, 0 offload '
283 'when shelved. This time should be the same as the time '
284 'of nova.conf, and some tests will run for as long as the '
Ghanshyam06a5b4a2014-04-11 17:32:45 +0900285 'time.'),
286 cfg.StrOpt('floating_ip_range',
287 default='10.0.0.0/29',
288 help='Unallocated floating IP range, which will be used to '
Chris Hoge8f1401b2014-11-19 14:00:37 -0800289 'test the floating IP bulk feature for CRUD operation. '
290 'This block must not overlap an existing floating IP '
291 'pool.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500292]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800293
Matthew Treinishd5c96022013-10-17 21:51:23 +0000294compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
295 title="Enabled Compute Service Features")
296
297ComputeFeaturesGroup = [
298 cfg.BoolOpt('disk_config',
299 default=True,
300 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000301 cfg.ListOpt('api_extensions',
302 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800303 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900304 'entry all which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300305 'Each extension should be specified with alias name. '
306 'Empty list indicates all extensions are disabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000307 cfg.BoolOpt('change_password',
308 default=False,
309 help="Does the test environment support changing the admin "
310 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700311 cfg.BoolOpt('console_output',
312 default=True,
313 help="Does the test environment support obtaining instance "
314 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000315 cfg.BoolOpt('resize',
316 default=False,
317 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400318 cfg.BoolOpt('pause',
319 default=True,
320 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400321 cfg.BoolOpt('shelve',
322 default=True,
323 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400324 cfg.BoolOpt('suspend',
325 default=True,
326 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000327 cfg.BoolOpt('live_migration',
Joe Gordon31a139a2014-11-17 16:39:04 -0800328 default=True,
Matthew Treinishd5c96022013-10-17 21:51:23 +0000329 help="Does the test environment support live migration "
330 "available?"),
331 cfg.BoolOpt('block_migration_for_live_migration',
332 default=False,
333 help="Does the test environment use block devices for live "
334 "migration"),
335 cfg.BoolOpt('block_migrate_cinder_iscsi',
336 default=False,
337 help="Does the test environment block migration support "
Joe Gordon0a5788f2015-03-17 11:29:38 -0700338 "cinder iSCSI volumes. Note, libvirt doesn't support this, "
339 "see https://bugs.launchpad.net/nova/+bug/1398999"),
Matt Riedemannbb9f7042015-03-03 08:53:11 -0800340 # TODO(gilliard): Remove live_migrate_paused_instances at juno-eol.
341 cfg.BoolOpt('live_migrate_paused_instances',
342 default=False,
343 help="Does the test system allow live-migration of paused "
344 "instances? Note, this is more than just the ANDing of "
345 "paused and live_migrate, but all 3 should be set to True "
346 "to run those tests"),
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900347 cfg.BoolOpt('vnc_console',
348 default=False,
349 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900350 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
351 cfg.BoolOpt('spice_console',
352 default=False,
353 help='Enable Spice console. This configuration value should '
354 'be same as [nova.spice]->enabled in nova.conf'),
355 cfg.BoolOpt('rdp_console',
356 default=False,
357 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700358 'be same as [nova.rdp]->enabled in nova.conf'),
359 cfg.BoolOpt('rescue',
360 default=True,
361 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900362 'mode?'),
363 cfg.BoolOpt('enable_instance_password',
364 default=True,
365 help='Enables returning of the instance password by the '
366 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400367 'or rescue.'),
368 cfg.BoolOpt('interface_attach',
369 default=True,
370 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700371 'interface attachment?'),
372 cfg.BoolOpt('snapshot',
373 default=True,
374 help='Does the test environment support creating snapshot '
Matthew Treinishdfd7ac02015-02-09 17:47:31 -0500375 'images of running instances?'),
376 cfg.BoolOpt('ec2_api',
377 default=True,
Matt Riedemann17940732015-03-13 14:18:19 +0000378 help='Does the test environment have the ec2 api running?'),
379 # TODO(mriedem): Remove preserve_ports once juno-eol happens.
380 cfg.BoolOpt('preserve_ports',
381 default=False,
382 help='Does Nova preserve preexisting ports from Neutron '
383 'when deleting an instance? This should be set to True '
Matt Riedemann79b3b492015-06-20 14:20:44 -0700384 'if testing Kilo+ Nova.'),
385 cfg.BoolOpt('attach_encrypted_volume',
386 default=True,
387 help='Does the test environment support attaching an '
388 'encrypted volume to a running server instance? This may '
389 'depend on the combination of compute_driver in nova and '
390 'the volume_driver(s) in cinder.'),
Matt Riedemann778b5f92015-03-11 12:44:28 -0700391 # TODO(mriedem): Remove allow_duplicate_networks once kilo-eol happens
392 # since the option was removed from nova in Liberty and is the default
393 # behavior starting in Liberty.
394 cfg.BoolOpt('allow_duplicate_networks',
395 default=False,
396 help='Does the test environment support creating instances '
397 'with multiple ports on the same network? This is only '
398 'valid when using Neutron.'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000399]
400
401
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500402image_group = cfg.OptGroup(name='image',
403 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400404
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500405ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500406 cfg.StrOpt('catalog_type',
407 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400408 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900409 cfg.StrOpt('region',
410 default='',
411 help="The image region name to use. If empty, the value "
412 "of identity.region is used instead. If no such region "
413 "is found in the service catalog, the first found one is "
414 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000415 cfg.StrOpt('endpoint_type',
416 default='publicURL',
417 choices=['public', 'admin', 'internal',
418 'publicURL', 'adminURL', 'internalURL'],
419 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400420 cfg.StrOpt('http_image',
421 default='http://download.cirros-cloud.net/0.3.1/'
422 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200423 help='http accessible image'),
424 cfg.IntOpt('build_timeout',
425 default=300,
426 help="Timeout in seconds to wait for an image to "
427 "become available."),
428 cfg.IntOpt('build_interval',
429 default=1,
430 help="Time in seconds between image operation status "
431 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500432]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400433
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000434image_feature_group = cfg.OptGroup(name='image-feature-enabled',
435 title='Enabled image service features')
436
437ImageFeaturesGroup = [
438 cfg.BoolOpt('api_v2',
439 default=True,
440 help="Is the v2 image API enabled"),
441 cfg.BoolOpt('api_v1',
442 default=True,
443 help="Is the v1 image API enabled"),
bkopilov81aaae72015-05-15 23:46:25 +0300444 cfg.BoolOpt('deactivate_image',
445 default=False,
446 help="Is the deactivate-image feature enabled."
447 " The feature has been integrated since Kilo."),
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000448]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400449
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500450network_group = cfg.OptGroup(name='network',
451 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600452
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500453NetworkGroup = [
454 cfg.StrOpt('catalog_type',
455 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400456 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900457 cfg.StrOpt('region',
458 default='',
459 help="The network region name to use. If empty, the value "
460 "of identity.region is used instead. If no such region "
461 "is found in the service catalog, the first found one is "
462 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000463 cfg.StrOpt('endpoint_type',
464 default='publicURL',
465 choices=['public', 'admin', 'internal',
466 'publicURL', 'adminURL', 'internalURL'],
467 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500468 cfg.StrOpt('tenant_network_cidr',
469 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500470 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500471 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200472 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500473 help="The mask bits for tenant ipv4 subnets"),
474 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400475 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500476 help="The cidr block to allocate tenant ipv6 subnets from"),
477 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400478 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500479 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500480 cfg.BoolOpt('tenant_networks_reachable',
481 default=False,
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000482 help="Whether tenant networks can be reached directly from "
483 "the test client. This must be set to True when the "
484 "'fixed' ssh_connect_method is selected."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500485 cfg.StrOpt('public_network_id',
486 default="",
487 help="Id of the public network that provides external "
488 "connectivity"),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000489 cfg.StrOpt('floating_network_name',
490 help="Default floating network name. Used to allocate floating "
491 "IPs when neutron is enabled."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500492 cfg.StrOpt('public_router_id',
493 default="",
494 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200495 "connectivity. This should only be used when Neutron's "
496 "'allow_overlapping_ips' is set to 'False' in "
497 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200498 cfg.IntOpt('build_timeout',
499 default=300,
500 help="Timeout in seconds to wait for network operation to "
501 "complete."),
502 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400503 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200504 help="Time in seconds between network operation status "
505 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200506 cfg.ListOpt('dns_servers',
507 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200508 help="List of dns servers which should be used"
Itzik Brown2ca01cd2014-12-08 12:58:20 +0200509 " for subnet creation"),
510 cfg.StrOpt('port_vnic_type',
511 choices=[None, 'normal', 'direct', 'macvtap'],
512 help="vnic_type to use when Launching instances"
513 " with pre-configured ports."
514 " Supported ports are:"
515 " ['normal','direct','macvtap']"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500516]
Jay Pipes3f981df2012-03-27 18:59:44 -0400517
Matthew Treinishe3d26142013-11-26 19:14:58 +0000518network_feature_group = cfg.OptGroup(name='network-feature-enabled',
519 title='Enabled network service features')
520
521NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000522 cfg.BoolOpt('ipv6',
523 default=True,
524 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000525 cfg.ListOpt('api_extensions',
526 default=['all'],
Alexander Gubanov36e1f9b2015-06-12 18:02:10 +0300527 help="A list of enabled network extensions with a special "
528 "entry all which indicates every extension is enabled. "
529 "Empty list indicates all extensions are disabled. "
530 "To get the list of extensions run: 'neutron ext-list'"),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400531 cfg.BoolOpt('ipv6_subnet_attributes',
532 default=False,
533 help="Allow the execution of IPv6 subnet tests that use "
534 "the extended IPv6 attributes ipv6_ra_mode "
535 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400536 ),
Itzik Brownbeb30d32015-03-29 09:42:54 +0300537 cfg.BoolOpt('port_admin_state_change',
538 default=True,
539 help="Does the test environment support changing"
540 " port admin state"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000541]
542
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300543messaging_group = cfg.OptGroup(name='messaging',
544 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500545
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300546MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500547 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300548 default='messaging',
549 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000550 cfg.IntOpt('max_queues_per_page',
551 default=20,
552 help='The maximum number of queue records per page when '
553 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400554 cfg.IntOpt('max_queue_metadata',
555 default=65536,
556 help='The maximum metadata size for a queue'),
557 cfg.IntOpt('max_messages_per_page',
558 default=20,
559 help='The maximum number of queue message per page when '
560 'listing (or) posting messages'),
561 cfg.IntOpt('max_message_size',
562 default=262144,
563 help='The maximum size of a message body'),
564 cfg.IntOpt('max_messages_per_claim',
565 default=20,
566 help='The maximum number of messages per claim'),
567 cfg.IntOpt('max_message_ttl',
568 default=1209600,
569 help='The maximum ttl for a message'),
570 cfg.IntOpt('max_claim_ttl',
571 default=43200,
572 help='The maximum ttl for a claim'),
573 cfg.IntOpt('max_claim_grace',
574 default=43200,
575 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500576]
577
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000578validation_group = cfg.OptGroup(name='validation',
579 title='SSH Validation options')
580
581ValidationGroup = [
Matthew Treinishe5cca002015-05-11 15:36:50 -0400582 cfg.BoolOpt('run_validation',
583 default=False,
584 help='Enable ssh on created servers and creation of additional'
585 ' validation resources to enable remote access',
586 deprecated_opts=[cfg.DeprecatedOpt('run_ssh',
587 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000588 cfg.StrOpt('connect_method',
589 default='floating',
590 choices=['fixed', 'floating'],
591 help='Default IP type used for validation: '
592 '-fixed: uses the first IP belonging to the fixed network '
593 '-floating: creates and uses a floating IP'),
594 cfg.StrOpt('auth_method',
595 default='keypair',
596 choices=['keypair'],
597 help='Default authentication method to the instance. '
598 'Only ssh via keypair is supported for now. '
599 'Additional methods will be handled in a separate spec.'),
600 cfg.IntOpt('ip_version_for_ssh',
601 default=4,
nithya-ganesan67da2872015-02-08 23:13:48 +0000602 help='Default IP version for ssh connections.',
603 deprecated_opts=[cfg.DeprecatedOpt('ip_version_for_ssh',
604 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000605 cfg.IntOpt('ping_timeout',
606 default=120,
607 help='Timeout in seconds to wait for ping to succeed.'),
608 cfg.IntOpt('connect_timeout',
609 default=60,
610 help='Timeout in seconds to wait for the TCP connection to be '
nithya-ganesan67da2872015-02-08 23:13:48 +0000611 'successful.',
612 deprecated_opts=[cfg.DeprecatedOpt('ssh_channel_timeout',
613 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000614 cfg.IntOpt('ssh_timeout',
615 default=300,
nithya-ganesan67da2872015-02-08 23:13:48 +0000616 help='Timeout in seconds to wait for the ssh banner.',
617 deprecated_opts=[cfg.DeprecatedOpt('ssh_timeout',
618 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000619]
620
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500621volume_group = cfg.OptGroup(name='volume',
622 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600623
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500624VolumeGroup = [
625 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400626 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500627 help='Time in seconds between volume availability checks.'),
628 cfg.IntOpt('build_timeout',
629 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400630 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500631 'available.'),
632 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000633 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500634 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900635 cfg.StrOpt('region',
636 default='',
637 help="The volume region name to use. If empty, the value "
638 "of identity.region is used instead. If no such region "
639 "is found in the service catalog, the first found one is "
640 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000641 cfg.StrOpt('endpoint_type',
642 default='publicURL',
643 choices=['public', 'admin', 'internal',
644 'publicURL', 'adminURL', 'internalURL'],
645 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100646 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200647 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100648 help="Name of the backend1 (must be declared in cinder.conf)"),
649 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200650 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100651 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700652 cfg.StrOpt('storage_protocol',
653 default='iSCSI',
654 help='Backend protocol to target when creating volume types'),
655 cfg.StrOpt('vendor_name',
656 default='Open Source',
657 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700658 cfg.StrOpt('disk_format',
659 default='raw',
660 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800661 cfg.IntOpt('volume_size',
662 default=1,
663 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500664]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800665
Matthew Treinishd5c96022013-10-17 21:51:23 +0000666volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
667 title='Enabled Cinder Features')
668
669VolumeFeaturesGroup = [
670 cfg.BoolOpt('multi_backend',
671 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000672 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100673 cfg.BoolOpt('backup',
674 default=True,
675 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100676 cfg.BoolOpt('snapshot',
677 default=True,
678 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000679 cfg.ListOpt('api_extensions',
680 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800681 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300682 'entry all which indicates every extension is enabled. '
683 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800684 cfg.BoolOpt('api_v1',
685 default=True,
686 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800687 cfg.BoolOpt('api_v2',
688 default=True,
689 help="Is the v2 volume API enabled"),
bkopilov8a657ae2015-05-11 11:45:23 +0300690 cfg.BoolOpt('bootable',
691 default=False,
692 help='Update bootable status of a volume '
693 'Not implemented on icehouse ')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000694]
695
Daryl Walleck587385b2012-03-03 13:00:26 -0600696
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500697object_storage_group = cfg.OptGroup(name='object-storage',
698 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200699
DennyZhang1e71b612013-09-26 12:35:40 -0500700ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500701 cfg.StrOpt('catalog_type',
702 default='object-store',
703 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900704 cfg.StrOpt('region',
705 default='',
706 help="The object-storage region name to use. If empty, the "
707 "value of identity.region is used instead. If no such "
708 "region is found in the service catalog, the first found "
709 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000710 cfg.StrOpt('endpoint_type',
711 default='publicURL',
712 choices=['public', 'admin', 'internal',
713 'publicURL', 'adminURL', 'internalURL'],
714 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000715 cfg.IntOpt('container_sync_timeout',
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900716 default=600,
Fabien Boucher2178d312013-12-31 15:38:57 +0100717 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000718 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000719 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000720 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100721 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000722 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400723 cfg.StrOpt('operator_role',
724 default='Member',
725 help="Role to add to users created for swift tests to "
726 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500727 cfg.StrOpt('reseller_admin_role',
728 default='ResellerAdmin',
729 help="User role that has reseller admin"),
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900730 cfg.StrOpt('realm_name',
731 default='realm1',
732 help="Name of sync realm. A sync realm is a set of clusters "
733 "that have agreed to allow container syncing with each "
734 "other. Set the same realm name as Swift's "
735 "container-sync-realms.conf"),
736 cfg.StrOpt('cluster_name',
737 default='name1',
738 help="One name of cluster which is set in the realm whose name "
739 "is set in 'realm_name' item in this file. Set the "
740 "same cluster name as Swift's container-sync-realms.conf"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500741]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200742
Matthew Treinishd5c96022013-10-17 21:51:23 +0000743object_storage_feature_group = cfg.OptGroup(
744 name='object-storage-feature-enabled',
745 title='Enabled object-storage features')
746
747ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000748 cfg.ListOpt('discoverable_apis',
749 default=['all'],
750 help="A list of the enabled optional discoverable apis. "
751 "A single entry, all, indicates that all of these "
752 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900753 cfg.BoolOpt('container_sync',
754 default=True,
755 help="Execute (old style) container-sync tests"),
756 cfg.BoolOpt('object_versioning',
757 default=True,
758 help="Execute object-versioning tests"),
759 cfg.BoolOpt('discoverability',
760 default=True,
761 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000762]
763
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800764database_group = cfg.OptGroup(name='database',
765 title='Database Service Options')
766
767DatabaseGroup = [
768 cfg.StrOpt('catalog_type',
769 default='database',
770 help="Catalog type of the Database service."),
771 cfg.StrOpt('db_flavor_ref',
772 default="1",
773 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400774 cfg.StrOpt('db_current_version',
775 default="v1.0",
776 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800777]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200778
Steve Bakerc60e4e32013-05-06 15:22:41 +1200779orchestration_group = cfg.OptGroup(name='orchestration',
780 title='Orchestration Service Options')
781
782OrchestrationGroup = [
783 cfg.StrOpt('catalog_type',
784 default='orchestration',
785 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900786 cfg.StrOpt('region',
787 default='',
788 help="The orchestration region name to use. If empty, the "
789 "value of identity.region is used instead. If no such "
790 "region is found in the service catalog, the first found "
791 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000792 cfg.StrOpt('endpoint_type',
793 default='publicURL',
794 choices=['public', 'admin', 'internal',
795 'publicURL', 'adminURL', 'internalURL'],
796 help="The endpoint type to use for the orchestration service."),
Matthew Treinishdb9721d2015-03-18 14:21:28 -0400797 cfg.StrOpt('stack_owner_role', default='heat_stack_owner',
798 help='Role required for users to be able to manage stacks'),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200799 cfg.IntOpt('build_interval',
800 default=1,
801 help="Time in seconds between build status checks."),
802 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400803 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200804 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200805 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200806 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200807 help="Instance type for tests. Needs to be big enough for a "
808 "full OS plus the test workload"),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200809 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200810 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700811 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100812 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700813 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000814 cfg.IntOpt('max_resources_per_stack',
815 default=1000,
816 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200817]
818
819
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100820telemetry_group = cfg.OptGroup(name='telemetry',
821 title='Telemetry Service Options')
822
823TelemetryGroup = [
824 cfg.StrOpt('catalog_type',
825 default='metering',
826 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000827 cfg.StrOpt('endpoint_type',
828 default='publicURL',
829 choices=['public', 'admin', 'internal',
830 'publicURL', 'adminURL', 'internalURL'],
831 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400832 cfg.BoolOpt('too_slow_to_test',
833 default=True,
834 help="This variable is used as flag to enable "
835 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100836]
837
838
Julie Pichond1017642013-07-24 16:37:23 +0100839dashboard_group = cfg.OptGroup(name="dashboard",
840 title="Dashboard options")
841
842DashboardGroup = [
843 cfg.StrOpt('dashboard_url',
844 default='http://localhost/',
845 help="Where the dashboard can be found"),
846 cfg.StrOpt('login_url',
847 default='http://localhost/auth/login/',
848 help="Login page for the dashboard"),
849]
850
851
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400852data_processing_group = cfg.OptGroup(name="data_processing",
853 title="Data Processing options")
854
855DataProcessingGroup = [
856 cfg.StrOpt('catalog_type',
857 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000858 help="Catalog type of the data processing service."),
859 cfg.StrOpt('endpoint_type',
860 default='publicURL',
861 choices=['public', 'admin', 'internal',
862 'publicURL', 'adminURL', 'internalURL'],
863 help="The endpoint type to use for the data processing "
864 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400865]
866
867
Luigi Toscano14d172d2015-01-23 16:37:47 +0100868data_processing_feature_group = cfg.OptGroup(
869 name="data_processing-feature-enabled",
870 title="Enabled Data Processing features")
871
872DataProcessingFeaturesGroup = [
873 cfg.ListOpt('plugins',
874 default=["vanilla", "hdp"],
875 help="List of enabled data processing plugins")
876]
877
878
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500879boto_group = cfg.OptGroup(name='boto',
880 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500881BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500882 cfg.StrOpt('ec2_url',
883 default="http://localhost:8773/services/Cloud",
884 help="EC2 URL"),
885 cfg.StrOpt('s3_url',
886 default="http://localhost:8080",
887 help="S3 URL"),
888 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500889 help="AWS Secret Key",
890 secret=True),
891 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500892 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100893 cfg.StrOpt('aws_zone',
894 default="nova",
895 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500896 cfg.StrOpt('s3_materials_path',
897 default="/opt/stack/devstack/files/images/"
898 "s3-materials/cirros-0.3.0",
899 help="S3 Materials Path"),
900 cfg.StrOpt('ari_manifest',
901 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
902 help="ARI Ramdisk Image manifest"),
903 cfg.StrOpt('ami_manifest',
904 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
905 help="AMI Machine Image manifest"),
906 cfg.StrOpt('aki_manifest',
907 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
908 help="AKI Kernel Image manifest"),
909 cfg.StrOpt('instance_type',
910 default="m1.tiny",
911 help="Instance type"),
912 cfg.IntOpt('http_socket_timeout',
913 default=3,
914 help="boto Http socket timeout"),
915 cfg.IntOpt('num_retries',
916 default=1,
917 help="boto num_retries on error"),
918 cfg.IntOpt('build_timeout',
919 default=60,
920 help="Status Change Timeout"),
921 cfg.IntOpt('build_interval',
922 default=1,
923 help="Status Change Test Interval"),
924]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100925
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500926stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
927
928StressGroup = [
929 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500930 help='Directory containing log files on the compute nodes'),
931 cfg.IntOpt('max_instances',
932 default=16,
933 help='Maximum number of instances to create during test.'),
934 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400935 help='Controller host.'),
936 # new stress options
937 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400938 help='Controller host.'),
939 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400940 help='ssh user.'),
941 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400942 help='Path to private key.'),
943 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400944 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000945 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400946 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200947 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000948 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200949 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100950 help='The number of threads created while stress test.'),
951 cfg.BoolOpt('leave_dirty_stack',
952 default=False,
953 help='Prevent the cleaning (tearDownClass()) between'
954 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100955 ' during this run.'),
956 cfg.BoolOpt('full_clean_stack',
957 default=False,
958 help='Allows a full cleaning process after a stress test.'
959 ' Caution : this cleanup will remove every objects of'
960 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500961]
962
963
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900964scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
965
966ScenarioGroup = [
967 cfg.StrOpt('img_dir',
968 default='/opt/stack/new/devstack/files/images/'
969 'cirros-0.3.1-x86_64-uec',
970 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300971 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900972 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300973 help='Image file name'),
974 cfg.StrOpt('img_disk_format',
975 default='qcow2',
976 help='Image disk format'),
977 cfg.StrOpt('img_container_format',
978 default='bare',
979 help='Image container format'),
Evgeny Antyshev7ba0d5f2015-04-28 13:18:07 +0000980 cfg.DictOpt('img_properties', help='Glance image properties. '
981 'Use for custom images which require them'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900982 cfg.StrOpt('ami_img_file',
983 default='cirros-0.3.1-x86_64-blank.img',
984 help='AMI image file name'),
985 cfg.StrOpt('ari_img_file',
986 default='cirros-0.3.1-x86_64-initrd',
987 help='ARI image file name'),
988 cfg.StrOpt('aki_img_file',
989 default='cirros-0.3.1-x86_64-vmlinuz',
990 help='AKI image file name'),
991 cfg.StrOpt('ssh_user',
992 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000993 help='ssh username for the image file'),
994 cfg.IntOpt(
995 'large_ops_number',
996 default=0,
997 help="specifies how many resources to request at once. Used "
Yair Fried413bf2d2014-11-19 17:07:11 +0200998 "for large operations testing."),
999 # TODO(yfried): add support for dhcpcd
1000 cfg.StrOpt('dhcp_client',
1001 default='udhcpc',
1002 choices=["udhcpc", "dhclient"],
1003 help='DHCP client used by images to renew DCHP lease. '
1004 'If left empty, update operation will be skipped. '
1005 'Supported clients: "udhcpc", "dhclient"')
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +09001006]
1007
1008
Matthew Treinish4c412922013-07-16 15:27:42 -04001009service_available_group = cfg.OptGroup(name="service_available",
1010 title="Available OpenStack Services")
1011
1012ServiceAvailableGroup = [
1013 cfg.BoolOpt('cinder',
1014 default=True,
1015 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -04001016 cfg.BoolOpt('neutron',
1017 default=False,
1018 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -04001019 cfg.BoolOpt('glance',
1020 default=True,
1021 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -04001022 cfg.BoolOpt('swift',
1023 default=True,
1024 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -04001025 cfg.BoolOpt('nova',
1026 default=True,
1027 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -04001028 cfg.BoolOpt('heat',
1029 default=False,
1030 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +02001031 cfg.BoolOpt('ceilometer',
1032 default=True,
1033 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +01001034 cfg.BoolOpt('horizon',
1035 default=True,
1036 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001037 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001038 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001039 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001040 cfg.BoolOpt('ironic',
1041 default=False,
1042 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001043 cfg.BoolOpt('trove',
1044 default=False,
1045 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -04001046 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -05001047 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -04001048 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -04001049]
1050
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001051debug_group = cfg.OptGroup(name="debug",
1052 title="Debug System")
1053
1054DebugGroup = [
Sean Daguec522c092014-03-24 10:43:22 -04001055 cfg.StrOpt('trace_requests',
1056 default='',
1057 help="""A regex to determine which requests should be traced.
1058
1059This is a regex to match the caller for rest client requests to be able to
1060selectively trace calls out of specific classes and methods. It largely
1061exists for test development, and is not expected to be used in a real deploy
1062of tempest. This will be matched against the discovered ClassName:method
1063in the test environment.
1064
1065Expected values for this field are:
1066
1067 * ClassName:test_method_name - traces one test_method
1068 * ClassName:setUp(Class) - traces specific setup functions
1069 * ClassName:tearDown(Class) - traces specific teardown functions
1070 * ClassName:_run_cleanups - traces the cleanup functions
1071
1072If nothing is specified, this feature is not enabled. To trace everything
1073specify .* as the regex.
1074""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001075]
1076
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001077input_scenario_group = cfg.OptGroup(name="input-scenario",
1078 title="Filters and values for"
1079 " input scenarios")
1080
1081InputScenarioGroup = [
1082 cfg.StrOpt('image_regex',
1083 default='^cirros-0.3.1-x86_64-uec$',
1084 help="Matching images become parameters for scenario tests"),
1085 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +00001086 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001087 help="Matching flavors become parameters for scenario tests"),
1088 cfg.StrOpt('non_ssh_image_regex',
1089 default='^.*[Ww]in.*$',
1090 help="SSH verification in tests is skipped"
1091 "for matching images"),
1092 cfg.StrOpt('ssh_user_regex',
Marc Koderer07f5a522015-03-27 15:02:41 +01001093 default="[[\"^.*[Cc]irros.*$\", \"cirros\"]]",
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001094 help="List of user mapped to regex "
1095 "to matching image names."),
1096]
1097
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001098
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001099baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -08001100 title='Baremetal provisioning service options',
1101 help='When enabling baremetal tests, Nova '
1102 'must be configured to use the Ironic '
1103 'driver. The following paremeters for the '
1104 '[compute] section must be disabled: '
1105 'console_output, interface_attach, '
1106 'live_migration, pause, rescue, resize '
1107 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001108
1109BaremetalGroup = [
1110 cfg.StrOpt('catalog_type',
1111 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -07001112 help="Catalog type of the baremetal provisioning service"),
1113 cfg.BoolOpt('driver_enabled',
1114 default=False,
1115 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +09001116 cfg.StrOpt('driver',
1117 default='fake',
1118 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +00001119 cfg.StrOpt('endpoint_type',
1120 default='publicURL',
1121 choices=['public', 'admin', 'internal',
1122 'publicURL', 'adminURL', 'internalURL'],
1123 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001124 "service"),
1125 cfg.IntOpt('active_timeout',
1126 default=300,
1127 help="Timeout for Ironic node to completely provision"),
1128 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001129 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001130 help="Timeout for association of Nova instance and Ironic "
1131 "node"),
1132 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001133 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001134 help="Timeout for Ironic power transitions."),
1135 cfg.IntOpt('unprovision_timeout',
Devananda van der Veend1e52a92015-04-13 12:58:49 -07001136 default=300,
1137 help="Timeout for unprovisioning an Ironic node. "
1138 "Takes longer since Kilo as Ironic performs an extra "
1139 "step in Node cleaning.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001140]
1141
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001142negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1143
1144NegativeGroup = [
1145 cfg.StrOpt('test_generator',
1146 default='tempest.common.' +
1147 'generator.negative_generator.NegativeTestGenerator',
1148 help="Test generator class for all negative tests"),
1149]
1150
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001151DefaultGroup = [
1152 cfg.StrOpt('resources_prefix',
1153 default='tempest',
1154 help="Prefix to be added when generating the name for "
1155 "test resources. It can be used to discover all "
1156 "resources associated with a specific test run when "
1157 "running tempest on a real-life cloud"),
1158]
1159
Jon Grimm270bd7f2014-08-05 18:11:29 +00001160_opts = [
1161 (auth_group, AuthGroup),
1162 (compute_group, ComputeGroup),
1163 (compute_features_group, ComputeFeaturesGroup),
1164 (identity_group, IdentityGroup),
1165 (identity_feature_group, IdentityFeatureGroup),
1166 (image_group, ImageGroup),
1167 (image_feature_group, ImageFeaturesGroup),
1168 (network_group, NetworkGroup),
1169 (network_feature_group, NetworkFeaturesGroup),
1170 (messaging_group, MessagingGroup),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001171 (validation_group, ValidationGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001172 (volume_group, VolumeGroup),
1173 (volume_feature_group, VolumeFeaturesGroup),
1174 (object_storage_group, ObjectStoreGroup),
1175 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1176 (database_group, DatabaseGroup),
1177 (orchestration_group, OrchestrationGroup),
1178 (telemetry_group, TelemetryGroup),
1179 (dashboard_group, DashboardGroup),
1180 (data_processing_group, DataProcessingGroup),
Luigi Toscano14d172d2015-01-23 16:37:47 +01001181 (data_processing_feature_group, DataProcessingFeaturesGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001182 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001183 (stress_group, StressGroup),
1184 (scenario_group, ScenarioGroup),
1185 (service_available_group, ServiceAvailableGroup),
1186 (debug_group, DebugGroup),
1187 (baremetal_group, BaremetalGroup),
1188 (input_scenario_group, InputScenarioGroup),
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001189 (negative_group, NegativeGroup),
1190 (None, DefaultGroup)
Jon Grimm270bd7f2014-08-05 18:11:29 +00001191]
1192
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001193
Matthew Treinish43b296a2014-02-28 15:23:00 -05001194def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001195 for g, o in _opts:
Maru Newbyf440c292015-03-31 15:58:47 +00001196 register_opt_group(_CONF, g, o)
Jon Grimm270bd7f2014-08-05 18:11:29 +00001197
1198
1199def list_opts():
1200 """Return a list of oslo.config options available.
1201
1202 The purpose of this is to allow tools like the Oslo sample config file
1203 generator to discover the options exposed to users.
1204 """
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001205 return [(getattr(g, 'name', None), o) for g, o in _opts]
Matthew Treinish43b296a2014-02-28 15:23:00 -05001206
1207
Sean Dague3b9b1f32013-12-20 17:04:54 -05001208# this should never be called outside of this class
1209class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001210 """Provides OpenStack configuration information."""
1211
Brian Waldon738cd632011-12-12 18:45:09 -05001212 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001213 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001214 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001215
Brian Waldon738cd632011-12-12 18:45:09 -05001216 DEFAULT_CONFIG_FILE = "tempest.conf"
1217
Andrea Frittolia96ee212014-08-15 18:34:20 +01001218 def __getattr__(self, attr):
1219 # Handles config options from the default group
Maru Newbyf440c292015-03-31 15:58:47 +00001220 return getattr(_CONF, attr)
Andrea Frittolia96ee212014-08-15 18:34:20 +01001221
Matthew Treinish43b296a2014-02-28 15:23:00 -05001222 def _set_attrs(self):
Maru Newbyf440c292015-03-31 15:58:47 +00001223 self.auth = _CONF.auth
1224 self.compute = _CONF.compute
1225 self.compute_feature_enabled = _CONF['compute-feature-enabled']
1226 self.identity = _CONF.identity
1227 self.identity_feature_enabled = _CONF['identity-feature-enabled']
1228 self.image = _CONF.image
1229 self.image_feature_enabled = _CONF['image-feature-enabled']
1230 self.network = _CONF.network
1231 self.network_feature_enabled = _CONF['network-feature-enabled']
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001232 self.validation = _CONF.validation
Maru Newbyf440c292015-03-31 15:58:47 +00001233 self.volume = _CONF.volume
1234 self.volume_feature_enabled = _CONF['volume-feature-enabled']
1235 self.object_storage = _CONF['object-storage']
1236 self.object_storage_feature_enabled = _CONF[
Matthew Treinishd5c96022013-10-17 21:51:23 +00001237 'object-storage-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001238 self.database = _CONF.database
1239 self.orchestration = _CONF.orchestration
1240 self.messaging = _CONF.messaging
1241 self.telemetry = _CONF.telemetry
1242 self.dashboard = _CONF.dashboard
1243 self.data_processing = _CONF.data_processing
1244 self.data_processing_feature_enabled = _CONF[
Luigi Toscano14d172d2015-01-23 16:37:47 +01001245 'data_processing-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001246 self.boto = _CONF.boto
1247 self.stress = _CONF.stress
1248 self.scenario = _CONF.scenario
1249 self.service_available = _CONF.service_available
1250 self.debug = _CONF.debug
1251 self.baremetal = _CONF.baremetal
1252 self.input_scenario = _CONF['input-scenario']
Maru Newbyf440c292015-03-31 15:58:47 +00001253 self.negative = _CONF.negative
1254 _CONF.set_default('domain_name', self.identity.admin_domain_name,
1255 group='identity')
1256 _CONF.set_default('alt_domain_name', self.identity.admin_domain_name,
1257 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001258
Joe Gordon28a84ae2014-07-17 15:38:28 +00001259 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001260 """Initialize a configuration from a conf directory and conf file."""
1261 super(TempestConfigPrivate, self).__init__()
1262 config_files = []
1263 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1264
Joe Gordon28a84ae2014-07-17 15:38:28 +00001265 if config_path:
1266 path = config_path
1267 else:
1268 # Environment variables override defaults...
1269 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1270 self.DEFAULT_CONFIG_DIR)
1271 conf_file = os.environ.get('TEMPEST_CONFIG',
1272 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001273
Joe Gordon28a84ae2014-07-17 15:38:28 +00001274 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001275
1276 if not os.path.isfile(path):
1277 path = failsafe_path
1278
1279 # only parse the config file if we expect one to exist. This is needed
1280 # to remove an issue with the config file up to date checker.
1281 if parse_conf:
1282 config_files.append(path)
Maru Newbyf440c292015-03-31 15:58:47 +00001283 logging.register_options(_CONF)
Matthew Treinish5440a402014-10-02 14:36:16 -04001284 if os.path.isfile(path):
Maru Newbyf440c292015-03-31 15:58:47 +00001285 _CONF([], project='tempest', default_config_files=config_files)
Matthew Treinish5440a402014-10-02 14:36:16 -04001286 else:
Maru Newbyf440c292015-03-31 15:58:47 +00001287 _CONF([], project='tempest')
1288 logging.setup(_CONF, 'tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001289 LOG = logging.getLogger('tempest')
1290 LOG.info("Using tempest config file %s" % path)
1291 register_opts()
1292 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001293 if parse_conf:
Maru Newbyf440c292015-03-31 15:58:47 +00001294 _CONF.log_opt_values(LOG, std_logging.DEBUG)
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001295
Sean Dague86bd8422013-12-20 09:56:44 -05001296
1297class TempestConfigProxy(object):
1298 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001299 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001300
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001301 _extra_log_defaults = [
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001302 ('paramiko.transport', std_logging.INFO),
1303 ('requests.packages.urllib3.connectionpool', std_logging.WARN),
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001304 ]
1305
1306 def _fix_log_levels(self):
1307 """Tweak the oslo log defaults."""
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001308 for name, level in self._extra_log_defaults:
1309 std_logging.getLogger(name).setLevel(level)
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001310
Sean Dague86bd8422013-12-20 09:56:44 -05001311 def __getattr__(self, attr):
1312 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001313 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001314 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001315
1316 return getattr(self._config, attr)
1317
Joe Gordon28a84ae2014-07-17 15:38:28 +00001318 def set_config_path(self, path):
1319 self._path = path
1320
Sean Dague86bd8422013-12-20 09:56:44 -05001321
1322CONF = TempestConfigProxy()