blob: 7382088d4506b5de41e8f4ab97bce38a2c12556d [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.'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000391]
392
393
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500394image_group = cfg.OptGroup(name='image',
395 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400396
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500397ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500398 cfg.StrOpt('catalog_type',
399 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400400 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900401 cfg.StrOpt('region',
402 default='',
403 help="The image region name to use. If empty, the value "
404 "of identity.region is used instead. If no such region "
405 "is found in the service catalog, the first found one is "
406 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000407 cfg.StrOpt('endpoint_type',
408 default='publicURL',
409 choices=['public', 'admin', 'internal',
410 'publicURL', 'adminURL', 'internalURL'],
411 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400412 cfg.StrOpt('http_image',
413 default='http://download.cirros-cloud.net/0.3.1/'
414 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200415 help='http accessible image'),
416 cfg.IntOpt('build_timeout',
417 default=300,
418 help="Timeout in seconds to wait for an image to "
419 "become available."),
420 cfg.IntOpt('build_interval',
421 default=1,
422 help="Time in seconds between image operation status "
423 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500424]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400425
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000426image_feature_group = cfg.OptGroup(name='image-feature-enabled',
427 title='Enabled image service features')
428
429ImageFeaturesGroup = [
430 cfg.BoolOpt('api_v2',
431 default=True,
432 help="Is the v2 image API enabled"),
433 cfg.BoolOpt('api_v1',
434 default=True,
435 help="Is the v1 image API enabled"),
bkopilov81aaae72015-05-15 23:46:25 +0300436 cfg.BoolOpt('deactivate_image',
437 default=False,
438 help="Is the deactivate-image feature enabled."
439 " The feature has been integrated since Kilo."),
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000440]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400441
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500442network_group = cfg.OptGroup(name='network',
443 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600444
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500445NetworkGroup = [
446 cfg.StrOpt('catalog_type',
447 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400448 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900449 cfg.StrOpt('region',
450 default='',
451 help="The network region name to use. If empty, the value "
452 "of identity.region is used instead. If no such region "
453 "is found in the service catalog, the first found one is "
454 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000455 cfg.StrOpt('endpoint_type',
456 default='publicURL',
457 choices=['public', 'admin', 'internal',
458 'publicURL', 'adminURL', 'internalURL'],
459 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500460 cfg.StrOpt('tenant_network_cidr',
461 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500462 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500463 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200464 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500465 help="The mask bits for tenant ipv4 subnets"),
466 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400467 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500468 help="The cidr block to allocate tenant ipv6 subnets from"),
469 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400470 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500471 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500472 cfg.BoolOpt('tenant_networks_reachable',
473 default=False,
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000474 help="Whether tenant networks can be reached directly from "
475 "the test client. This must be set to True when the "
476 "'fixed' ssh_connect_method is selected."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500477 cfg.StrOpt('public_network_id',
478 default="",
479 help="Id of the public network that provides external "
480 "connectivity"),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000481 cfg.StrOpt('floating_network_name',
482 help="Default floating network name. Used to allocate floating "
483 "IPs when neutron is enabled."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500484 cfg.StrOpt('public_router_id',
485 default="",
486 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200487 "connectivity. This should only be used when Neutron's "
488 "'allow_overlapping_ips' is set to 'False' in "
489 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200490 cfg.IntOpt('build_timeout',
491 default=300,
492 help="Timeout in seconds to wait for network operation to "
493 "complete."),
494 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400495 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200496 help="Time in seconds between network operation status "
497 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200498 cfg.ListOpt('dns_servers',
499 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200500 help="List of dns servers which should be used"
Itzik Brown2ca01cd2014-12-08 12:58:20 +0200501 " for subnet creation"),
502 cfg.StrOpt('port_vnic_type',
503 choices=[None, 'normal', 'direct', 'macvtap'],
504 help="vnic_type to use when Launching instances"
505 " with pre-configured ports."
506 " Supported ports are:"
507 " ['normal','direct','macvtap']"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500508]
Jay Pipes3f981df2012-03-27 18:59:44 -0400509
Matthew Treinishe3d26142013-11-26 19:14:58 +0000510network_feature_group = cfg.OptGroup(name='network-feature-enabled',
511 title='Enabled network service features')
512
513NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000514 cfg.BoolOpt('ipv6',
515 default=True,
516 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000517 cfg.ListOpt('api_extensions',
518 default=['all'],
Alexander Gubanov36e1f9b2015-06-12 18:02:10 +0300519 help="A list of enabled network extensions with a special "
520 "entry all which indicates every extension is enabled. "
521 "Empty list indicates all extensions are disabled. "
522 "To get the list of extensions run: 'neutron ext-list'"),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400523 cfg.BoolOpt('ipv6_subnet_attributes',
524 default=False,
525 help="Allow the execution of IPv6 subnet tests that use "
526 "the extended IPv6 attributes ipv6_ra_mode "
527 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400528 ),
Itzik Brownbeb30d32015-03-29 09:42:54 +0300529 cfg.BoolOpt('port_admin_state_change',
530 default=True,
531 help="Does the test environment support changing"
532 " port admin state"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000533]
534
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300535messaging_group = cfg.OptGroup(name='messaging',
536 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500537
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300538MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500539 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300540 default='messaging',
541 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000542 cfg.IntOpt('max_queues_per_page',
543 default=20,
544 help='The maximum number of queue records per page when '
545 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400546 cfg.IntOpt('max_queue_metadata',
547 default=65536,
548 help='The maximum metadata size for a queue'),
549 cfg.IntOpt('max_messages_per_page',
550 default=20,
551 help='The maximum number of queue message per page when '
552 'listing (or) posting messages'),
553 cfg.IntOpt('max_message_size',
554 default=262144,
555 help='The maximum size of a message body'),
556 cfg.IntOpt('max_messages_per_claim',
557 default=20,
558 help='The maximum number of messages per claim'),
559 cfg.IntOpt('max_message_ttl',
560 default=1209600,
561 help='The maximum ttl for a message'),
562 cfg.IntOpt('max_claim_ttl',
563 default=43200,
564 help='The maximum ttl for a claim'),
565 cfg.IntOpt('max_claim_grace',
566 default=43200,
567 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500568]
569
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000570validation_group = cfg.OptGroup(name='validation',
571 title='SSH Validation options')
572
573ValidationGroup = [
Matthew Treinishe5cca002015-05-11 15:36:50 -0400574 cfg.BoolOpt('run_validation',
575 default=False,
576 help='Enable ssh on created servers and creation of additional'
577 ' validation resources to enable remote access',
578 deprecated_opts=[cfg.DeprecatedOpt('run_ssh',
579 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000580 cfg.StrOpt('connect_method',
581 default='floating',
582 choices=['fixed', 'floating'],
583 help='Default IP type used for validation: '
584 '-fixed: uses the first IP belonging to the fixed network '
585 '-floating: creates and uses a floating IP'),
586 cfg.StrOpt('auth_method',
587 default='keypair',
588 choices=['keypair'],
589 help='Default authentication method to the instance. '
590 'Only ssh via keypair is supported for now. '
591 'Additional methods will be handled in a separate spec.'),
592 cfg.IntOpt('ip_version_for_ssh',
593 default=4,
nithya-ganesan67da2872015-02-08 23:13:48 +0000594 help='Default IP version for ssh connections.',
595 deprecated_opts=[cfg.DeprecatedOpt('ip_version_for_ssh',
596 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000597 cfg.IntOpt('ping_timeout',
598 default=120,
599 help='Timeout in seconds to wait for ping to succeed.'),
600 cfg.IntOpt('connect_timeout',
601 default=60,
602 help='Timeout in seconds to wait for the TCP connection to be '
nithya-ganesan67da2872015-02-08 23:13:48 +0000603 'successful.',
604 deprecated_opts=[cfg.DeprecatedOpt('ssh_channel_timeout',
605 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000606 cfg.IntOpt('ssh_timeout',
607 default=300,
nithya-ganesan67da2872015-02-08 23:13:48 +0000608 help='Timeout in seconds to wait for the ssh banner.',
609 deprecated_opts=[cfg.DeprecatedOpt('ssh_timeout',
610 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000611]
612
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500613volume_group = cfg.OptGroup(name='volume',
614 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600615
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500616VolumeGroup = [
617 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400618 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500619 help='Time in seconds between volume availability checks.'),
620 cfg.IntOpt('build_timeout',
621 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400622 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500623 'available.'),
624 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000625 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500626 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900627 cfg.StrOpt('region',
628 default='',
629 help="The volume region name to use. If empty, the value "
630 "of identity.region is used instead. If no such region "
631 "is found in the service catalog, the first found one is "
632 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000633 cfg.StrOpt('endpoint_type',
634 default='publicURL',
635 choices=['public', 'admin', 'internal',
636 'publicURL', 'adminURL', 'internalURL'],
637 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100638 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200639 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100640 help="Name of the backend1 (must be declared in cinder.conf)"),
641 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200642 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100643 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700644 cfg.StrOpt('storage_protocol',
645 default='iSCSI',
646 help='Backend protocol to target when creating volume types'),
647 cfg.StrOpt('vendor_name',
648 default='Open Source',
649 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700650 cfg.StrOpt('disk_format',
651 default='raw',
652 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800653 cfg.IntOpt('volume_size',
654 default=1,
655 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500656]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800657
Matthew Treinishd5c96022013-10-17 21:51:23 +0000658volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
659 title='Enabled Cinder Features')
660
661VolumeFeaturesGroup = [
662 cfg.BoolOpt('multi_backend',
663 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000664 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100665 cfg.BoolOpt('backup',
666 default=True,
667 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100668 cfg.BoolOpt('snapshot',
669 default=True,
670 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000671 cfg.ListOpt('api_extensions',
672 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800673 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300674 'entry all which indicates every extension is enabled. '
675 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800676 cfg.BoolOpt('api_v1',
677 default=True,
678 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800679 cfg.BoolOpt('api_v2',
680 default=True,
681 help="Is the v2 volume API enabled"),
bkopilov8a657ae2015-05-11 11:45:23 +0300682 cfg.BoolOpt('bootable',
683 default=False,
684 help='Update bootable status of a volume '
685 'Not implemented on icehouse ')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000686]
687
Daryl Walleck587385b2012-03-03 13:00:26 -0600688
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500689object_storage_group = cfg.OptGroup(name='object-storage',
690 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200691
DennyZhang1e71b612013-09-26 12:35:40 -0500692ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500693 cfg.StrOpt('catalog_type',
694 default='object-store',
695 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900696 cfg.StrOpt('region',
697 default='',
698 help="The object-storage region name to use. If empty, the "
699 "value of identity.region is used instead. If no such "
700 "region is found in the service catalog, the first found "
701 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000702 cfg.StrOpt('endpoint_type',
703 default='publicURL',
704 choices=['public', 'admin', 'internal',
705 'publicURL', 'adminURL', 'internalURL'],
706 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000707 cfg.IntOpt('container_sync_timeout',
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900708 default=600,
Fabien Boucher2178d312013-12-31 15:38:57 +0100709 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000710 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000711 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000712 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100713 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000714 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400715 cfg.StrOpt('operator_role',
716 default='Member',
717 help="Role to add to users created for swift tests to "
718 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500719 cfg.StrOpt('reseller_admin_role',
720 default='ResellerAdmin',
721 help="User role that has reseller admin"),
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900722 cfg.StrOpt('realm_name',
723 default='realm1',
724 help="Name of sync realm. A sync realm is a set of clusters "
725 "that have agreed to allow container syncing with each "
726 "other. Set the same realm name as Swift's "
727 "container-sync-realms.conf"),
728 cfg.StrOpt('cluster_name',
729 default='name1',
730 help="One name of cluster which is set in the realm whose name "
731 "is set in 'realm_name' item in this file. Set the "
732 "same cluster name as Swift's container-sync-realms.conf"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500733]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200734
Matthew Treinishd5c96022013-10-17 21:51:23 +0000735object_storage_feature_group = cfg.OptGroup(
736 name='object-storage-feature-enabled',
737 title='Enabled object-storage features')
738
739ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000740 cfg.ListOpt('discoverable_apis',
741 default=['all'],
742 help="A list of the enabled optional discoverable apis. "
743 "A single entry, all, indicates that all of these "
744 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900745 cfg.BoolOpt('container_sync',
746 default=True,
747 help="Execute (old style) container-sync tests"),
748 cfg.BoolOpt('object_versioning',
749 default=True,
750 help="Execute object-versioning tests"),
751 cfg.BoolOpt('discoverability',
752 default=True,
753 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000754]
755
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800756database_group = cfg.OptGroup(name='database',
757 title='Database Service Options')
758
759DatabaseGroup = [
760 cfg.StrOpt('catalog_type',
761 default='database',
762 help="Catalog type of the Database service."),
763 cfg.StrOpt('db_flavor_ref',
764 default="1",
765 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400766 cfg.StrOpt('db_current_version',
767 default="v1.0",
768 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800769]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200770
Steve Bakerc60e4e32013-05-06 15:22:41 +1200771orchestration_group = cfg.OptGroup(name='orchestration',
772 title='Orchestration Service Options')
773
774OrchestrationGroup = [
775 cfg.StrOpt('catalog_type',
776 default='orchestration',
777 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900778 cfg.StrOpt('region',
779 default='',
780 help="The orchestration region name to use. If empty, the "
781 "value of identity.region is used instead. If no such "
782 "region is found in the service catalog, the first found "
783 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000784 cfg.StrOpt('endpoint_type',
785 default='publicURL',
786 choices=['public', 'admin', 'internal',
787 'publicURL', 'adminURL', 'internalURL'],
788 help="The endpoint type to use for the orchestration service."),
Matthew Treinishdb9721d2015-03-18 14:21:28 -0400789 cfg.StrOpt('stack_owner_role', default='heat_stack_owner',
790 help='Role required for users to be able to manage stacks'),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200791 cfg.IntOpt('build_interval',
792 default=1,
793 help="Time in seconds between build status checks."),
794 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400795 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200796 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200797 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200798 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200799 help="Instance type for tests. Needs to be big enough for a "
800 "full OS plus the test workload"),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200801 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200802 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700803 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100804 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700805 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000806 cfg.IntOpt('max_resources_per_stack',
807 default=1000,
808 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200809]
810
811
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100812telemetry_group = cfg.OptGroup(name='telemetry',
813 title='Telemetry Service Options')
814
815TelemetryGroup = [
816 cfg.StrOpt('catalog_type',
817 default='metering',
818 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000819 cfg.StrOpt('endpoint_type',
820 default='publicURL',
821 choices=['public', 'admin', 'internal',
822 'publicURL', 'adminURL', 'internalURL'],
823 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400824 cfg.BoolOpt('too_slow_to_test',
825 default=True,
826 help="This variable is used as flag to enable "
827 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100828]
829
830
Julie Pichond1017642013-07-24 16:37:23 +0100831dashboard_group = cfg.OptGroup(name="dashboard",
832 title="Dashboard options")
833
834DashboardGroup = [
835 cfg.StrOpt('dashboard_url',
836 default='http://localhost/',
837 help="Where the dashboard can be found"),
838 cfg.StrOpt('login_url',
839 default='http://localhost/auth/login/',
840 help="Login page for the dashboard"),
841]
842
843
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400844data_processing_group = cfg.OptGroup(name="data_processing",
845 title="Data Processing options")
846
847DataProcessingGroup = [
848 cfg.StrOpt('catalog_type',
849 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000850 help="Catalog type of the data processing service."),
851 cfg.StrOpt('endpoint_type',
852 default='publicURL',
853 choices=['public', 'admin', 'internal',
854 'publicURL', 'adminURL', 'internalURL'],
855 help="The endpoint type to use for the data processing "
856 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400857]
858
859
Luigi Toscano14d172d2015-01-23 16:37:47 +0100860data_processing_feature_group = cfg.OptGroup(
861 name="data_processing-feature-enabled",
862 title="Enabled Data Processing features")
863
864DataProcessingFeaturesGroup = [
865 cfg.ListOpt('plugins',
866 default=["vanilla", "hdp"],
867 help="List of enabled data processing plugins")
868]
869
870
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500871boto_group = cfg.OptGroup(name='boto',
872 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500873BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500874 cfg.StrOpt('ec2_url',
875 default="http://localhost:8773/services/Cloud",
876 help="EC2 URL"),
877 cfg.StrOpt('s3_url',
878 default="http://localhost:8080",
879 help="S3 URL"),
880 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500881 help="AWS Secret Key",
882 secret=True),
883 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500884 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100885 cfg.StrOpt('aws_zone',
886 default="nova",
887 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500888 cfg.StrOpt('s3_materials_path',
889 default="/opt/stack/devstack/files/images/"
890 "s3-materials/cirros-0.3.0",
891 help="S3 Materials Path"),
892 cfg.StrOpt('ari_manifest',
893 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
894 help="ARI Ramdisk Image manifest"),
895 cfg.StrOpt('ami_manifest',
896 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
897 help="AMI Machine Image manifest"),
898 cfg.StrOpt('aki_manifest',
899 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
900 help="AKI Kernel Image manifest"),
901 cfg.StrOpt('instance_type',
902 default="m1.tiny",
903 help="Instance type"),
904 cfg.IntOpt('http_socket_timeout',
905 default=3,
906 help="boto Http socket timeout"),
907 cfg.IntOpt('num_retries',
908 default=1,
909 help="boto num_retries on error"),
910 cfg.IntOpt('build_timeout',
911 default=60,
912 help="Status Change Timeout"),
913 cfg.IntOpt('build_interval',
914 default=1,
915 help="Status Change Test Interval"),
916]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100917
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500918stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
919
920StressGroup = [
921 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500922 help='Directory containing log files on the compute nodes'),
923 cfg.IntOpt('max_instances',
924 default=16,
925 help='Maximum number of instances to create during test.'),
926 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400927 help='Controller host.'),
928 # new stress options
929 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400930 help='Controller host.'),
931 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400932 help='ssh user.'),
933 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400934 help='Path to private key.'),
935 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400936 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000937 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400938 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200939 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000940 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200941 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100942 help='The number of threads created while stress test.'),
943 cfg.BoolOpt('leave_dirty_stack',
944 default=False,
945 help='Prevent the cleaning (tearDownClass()) between'
946 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100947 ' during this run.'),
948 cfg.BoolOpt('full_clean_stack',
949 default=False,
950 help='Allows a full cleaning process after a stress test.'
951 ' Caution : this cleanup will remove every objects of'
952 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500953]
954
955
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900956scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
957
958ScenarioGroup = [
959 cfg.StrOpt('img_dir',
960 default='/opt/stack/new/devstack/files/images/'
961 'cirros-0.3.1-x86_64-uec',
962 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300963 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900964 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300965 help='Image file name'),
966 cfg.StrOpt('img_disk_format',
967 default='qcow2',
968 help='Image disk format'),
969 cfg.StrOpt('img_container_format',
970 default='bare',
971 help='Image container format'),
Evgeny Antyshev7ba0d5f2015-04-28 13:18:07 +0000972 cfg.DictOpt('img_properties', help='Glance image properties. '
973 'Use for custom images which require them'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900974 cfg.StrOpt('ami_img_file',
975 default='cirros-0.3.1-x86_64-blank.img',
976 help='AMI image file name'),
977 cfg.StrOpt('ari_img_file',
978 default='cirros-0.3.1-x86_64-initrd',
979 help='ARI image file name'),
980 cfg.StrOpt('aki_img_file',
981 default='cirros-0.3.1-x86_64-vmlinuz',
982 help='AKI image file name'),
983 cfg.StrOpt('ssh_user',
984 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000985 help='ssh username for the image file'),
986 cfg.IntOpt(
987 'large_ops_number',
988 default=0,
989 help="specifies how many resources to request at once. Used "
Yair Fried413bf2d2014-11-19 17:07:11 +0200990 "for large operations testing."),
991 # TODO(yfried): add support for dhcpcd
992 cfg.StrOpt('dhcp_client',
993 default='udhcpc',
994 choices=["udhcpc", "dhclient"],
995 help='DHCP client used by images to renew DCHP lease. '
996 'If left empty, update operation will be skipped. '
997 'Supported clients: "udhcpc", "dhclient"')
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900998]
999
1000
Matthew Treinish4c412922013-07-16 15:27:42 -04001001service_available_group = cfg.OptGroup(name="service_available",
1002 title="Available OpenStack Services")
1003
1004ServiceAvailableGroup = [
1005 cfg.BoolOpt('cinder',
1006 default=True,
1007 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -04001008 cfg.BoolOpt('neutron',
1009 default=False,
1010 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -04001011 cfg.BoolOpt('glance',
1012 default=True,
1013 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -04001014 cfg.BoolOpt('swift',
1015 default=True,
1016 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -04001017 cfg.BoolOpt('nova',
1018 default=True,
1019 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -04001020 cfg.BoolOpt('heat',
1021 default=False,
1022 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +02001023 cfg.BoolOpt('ceilometer',
1024 default=True,
1025 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +01001026 cfg.BoolOpt('horizon',
1027 default=True,
1028 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001029 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001030 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001031 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001032 cfg.BoolOpt('ironic',
1033 default=False,
1034 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001035 cfg.BoolOpt('trove',
1036 default=False,
1037 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -04001038 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -05001039 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -04001040 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -04001041]
1042
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001043debug_group = cfg.OptGroup(name="debug",
1044 title="Debug System")
1045
1046DebugGroup = [
Sean Daguec522c092014-03-24 10:43:22 -04001047 cfg.StrOpt('trace_requests',
1048 default='',
1049 help="""A regex to determine which requests should be traced.
1050
1051This is a regex to match the caller for rest client requests to be able to
1052selectively trace calls out of specific classes and methods. It largely
1053exists for test development, and is not expected to be used in a real deploy
1054of tempest. This will be matched against the discovered ClassName:method
1055in the test environment.
1056
1057Expected values for this field are:
1058
1059 * ClassName:test_method_name - traces one test_method
1060 * ClassName:setUp(Class) - traces specific setup functions
1061 * ClassName:tearDown(Class) - traces specific teardown functions
1062 * ClassName:_run_cleanups - traces the cleanup functions
1063
1064If nothing is specified, this feature is not enabled. To trace everything
1065specify .* as the regex.
1066""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001067]
1068
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001069input_scenario_group = cfg.OptGroup(name="input-scenario",
1070 title="Filters and values for"
1071 " input scenarios")
1072
1073InputScenarioGroup = [
1074 cfg.StrOpt('image_regex',
1075 default='^cirros-0.3.1-x86_64-uec$',
1076 help="Matching images become parameters for scenario tests"),
1077 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +00001078 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001079 help="Matching flavors become parameters for scenario tests"),
1080 cfg.StrOpt('non_ssh_image_regex',
1081 default='^.*[Ww]in.*$',
1082 help="SSH verification in tests is skipped"
1083 "for matching images"),
1084 cfg.StrOpt('ssh_user_regex',
Marc Koderer07f5a522015-03-27 15:02:41 +01001085 default="[[\"^.*[Cc]irros.*$\", \"cirros\"]]",
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001086 help="List of user mapped to regex "
1087 "to matching image names."),
1088]
1089
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001090
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001091baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -08001092 title='Baremetal provisioning service options',
1093 help='When enabling baremetal tests, Nova '
1094 'must be configured to use the Ironic '
1095 'driver. The following paremeters for the '
1096 '[compute] section must be disabled: '
1097 'console_output, interface_attach, '
1098 'live_migration, pause, rescue, resize '
1099 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001100
1101BaremetalGroup = [
1102 cfg.StrOpt('catalog_type',
1103 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -07001104 help="Catalog type of the baremetal provisioning service"),
1105 cfg.BoolOpt('driver_enabled',
1106 default=False,
1107 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +09001108 cfg.StrOpt('driver',
1109 default='fake',
1110 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +00001111 cfg.StrOpt('endpoint_type',
1112 default='publicURL',
1113 choices=['public', 'admin', 'internal',
1114 'publicURL', 'adminURL', 'internalURL'],
1115 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001116 "service"),
1117 cfg.IntOpt('active_timeout',
1118 default=300,
1119 help="Timeout for Ironic node to completely provision"),
1120 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001121 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001122 help="Timeout for association of Nova instance and Ironic "
1123 "node"),
1124 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001125 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001126 help="Timeout for Ironic power transitions."),
1127 cfg.IntOpt('unprovision_timeout',
Devananda van der Veend1e52a92015-04-13 12:58:49 -07001128 default=300,
1129 help="Timeout for unprovisioning an Ironic node. "
1130 "Takes longer since Kilo as Ironic performs an extra "
1131 "step in Node cleaning.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001132]
1133
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001134negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1135
1136NegativeGroup = [
1137 cfg.StrOpt('test_generator',
1138 default='tempest.common.' +
1139 'generator.negative_generator.NegativeTestGenerator',
1140 help="Test generator class for all negative tests"),
1141]
1142
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001143DefaultGroup = [
1144 cfg.StrOpt('resources_prefix',
1145 default='tempest',
1146 help="Prefix to be added when generating the name for "
1147 "test resources. It can be used to discover all "
1148 "resources associated with a specific test run when "
1149 "running tempest on a real-life cloud"),
1150]
1151
Jon Grimm270bd7f2014-08-05 18:11:29 +00001152_opts = [
1153 (auth_group, AuthGroup),
1154 (compute_group, ComputeGroup),
1155 (compute_features_group, ComputeFeaturesGroup),
1156 (identity_group, IdentityGroup),
1157 (identity_feature_group, IdentityFeatureGroup),
1158 (image_group, ImageGroup),
1159 (image_feature_group, ImageFeaturesGroup),
1160 (network_group, NetworkGroup),
1161 (network_feature_group, NetworkFeaturesGroup),
1162 (messaging_group, MessagingGroup),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001163 (validation_group, ValidationGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001164 (volume_group, VolumeGroup),
1165 (volume_feature_group, VolumeFeaturesGroup),
1166 (object_storage_group, ObjectStoreGroup),
1167 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1168 (database_group, DatabaseGroup),
1169 (orchestration_group, OrchestrationGroup),
1170 (telemetry_group, TelemetryGroup),
1171 (dashboard_group, DashboardGroup),
1172 (data_processing_group, DataProcessingGroup),
Luigi Toscano14d172d2015-01-23 16:37:47 +01001173 (data_processing_feature_group, DataProcessingFeaturesGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001174 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001175 (stress_group, StressGroup),
1176 (scenario_group, ScenarioGroup),
1177 (service_available_group, ServiceAvailableGroup),
1178 (debug_group, DebugGroup),
1179 (baremetal_group, BaremetalGroup),
1180 (input_scenario_group, InputScenarioGroup),
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001181 (negative_group, NegativeGroup),
1182 (None, DefaultGroup)
Jon Grimm270bd7f2014-08-05 18:11:29 +00001183]
1184
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001185
Matthew Treinish43b296a2014-02-28 15:23:00 -05001186def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001187 for g, o in _opts:
Maru Newbyf440c292015-03-31 15:58:47 +00001188 register_opt_group(_CONF, g, o)
Jon Grimm270bd7f2014-08-05 18:11:29 +00001189
1190
1191def list_opts():
1192 """Return a list of oslo.config options available.
1193
1194 The purpose of this is to allow tools like the Oslo sample config file
1195 generator to discover the options exposed to users.
1196 """
Andrea Frittoli (andreaf)8def7ca2015-05-13 14:24:19 +01001197 return [(getattr(g, 'name', None), o) for g, o in _opts]
Matthew Treinish43b296a2014-02-28 15:23:00 -05001198
1199
Sean Dague3b9b1f32013-12-20 17:04:54 -05001200# this should never be called outside of this class
1201class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001202 """Provides OpenStack configuration information."""
1203
Brian Waldon738cd632011-12-12 18:45:09 -05001204 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001205 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001206 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001207
Brian Waldon738cd632011-12-12 18:45:09 -05001208 DEFAULT_CONFIG_FILE = "tempest.conf"
1209
Andrea Frittolia96ee212014-08-15 18:34:20 +01001210 def __getattr__(self, attr):
1211 # Handles config options from the default group
Maru Newbyf440c292015-03-31 15:58:47 +00001212 return getattr(_CONF, attr)
Andrea Frittolia96ee212014-08-15 18:34:20 +01001213
Matthew Treinish43b296a2014-02-28 15:23:00 -05001214 def _set_attrs(self):
Maru Newbyf440c292015-03-31 15:58:47 +00001215 self.auth = _CONF.auth
1216 self.compute = _CONF.compute
1217 self.compute_feature_enabled = _CONF['compute-feature-enabled']
1218 self.identity = _CONF.identity
1219 self.identity_feature_enabled = _CONF['identity-feature-enabled']
1220 self.image = _CONF.image
1221 self.image_feature_enabled = _CONF['image-feature-enabled']
1222 self.network = _CONF.network
1223 self.network_feature_enabled = _CONF['network-feature-enabled']
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001224 self.validation = _CONF.validation
Maru Newbyf440c292015-03-31 15:58:47 +00001225 self.volume = _CONF.volume
1226 self.volume_feature_enabled = _CONF['volume-feature-enabled']
1227 self.object_storage = _CONF['object-storage']
1228 self.object_storage_feature_enabled = _CONF[
Matthew Treinishd5c96022013-10-17 21:51:23 +00001229 'object-storage-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001230 self.database = _CONF.database
1231 self.orchestration = _CONF.orchestration
1232 self.messaging = _CONF.messaging
1233 self.telemetry = _CONF.telemetry
1234 self.dashboard = _CONF.dashboard
1235 self.data_processing = _CONF.data_processing
1236 self.data_processing_feature_enabled = _CONF[
Luigi Toscano14d172d2015-01-23 16:37:47 +01001237 'data_processing-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001238 self.boto = _CONF.boto
1239 self.stress = _CONF.stress
1240 self.scenario = _CONF.scenario
1241 self.service_available = _CONF.service_available
1242 self.debug = _CONF.debug
1243 self.baremetal = _CONF.baremetal
1244 self.input_scenario = _CONF['input-scenario']
Maru Newbyf440c292015-03-31 15:58:47 +00001245 self.negative = _CONF.negative
1246 _CONF.set_default('domain_name', self.identity.admin_domain_name,
1247 group='identity')
1248 _CONF.set_default('alt_domain_name', self.identity.admin_domain_name,
1249 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001250
Joe Gordon28a84ae2014-07-17 15:38:28 +00001251 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001252 """Initialize a configuration from a conf directory and conf file."""
1253 super(TempestConfigPrivate, self).__init__()
1254 config_files = []
1255 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1256
Joe Gordon28a84ae2014-07-17 15:38:28 +00001257 if config_path:
1258 path = config_path
1259 else:
1260 # Environment variables override defaults...
1261 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1262 self.DEFAULT_CONFIG_DIR)
1263 conf_file = os.environ.get('TEMPEST_CONFIG',
1264 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001265
Joe Gordon28a84ae2014-07-17 15:38:28 +00001266 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001267
1268 if not os.path.isfile(path):
1269 path = failsafe_path
1270
1271 # only parse the config file if we expect one to exist. This is needed
1272 # to remove an issue with the config file up to date checker.
1273 if parse_conf:
1274 config_files.append(path)
Maru Newbyf440c292015-03-31 15:58:47 +00001275 logging.register_options(_CONF)
Matthew Treinish5440a402014-10-02 14:36:16 -04001276 if os.path.isfile(path):
Maru Newbyf440c292015-03-31 15:58:47 +00001277 _CONF([], project='tempest', default_config_files=config_files)
Matthew Treinish5440a402014-10-02 14:36:16 -04001278 else:
Maru Newbyf440c292015-03-31 15:58:47 +00001279 _CONF([], project='tempest')
1280 logging.setup(_CONF, 'tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001281 LOG = logging.getLogger('tempest')
1282 LOG.info("Using tempest config file %s" % path)
1283 register_opts()
1284 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001285 if parse_conf:
Maru Newbyf440c292015-03-31 15:58:47 +00001286 _CONF.log_opt_values(LOG, std_logging.DEBUG)
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001287
Sean Dague86bd8422013-12-20 09:56:44 -05001288
1289class TempestConfigProxy(object):
1290 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001291 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001292
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001293 _extra_log_defaults = [
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001294 ('paramiko.transport', std_logging.INFO),
1295 ('requests.packages.urllib3.connectionpool', std_logging.WARN),
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001296 ]
1297
1298 def _fix_log_levels(self):
1299 """Tweak the oslo log defaults."""
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001300 for name, level in self._extra_log_defaults:
1301 std_logging.getLogger(name).setLevel(level)
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001302
Sean Dague86bd8422013-12-20 09:56:44 -05001303 def __getattr__(self, attr):
1304 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001305 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001306 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001307
1308 return getattr(self._config, attr)
1309
Joe Gordon28a84ae2014-07-17 15:38:28 +00001310 def set_config_path(self, path):
1311 self._path = path
1312
Sean Dague86bd8422013-12-20 09:56:44 -05001313
1314CONF = TempestConfigProxy()