blob: 3f3e7e7448c822edf5e0e40309ae02e1fe024569 [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):
34 conf.register_group(opt_group)
35 for opt in options:
36 conf.register_opt(opt, group=opt_group.name)
37
38
Matthew Treinishc791ac42014-07-16 09:15:23 -040039auth_group = cfg.OptGroup(name='auth',
40 title="Options for authentication and credentials")
41
42
43AuthGroup = [
44 cfg.StrOpt('test_accounts_file',
Matthew Treinishc791ac42014-07-16 09:15:23 -040045 help="Path to the yaml file that contains the list of "
Matthew Treinishfc7cd8f2015-03-30 11:51:55 -040046 "credentials to use for running tests. If used when "
47 "running in parallel you have to make sure sufficient "
48 "credentials are provided in the accounts file. For "
49 "example if no tests with roles are being run it requires "
50 "at least `2 * CONC` distinct accounts configured in "
51 " the `test_accounts_file`, with CONC == the "
52 "number of concurrent test processes."),
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010053 cfg.BoolOpt('allow_tenant_isolation',
Attila Fazekas5dda1582015-02-18 17:16:02 +010054 default=True,
Andrea Frittoli8283b4e2014-07-17 13:28:58 +010055 help="Allows test cases to create/destroy tenants and "
56 "users. This option requires that OpenStack Identity "
57 "API admin credentials are known. If false, isolated "
58 "test cases and parallel execution, can still be "
59 "achieved configuring a list of test accounts",
60 deprecated_opts=[cfg.DeprecatedOpt('allow_tenant_isolation',
61 group='compute'),
62 cfg.DeprecatedOpt('allow_tenant_isolation',
63 group='orchestration')]),
Matthew Treinish167b2be2015-01-15 17:20:27 -050064 cfg.ListOpt('tempest_roles',
65 help="Roles to assign to all users created by tempest",
Andrea Frittolic3280152015-02-26 12:42:34 +000066 default=[]),
67 cfg.StrOpt('tenant_isolation_domain_name',
68 default=None,
69 help="Only applicable when identity.auth_version is v3."
70 "Domain within which isolated credentials are provisioned."
71 "The default \"None\" means that the domain from the"
72 "admin user is used instead.")
Matthew Treinishc791ac42014-07-16 09:15:23 -040073]
74
Matthew Treinish39e48ef2012-12-21 13:36:15 -050075identity_group = cfg.OptGroup(name='identity',
76 title="Keystone Configuration Options")
Daryl Walleck1465d612011-11-02 02:22:15 -050077
Matthew Treinish39e48ef2012-12-21 13:36:15 -050078IdentityGroup = [
79 cfg.StrOpt('catalog_type',
80 default='identity',
81 help="Catalog type of the Identity service."),
Jay Pipescd8eaec2013-01-16 21:03:48 -050082 cfg.BoolOpt('disable_ssl_certificate_validation',
83 default=False,
84 help="Set to True if using self-signed SSL certificates."),
Rob Crittendena7db6692014-11-23 18:44:38 -050085 cfg.StrOpt('ca_certificates_file',
86 default=None,
87 help='Specify a CA bundle file to use in verifying a '
88 'TLS (https) server certificate.'),
Jay Pipes7c88eb22013-01-16 21:32:43 -050089 cfg.StrOpt('uri',
Brant Knudsonc7ca3342013-03-28 21:08:50 -050090 help="Full URI of the OpenStack Identity API (Keystone), v2"),
91 cfg.StrOpt('uri_v3',
92 help='Full URI of the OpenStack Identity API (Keystone), v3'),
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000093 cfg.StrOpt('auth_version',
94 default='v2',
95 help="Identity API version to be used for authentication "
Andrea Frittoli77f9da42014-02-06 11:18:19 +000096 "for API tests."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -050097 cfg.StrOpt('region',
Attila Fazekascadcb1f2013-01-21 23:10:53 +010098 default='RegionOne',
Arata Notsu8f440392013-09-13 16:14:20 +090099 help="The identity region name to use. Also used as the other "
100 "services' region name unless they are set explicitly. "
101 "If no such region is found in the service catalog, the "
102 "first found one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000103 cfg.StrOpt('endpoint_type',
104 default='publicURL',
105 choices=['public', 'admin', 'internal',
106 'publicURL', 'adminURL', 'internalURL'],
107 help="The endpoint type to use for the identity service."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100108 cfg.StrOpt('username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100109 help="Username to use for Nova API requests."),
110 cfg.StrOpt('tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100111 help="Tenant name to use for Nova API requests."),
Russell Sim7f894a52013-09-13 10:35:21 +1000112 cfg.StrOpt('admin_role',
113 default='admin',
114 help="Role required to administrate keystone."),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100115 cfg.StrOpt('password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100116 help="API key to use when authenticating.",
117 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100118 cfg.StrOpt('domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100119 help="Domain name for authentication (Keystone V3)."
120 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100121 cfg.StrOpt('alt_username',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100122 help="Username of alternate user to use for Nova API "
123 "requests."),
124 cfg.StrOpt('alt_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100125 help="Alternate user's Tenant name to use for Nova API "
126 "requests."),
127 cfg.StrOpt('alt_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100128 help="API key to use when authenticating as alternate user.",
129 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100130 cfg.StrOpt('alt_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100131 help="Alternate domain name for authentication (Keystone V3)."
132 "The same domain applies to user and project"),
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100133 cfg.StrOpt('admin_username',
Dirk Mueller14bd5622014-01-14 19:33:05 +0100134 help="Administrative Username to use for "
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100135 "Keystone API requests."),
136 cfg.StrOpt('admin_tenant_name',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100137 help="Administrative Tenant name to use for Keystone API "
138 "requests."),
139 cfg.StrOpt('admin_password',
Attila Fazekascadcb1f2013-01-21 23:10:53 +0100140 help="API key to use when authenticating as admin.",
141 secret=True),
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100142 cfg.StrOpt('admin_domain_name',
Andrea Frittolib1b04bb2014-04-06 11:57:07 +0100143 help="Admin domain name for authentication (Keystone V3)."
144 "The same domain applies to user and project"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500145]
Jay Pipes3f981df2012-03-27 18:59:44 -0400146
Matthew Treinishd5021a72014-01-09 18:42:51 +0000147identity_feature_group = cfg.OptGroup(name='identity-feature-enabled',
148 title='Enabled Identity Features')
149
150IdentityFeatureGroup = [
151 cfg.BoolOpt('trust',
152 default=True,
153 help='Does the identity service have delegation and '
Matthew Treinishdb2c5972014-01-31 22:18:59 +0000154 'impersonation enabled'),
155 cfg.BoolOpt('api_v2',
156 default=True,
157 help='Is the v2 identity API enabled'),
158 cfg.BoolOpt('api_v3',
159 default=True,
160 help='Is the v3 identity API enabled'),
Matthew Treinishd5021a72014-01-09 18:42:51 +0000161]
162
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500163compute_group = cfg.OptGroup(name='compute',
164 title='Compute Service Options')
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800165
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500166ComputeGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500167 cfg.StrOpt('image_ref',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400168 help="Valid primary image reference to be used in tests. "
169 "This is a required option"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500170 cfg.StrOpt('image_ref_alt',
Matthew Treinishafcb6b42014-05-27 13:50:02 -0400171 help="Valid secondary image reference to be used in tests. "
172 "This is a required option, but if only one image is "
173 "available duplicate the value of image_ref above"),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900174 cfg.StrOpt('flavor_ref',
175 default="1",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500176 help="Valid primary flavor to use in tests."),
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900177 cfg.StrOpt('flavor_ref_alt',
178 default="2",
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500179 help='Valid secondary flavor to be used in tests.'),
Maru Newbyaf292e82013-05-20 21:32:28 +0000180 cfg.StrOpt('image_ssh_user',
181 default="root",
182 help="User name used to authenticate to an instance."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700183 cfg.StrOpt('image_ssh_password',
184 default="password",
185 help="Password used to authenticate to an instance."),
Maru Newbyaf292e82013-05-20 21:32:28 +0000186 cfg.StrOpt('image_alt_ssh_user',
187 default="root",
188 help="User name used to authenticate to an instance using "
189 "the alternate image."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500190 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400191 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500192 help="Time in seconds between build status checks."),
193 cfg.IntOpt('build_timeout',
194 default=300,
Hugh Saunders5b139ad2014-12-15 09:08:41 +0000195 help="Timeout in seconds to wait for an instance to build. "
196 "Other services that do not define build_timeout will "
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200197 "inherit this value."),
Attila Fazekas423834d2014-03-14 17:33:13 +0100198 cfg.StrOpt('ssh_auth_method',
199 default='keypair',
200 help="Auth method used for authenticate to the instance. "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000201 "Valid choices are: keypair, configured, adminpass "
202 "and disabled. "
203 "Keypair: start the servers with a ssh keypair. "
204 "Configured: use the configured user and password. "
205 "Adminpass: use the injected adminPass. "
206 "Disabled: avoid using ssh when it is an option."),
Attila Fazekas423834d2014-03-14 17:33:13 +0100207 cfg.StrOpt('ssh_connect_method',
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000208 default='floating',
Attila Fazekas423834d2014-03-14 17:33:13 +0100209 help="How to connect to the instance? "
210 "fixed: using the first ip belongs the fixed network "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000211 "floating: creating and using a floating ip."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500212 cfg.StrOpt('ssh_user',
213 default='root',
214 help="User name used to authenticate to an instance."),
Nachi Ueno6d580be2013-07-24 10:58:11 -0700215 cfg.IntOpt('ping_timeout',
Darragh O'Reilly6b636672014-01-24 12:17:40 +0000216 default=120,
Nachi Ueno6d580be2013-07-24 10:58:11 -0700217 help="Timeout in seconds to wait for ping to "
218 "succeed."),
Richard Wintersf87059b2015-02-17 11:46:54 -0500219 cfg.IntOpt('ping_size',
220 default=56,
221 help="The packet size for ping packets originating "
222 "from remote linux hosts"),
223 cfg.IntOpt('ping_count',
224 default=1,
225 help="The number of ping packets originating from remote "
226 "linux hosts"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500227 cfg.IntOpt('ssh_timeout',
228 default=300,
Chris Yeoh76916042013-02-27 16:25:25 +1030229 help="Timeout in seconds to wait for authentication to "
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500230 "succeed."),
Attila Fazekas0abbc952013-07-01 19:19:42 +0200231 cfg.IntOpt('ready_wait',
232 default=0,
DennyZhang8912d012013-09-25 18:08:34 -0500233 help="Additional wait time for clean state, when there is "
234 "no OS-EXT-STS extension available"),
Chris Yeoh76916042013-02-27 16:25:25 +1030235 cfg.IntOpt('ssh_channel_timeout',
236 default=60,
237 help="Timeout in seconds to wait for output from ssh "
238 "channel."),
Attila Fazekasb0661652013-05-08 13:01:36 +0200239 cfg.StrOpt('fixed_network_name',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800240 help="Name of the fixed network that is visible to all test "
Matthew Treinish03feae02015-03-27 10:25:45 -0400241 "tenants. If multiple networks are available for a tenant"
242 " this is the network which will be used for creating "
243 "servers if tempest does not create a network or a "
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000244 "network is not specified elsewhere. It may be used for "
245 "ssh validation only if floating IPs are disabled."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500246 cfg.StrOpt('network_for_ssh',
247 default='public',
Chris Hoge8f1401b2014-11-19 14:00:37 -0800248 help="Network used for SSH connections. Ignored if "
Matthew Treinishe5cca002015-05-11 15:36:50 -0400249 "use_floatingip_for_ssh=true or run_validation=false."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500250 cfg.IntOpt('ip_version_for_ssh',
251 default=4,
252 help="IP version used for SSH connections."),
fujioka yuuichia11994e2013-07-09 11:19:51 +0900253 cfg.BoolOpt('use_floatingip_for_ssh',
254 default=True,
Tushar Kalra95a482d2014-03-25 14:24:43 -0700255 help="Does SSH use Floating IPs?"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500256 cfg.StrOpt('catalog_type',
257 default='compute',
258 help="Catalog type of the Compute service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900259 cfg.StrOpt('region',
260 default='',
261 help="The compute region name to use. If empty, the value "
262 "of identity.region is used instead. If no such region "
263 "is found in the service catalog, the first found one is "
264 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000265 cfg.StrOpt('endpoint_type',
266 default='publicURL',
267 choices=['public', 'admin', 'internal',
268 'publicURL', 'adminURL', 'internalURL'],
269 help="The endpoint type to use for the compute service."),
Ryan Hsucb2e1252013-09-03 21:44:49 -0700270 cfg.StrOpt('volume_device_name',
271 default='vdb',
272 help="Expected device name when a volume is attached to "
Ken'ichi Ohmichi39437e22013-10-06 00:21:38 +0900273 "an instance"),
274 cfg.IntOpt('shelved_offload_time',
275 default=0,
276 help='Time in seconds before a shelved instance is eligible '
277 'for removing from a host. -1 never offload, 0 offload '
278 'when shelved. This time should be the same as the time '
279 'of nova.conf, and some tests will run for as long as the '
Ghanshyam06a5b4a2014-04-11 17:32:45 +0900280 'time.'),
281 cfg.StrOpt('floating_ip_range',
282 default='10.0.0.0/29',
283 help='Unallocated floating IP range, which will be used to '
Chris Hoge8f1401b2014-11-19 14:00:37 -0800284 'test the floating IP bulk feature for CRUD operation. '
285 'This block must not overlap an existing floating IP '
286 'pool.')
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500287]
Rohit Karajgie1b050d2011-12-02 16:13:18 -0800288
Matthew Treinishd5c96022013-10-17 21:51:23 +0000289compute_features_group = cfg.OptGroup(name='compute-feature-enabled',
290 title="Enabled Compute Service Features")
291
292ComputeFeaturesGroup = [
293 cfg.BoolOpt('disk_config',
294 default=True,
295 help="If false, skip disk config tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000296 cfg.ListOpt('api_extensions',
297 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800298 help='A list of enabled compute extensions with a special '
Ken'ichi Ohmichia7e68712014-05-06 10:47:26 +0900299 'entry all which indicates every extension is enabled. '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300300 'Each extension should be specified with alias name. '
301 'Empty list indicates all extensions are disabled'),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000302 cfg.BoolOpt('change_password',
303 default=False,
304 help="Does the test environment support changing the admin "
305 "password?"),
Adam Gandelmanc6eefb42014-07-15 16:44:08 -0700306 cfg.BoolOpt('console_output',
307 default=True,
308 help="Does the test environment support obtaining instance "
309 "serial console output?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000310 cfg.BoolOpt('resize',
311 default=False,
312 help="Does the test environment support resizing?"),
Eric Windischb5538072014-03-09 23:47:35 -0400313 cfg.BoolOpt('pause',
314 default=True,
315 help="Does the test environment support pausing?"),
David Shrewsbury25f666f2014-07-22 12:17:59 -0400316 cfg.BoolOpt('shelve',
317 default=True,
318 help="Does the test environment support shelving/unshelving?"),
Eric Windischaeb7e842014-03-10 01:10:50 -0400319 cfg.BoolOpt('suspend',
320 default=True,
321 help="Does the test environment support suspend/resume?"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000322 cfg.BoolOpt('live_migration',
Joe Gordon31a139a2014-11-17 16:39:04 -0800323 default=True,
Matthew Treinishd5c96022013-10-17 21:51:23 +0000324 help="Does the test environment support live migration "
325 "available?"),
326 cfg.BoolOpt('block_migration_for_live_migration',
327 default=False,
328 help="Does the test environment use block devices for live "
329 "migration"),
330 cfg.BoolOpt('block_migrate_cinder_iscsi',
331 default=False,
332 help="Does the test environment block migration support "
Joe Gordon0a5788f2015-03-17 11:29:38 -0700333 "cinder iSCSI volumes. Note, libvirt doesn't support this, "
334 "see https://bugs.launchpad.net/nova/+bug/1398999"),
Matt Riedemannbb9f7042015-03-03 08:53:11 -0800335 # TODO(gilliard): Remove live_migrate_paused_instances at juno-eol.
336 cfg.BoolOpt('live_migrate_paused_instances',
337 default=False,
338 help="Does the test system allow live-migration of paused "
339 "instances? Note, this is more than just the ANDing of "
340 "paused and live_migrate, but all 3 should be set to True "
341 "to run those tests"),
Ghanshyam Mann41c17572014-02-27 18:52:56 +0900342 cfg.BoolOpt('vnc_console',
343 default=False,
344 help='Enable VNC console. This configuration value should '
Ghanshyam70876d02014-03-11 11:40:18 +0900345 'be same as [nova.vnc]->vnc_enabled in nova.conf'),
346 cfg.BoolOpt('spice_console',
347 default=False,
348 help='Enable Spice console. This configuration value should '
349 'be same as [nova.spice]->enabled in nova.conf'),
350 cfg.BoolOpt('rdp_console',
351 default=False,
352 help='Enable RDP console. This configuration value should '
Adam Gandelman2e37b4f2014-06-18 17:34:21 -0700353 'be same as [nova.rdp]->enabled in nova.conf'),
354 cfg.BoolOpt('rescue',
355 default=True,
356 help='Does the test environment support instance rescue '
Ghanshyam9c2e50d2014-07-22 21:32:05 +0900357 'mode?'),
358 cfg.BoolOpt('enable_instance_password',
359 default=True,
360 help='Enables returning of the instance password by the '
361 'relevant server API calls such as create, rebuild '
Adam Gandelman7186f7a2014-07-23 09:28:56 -0400362 'or rescue.'),
363 cfg.BoolOpt('interface_attach',
364 default=True,
365 help='Does the test environment support dynamic network '
Adam Gandelmanfbc95ac2014-06-19 17:33:43 -0700366 'interface attachment?'),
367 cfg.BoolOpt('snapshot',
368 default=True,
369 help='Does the test environment support creating snapshot '
Matthew Treinishdfd7ac02015-02-09 17:47:31 -0500370 'images of running instances?'),
371 cfg.BoolOpt('ec2_api',
372 default=True,
Matt Riedemann17940732015-03-13 14:18:19 +0000373 help='Does the test environment have the ec2 api running?'),
374 # TODO(mriedem): Remove preserve_ports once juno-eol happens.
375 cfg.BoolOpt('preserve_ports',
376 default=False,
377 help='Does Nova preserve preexisting ports from Neutron '
378 'when deleting an instance? This should be set to True '
379 'if testing Kilo+ Nova.')
Matthew Treinishd5c96022013-10-17 21:51:23 +0000380]
381
382
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500383image_group = cfg.OptGroup(name='image',
384 title="Image Service Options")
Jay Pipesf38eaac2012-06-21 13:37:35 -0400385
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500386ImageGroup = [
Matthew Treinish72ea4422013-02-07 14:42:49 -0500387 cfg.StrOpt('catalog_type',
388 default='image',
Sean Dague83401992013-05-06 17:46:36 -0400389 help='Catalog type of the Image service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900390 cfg.StrOpt('region',
391 default='',
392 help="The image region name to use. If empty, the value "
393 "of identity.region is used instead. If no such region "
394 "is found in the service catalog, the first found one is "
395 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000396 cfg.StrOpt('endpoint_type',
397 default='publicURL',
398 choices=['public', 'admin', 'internal',
399 'publicURL', 'adminURL', 'internalURL'],
400 help="The endpoint type to use for the image service."),
Sean Dague83401992013-05-06 17:46:36 -0400401 cfg.StrOpt('http_image',
402 default='http://download.cirros-cloud.net/0.3.1/'
403 'cirros-0.3.1-x86_64-uec.tar.gz',
Lucian Petrut1cfe2982015-01-06 13:57:36 +0200404 help='http accessible image'),
405 cfg.IntOpt('build_timeout',
406 default=300,
407 help="Timeout in seconds to wait for an image to "
408 "become available."),
409 cfg.IntOpt('build_interval',
410 default=1,
411 help="Time in seconds between image operation status "
412 "checks.")
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500413]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400414
Matthew Treinish2b5287d2013-10-22 17:40:34 +0000415image_feature_group = cfg.OptGroup(name='image-feature-enabled',
416 title='Enabled image service features')
417
418ImageFeaturesGroup = [
419 cfg.BoolOpt('api_v2',
420 default=True,
421 help="Is the v2 image API enabled"),
422 cfg.BoolOpt('api_v1',
423 default=True,
424 help="Is the v1 image API enabled"),
425]
Jay Pipesf38eaac2012-06-21 13:37:35 -0400426
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500427network_group = cfg.OptGroup(name='network',
428 title='Network Service Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600429
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500430NetworkGroup = [
431 cfg.StrOpt('catalog_type',
432 default='network',
Mark McClainf2982e82013-07-06 17:48:03 -0400433 help='Catalog type of the Neutron service.'),
Arata Notsu8f440392013-09-13 16:14:20 +0900434 cfg.StrOpt('region',
435 default='',
436 help="The network region name to use. If empty, the value "
437 "of identity.region is used instead. If no such region "
438 "is found in the service catalog, the first found one is "
439 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000440 cfg.StrOpt('endpoint_type',
441 default='publicURL',
442 choices=['public', 'admin', 'internal',
443 'publicURL', 'adminURL', 'internalURL'],
444 help="The endpoint type to use for the network service."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500445 cfg.StrOpt('tenant_network_cidr',
446 default="10.100.0.0/16",
Henry Gessauffda37a2014-01-16 11:17:55 -0500447 help="The cidr block to allocate tenant ipv4 subnets from"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500448 cfg.IntOpt('tenant_network_mask_bits',
Attila Fazekas8ea181b2013-07-13 16:26:14 +0200449 default=28,
Henry Gessauffda37a2014-01-16 11:17:55 -0500450 help="The mask bits for tenant ipv4 subnets"),
451 cfg.StrOpt('tenant_network_v6_cidr',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400452 default="2003::/48",
Henry Gessauffda37a2014-01-16 11:17:55 -0500453 help="The cidr block to allocate tenant ipv6 subnets from"),
454 cfg.IntOpt('tenant_network_v6_mask_bits',
Sergey Shnaidman1f3659a2014-08-27 18:26:42 +0400455 default=64,
Henry Gessauffda37a2014-01-16 11:17:55 -0500456 help="The mask bits for tenant ipv6 subnets"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500457 cfg.BoolOpt('tenant_networks_reachable',
458 default=False,
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000459 help="Whether tenant networks can be reached directly from "
460 "the test client. This must be set to True when the "
461 "'fixed' ssh_connect_method is selected."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500462 cfg.StrOpt('public_network_id',
463 default="",
464 help="Id of the public network that provides external "
465 "connectivity"),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000466 cfg.StrOpt('floating_network_name',
467 help="Default floating network name. Used to allocate floating "
468 "IPs when neutron is enabled."),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500469 cfg.StrOpt('public_router_id',
470 default="",
471 help="Id of the public router that provides external "
Yair Fried1eb27f52014-11-10 15:24:19 +0200472 "connectivity. This should only be used when Neutron's "
473 "'allow_overlapping_ips' is set to 'False' in "
474 "neutron.conf. usually not needed past 'Grizzly' release"),
izikpensod9a01a62014-02-17 20:02:32 +0200475 cfg.IntOpt('build_timeout',
476 default=300,
477 help="Timeout in seconds to wait for network operation to "
478 "complete."),
479 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400480 default=1,
izikpensod9a01a62014-02-17 20:02:32 +0200481 help="Time in seconds between network operation status "
482 "checks."),
Attila Fazekas640392b2014-06-12 15:58:10 +0200483 cfg.ListOpt('dns_servers',
484 default=["8.8.8.8", "8.8.4.4"],
Itzik Brown5be44582014-12-24 09:05:13 +0200485 help="List of dns servers which should be used"
Itzik Brown2ca01cd2014-12-08 12:58:20 +0200486 " for subnet creation"),
487 cfg.StrOpt('port_vnic_type',
488 choices=[None, 'normal', 'direct', 'macvtap'],
489 help="vnic_type to use when Launching instances"
490 " with pre-configured ports."
491 " Supported ports are:"
492 " ['normal','direct','macvtap']"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500493]
Jay Pipes3f981df2012-03-27 18:59:44 -0400494
Matthew Treinishe3d26142013-11-26 19:14:58 +0000495network_feature_group = cfg.OptGroup(name='network-feature-enabled',
496 title='Enabled network service features')
497
498NetworkFeaturesGroup = [
Matthew Treinishe2e33cf2014-03-03 19:28:41 +0000499 cfg.BoolOpt('ipv6',
500 default=True,
501 help="Allow the execution of IPv6 tests"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000502 cfg.ListOpt('api_extensions',
503 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800504 help='A list of enabled network extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300505 'entry all which indicates every extension is enabled. '
506 'Empty list indicates all extensions are disabled'),
Sean M. Collinsdd27a4d2014-05-13 10:33:15 -0400507 cfg.BoolOpt('ipv6_subnet_attributes',
508 default=False,
509 help="Allow the execution of IPv6 subnet tests that use "
510 "the extended IPv6 attributes ipv6_ra_mode "
511 "and ipv6_address_mode"
Mark McClain6e07c0d2014-10-10 11:25:03 -0400512 ),
Itzik Brownbeb30d32015-03-29 09:42:54 +0300513 cfg.BoolOpt('port_admin_state_change',
514 default=True,
515 help="Does the test environment support changing"
516 " port admin state"),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000517]
518
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300519messaging_group = cfg.OptGroup(name='messaging',
520 title='Messaging Service')
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500521
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300522MessagingGroup = [
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500523 cfg.StrOpt('catalog_type',
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -0300524 default='messaging',
525 help='Catalog type of the Messaging service.'),
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000526 cfg.IntOpt('max_queues_per_page',
527 default=20,
528 help='The maximum number of queue records per page when '
529 'listing queues'),
Malini Kamalambal7458b4b2014-05-29 11:47:28 -0400530 cfg.IntOpt('max_queue_metadata',
531 default=65536,
532 help='The maximum metadata size for a queue'),
533 cfg.IntOpt('max_messages_per_page',
534 default=20,
535 help='The maximum number of queue message per page when '
536 'listing (or) posting messages'),
537 cfg.IntOpt('max_message_size',
538 default=262144,
539 help='The maximum size of a message body'),
540 cfg.IntOpt('max_messages_per_claim',
541 default=20,
542 help='The maximum number of messages per claim'),
543 cfg.IntOpt('max_message_ttl',
544 default=1209600,
545 help='The maximum ttl for a message'),
546 cfg.IntOpt('max_claim_ttl',
547 default=43200,
548 help='The maximum ttl for a claim'),
549 cfg.IntOpt('max_claim_grace',
550 default=43200,
551 help='The maximum grace period for a claim'),
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -0500552]
553
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000554validation_group = cfg.OptGroup(name='validation',
555 title='SSH Validation options')
556
557ValidationGroup = [
Matthew Treinishe5cca002015-05-11 15:36:50 -0400558 cfg.BoolOpt('run_validation',
559 default=False,
560 help='Enable ssh on created servers and creation of additional'
561 ' validation resources to enable remote access',
562 deprecated_opts=[cfg.DeprecatedOpt('run_ssh',
563 group='compute')]),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +0000564 cfg.StrOpt('connect_method',
565 default='floating',
566 choices=['fixed', 'floating'],
567 help='Default IP type used for validation: '
568 '-fixed: uses the first IP belonging to the fixed network '
569 '-floating: creates and uses a floating IP'),
570 cfg.StrOpt('auth_method',
571 default='keypair',
572 choices=['keypair'],
573 help='Default authentication method to the instance. '
574 'Only ssh via keypair is supported for now. '
575 'Additional methods will be handled in a separate spec.'),
576 cfg.IntOpt('ip_version_for_ssh',
577 default=4,
578 help='Default IP version for ssh connections.'),
579 cfg.IntOpt('ping_timeout',
580 default=120,
581 help='Timeout in seconds to wait for ping to succeed.'),
582 cfg.IntOpt('connect_timeout',
583 default=60,
584 help='Timeout in seconds to wait for the TCP connection to be '
585 'successful.'),
586 cfg.IntOpt('ssh_timeout',
587 default=300,
588 help='Timeout in seconds to wait for the ssh banner.'),
589]
590
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500591volume_group = cfg.OptGroup(name='volume',
592 title='Block Storage Options')
Daryl Walleck587385b2012-03-03 13:00:26 -0600593
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500594VolumeGroup = [
595 cfg.IntOpt('build_interval',
Sean Dague82190852014-05-24 07:42:59 -0400596 default=1,
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500597 help='Time in seconds between volume availability checks.'),
598 cfg.IntOpt('build_timeout',
599 default=300,
Eric Harney9b1f89c2014-10-14 14:40:19 -0400600 help='Timeout in seconds to wait for a volume to become '
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500601 'available.'),
602 cfg.StrOpt('catalog_type',
Matthew Treinisheb724512013-10-25 15:12:59 +0000603 default='volume',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500604 help="Catalog type of the Volume Service"),
Arata Notsu8f440392013-09-13 16:14:20 +0900605 cfg.StrOpt('region',
606 default='',
607 help="The volume region name to use. If empty, the value "
608 "of identity.region is used instead. If no such region "
609 "is found in the service catalog, the first found one is "
610 "used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000611 cfg.StrOpt('endpoint_type',
612 default='publicURL',
613 choices=['public', 'admin', 'internal',
614 'publicURL', 'adminURL', 'internalURL'],
615 help="The endpoint type to use for the volume service."),
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100616 cfg.StrOpt('backend1_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200617 default='BACKEND_1',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100618 help="Name of the backend1 (must be declared in cinder.conf)"),
619 cfg.StrOpt('backend2_name',
Giulio Fidentef4fa8942013-05-28 18:48:03 +0200620 default='BACKEND_2',
Jérôme Gallard86551ce2013-03-08 11:41:26 +0100621 help="Name of the backend2 (must be declared in cinder.conf)"),
Adam Gandelman827ad332013-06-24 17:04:09 -0700622 cfg.StrOpt('storage_protocol',
623 default='iSCSI',
624 help='Backend protocol to target when creating volume types'),
625 cfg.StrOpt('vendor_name',
626 default='Open Source',
627 help='Backend vendor to target when creating volume types'),
Ryan Hsua67f4632013-08-29 16:03:06 -0700628 cfg.StrOpt('disk_format',
629 default='raw',
630 help='Disk format to use when copying a volume to image'),
Jerry Cai9733d0e2014-03-19 15:50:49 +0800631 cfg.IntOpt('volume_size',
632 default=1,
633 help='Default size in GB for volumes created by volumes tests'),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500634]
K Jonathan Harkerd6ba4b42012-12-18 13:50:47 -0800635
Matthew Treinishd5c96022013-10-17 21:51:23 +0000636volume_feature_group = cfg.OptGroup(name='volume-feature-enabled',
637 title='Enabled Cinder Features')
638
639VolumeFeaturesGroup = [
640 cfg.BoolOpt('multi_backend',
641 default=False,
Matthew Treinishe3d26142013-11-26 19:14:58 +0000642 help="Runs Cinder multi-backend test (requires 2 backends)"),
Giulio Fidente74b08ad2014-01-18 04:02:51 +0100643 cfg.BoolOpt('backup',
644 default=True,
645 help='Runs Cinder volumes backup test'),
JordanPbce55532014-03-19 12:10:32 +0100646 cfg.BoolOpt('snapshot',
647 default=True,
648 help='Runs Cinder volume snapshot test'),
Matthew Treinishe3d26142013-11-26 19:14:58 +0000649 cfg.ListOpt('api_extensions',
650 default=['all'],
Zhi Kun Liude25c022014-02-14 13:25:19 +0800651 help='A list of enabled volume extensions with a special '
Simeon Monov5d7effe2014-07-16 07:32:38 +0300652 'entry all which indicates every extension is enabled. '
653 'Empty list indicates all extensions are disabled'),
Zhi Kun Liubb363a22013-11-28 18:47:39 +0800654 cfg.BoolOpt('api_v1',
655 default=True,
656 help="Is the v1 volume API enabled"),
Zhi Kun Liu8cc3c842014-01-07 10:44:34 +0800657 cfg.BoolOpt('api_v2',
658 default=True,
659 help="Is the v2 volume API enabled"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000660]
661
Daryl Walleck587385b2012-03-03 13:00:26 -0600662
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500663object_storage_group = cfg.OptGroup(name='object-storage',
664 title='Object Storage Service Options')
Attila Fazekasa23f5002012-10-23 19:32:45 +0200665
DennyZhang1e71b612013-09-26 12:35:40 -0500666ObjectStoreGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500667 cfg.StrOpt('catalog_type',
668 default='object-store',
669 help="Catalog type of the Object-Storage service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900670 cfg.StrOpt('region',
671 default='',
672 help="The object-storage region name to use. If empty, the "
673 "value of identity.region is used instead. If no such "
674 "region is found in the service catalog, the first found "
675 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000676 cfg.StrOpt('endpoint_type',
677 default='publicURL',
678 choices=['public', 'admin', 'internal',
679 'publicURL', 'adminURL', 'internalURL'],
680 help="The endpoint type to use for the object-store service."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000681 cfg.IntOpt('container_sync_timeout',
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900682 default=600,
Fabien Boucher2178d312013-12-31 15:38:57 +0100683 help="Number of seconds to time on waiting for a container "
nayna-patelb4989b32013-01-09 06:25:13 +0000684 "to container synchronization complete."),
Matthew Treinishf319a732013-10-24 21:39:24 +0000685 cfg.IntOpt('container_sync_interval',
nayna-patelb4989b32013-01-09 06:25:13 +0000686 default=5,
Fabien Boucher2178d312013-12-31 15:38:57 +0100687 help="Number of seconds to wait while looping to check the "
nayna-patelb4989b32013-01-09 06:25:13 +0000688 "status of a container to container synchronization"),
Matthew Treinish3fdb80c2013-08-15 11:13:19 -0400689 cfg.StrOpt('operator_role',
690 default='Member',
691 help="Role to add to users created for swift tests to "
692 "enable creating containers"),
Matthew Treinish998c91d2014-03-01 12:39:49 -0500693 cfg.StrOpt('reseller_admin_role',
694 default='ResellerAdmin',
695 help="User role that has reseller admin"),
Daisuke Morita1ac3ee02014-08-25 12:59:18 +0900696 cfg.StrOpt('realm_name',
697 default='realm1',
698 help="Name of sync realm. A sync realm is a set of clusters "
699 "that have agreed to allow container syncing with each "
700 "other. Set the same realm name as Swift's "
701 "container-sync-realms.conf"),
702 cfg.StrOpt('cluster_name',
703 default='name1',
704 help="One name of cluster which is set in the realm whose name "
705 "is set in 'realm_name' item in this file. Set the "
706 "same cluster name as Swift's container-sync-realms.conf"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500707]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200708
Matthew Treinishd5c96022013-10-17 21:51:23 +0000709object_storage_feature_group = cfg.OptGroup(
710 name='object-storage-feature-enabled',
711 title='Enabled object-storage features')
712
713ObjectStoreFeaturesGroup = [
Matthew Treinish20345382013-12-13 17:04:23 +0000714 cfg.ListOpt('discoverable_apis',
715 default=['all'],
716 help="A list of the enabled optional discoverable apis. "
717 "A single entry, all, indicates that all of these "
718 "features are expected to be enabled"),
Daisuke Morita20a183f2014-08-25 14:43:36 +0900719 cfg.BoolOpt('container_sync',
720 default=True,
721 help="Execute (old style) container-sync tests"),
722 cfg.BoolOpt('object_versioning',
723 default=True,
724 help="Execute object-versioning tests"),
725 cfg.BoolOpt('discoverability',
726 default=True,
727 help="Execute discoverability tests"),
Matthew Treinishd5c96022013-10-17 21:51:23 +0000728]
729
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800730database_group = cfg.OptGroup(name='database',
731 title='Database Service Options')
732
733DatabaseGroup = [
734 cfg.StrOpt('catalog_type',
735 default='database',
736 help="Catalog type of the Database service."),
737 cfg.StrOpt('db_flavor_ref',
738 default="1",
739 help="Valid primary flavor to use in database tests."),
Peter Stachowski320f9c72014-04-21 16:13:23 -0400740 cfg.StrOpt('db_current_version',
741 default="v1.0",
742 help="Current database version to use in database tests."),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -0800743]
Attila Fazekasa23f5002012-10-23 19:32:45 +0200744
Steve Bakerc60e4e32013-05-06 15:22:41 +1200745orchestration_group = cfg.OptGroup(name='orchestration',
746 title='Orchestration Service Options')
747
748OrchestrationGroup = [
749 cfg.StrOpt('catalog_type',
750 default='orchestration',
751 help="Catalog type of the Orchestration service."),
Arata Notsu8f440392013-09-13 16:14:20 +0900752 cfg.StrOpt('region',
753 default='',
754 help="The orchestration region name to use. If empty, the "
755 "value of identity.region is used instead. If no such "
756 "region is found in the service catalog, the first found "
757 "one is used."),
JordanP5d29b2c2013-12-18 13:56:03 +0000758 cfg.StrOpt('endpoint_type',
759 default='publicURL',
760 choices=['public', 'admin', 'internal',
761 'publicURL', 'adminURL', 'internalURL'],
762 help="The endpoint type to use for the orchestration service."),
Matthew Treinishdb9721d2015-03-18 14:21:28 -0400763 cfg.StrOpt('stack_owner_role', default='heat_stack_owner',
764 help='Role required for users to be able to manage stacks'),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200765 cfg.IntOpt('build_interval',
766 default=1,
767 help="Time in seconds between build status checks."),
768 cfg.IntOpt('build_timeout',
Matthew Treinisha2dfd492014-04-15 11:15:34 -0400769 default=1200,
Steve Bakerc60e4e32013-05-06 15:22:41 +1200770 help="Timeout in seconds to wait for a stack to build."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200771 cfg.StrOpt('instance_type',
Steve Baker9e86b832013-05-22 15:40:28 +1200772 default='m1.micro',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200773 help="Instance type for tests. Needs to be big enough for a "
774 "full OS plus the test workload"),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200775 cfg.StrOpt('keypair_name',
Steve Bakerc60e4e32013-05-06 15:22:41 +1200776 help="Name of existing keypair to launch servers with."),
Clint Byrum71f27632013-09-09 11:41:32 -0700777 cfg.IntOpt('max_template_size',
Joe Gordon0e51b222013-10-24 14:11:10 +0100778 default=524288,
Clint Byrum71f27632013-09-09 11:41:32 -0700779 help="Value must match heat configuration of the same name."),
Steven Hardyfdc6bd72014-03-21 16:56:04 +0000780 cfg.IntOpt('max_resources_per_stack',
781 default=1000,
782 help="Value must match heat configuration of the same name."),
Steve Bakerc60e4e32013-05-06 15:22:41 +1200783]
784
785
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100786telemetry_group = cfg.OptGroup(name='telemetry',
787 title='Telemetry Service Options')
788
789TelemetryGroup = [
790 cfg.StrOpt('catalog_type',
791 default='metering',
792 help="Catalog type of the Telemetry service."),
JordanPfc62c902014-02-26 14:47:28 +0000793 cfg.StrOpt('endpoint_type',
794 default='publicURL',
795 choices=['public', 'admin', 'internal',
796 'publicURL', 'adminURL', 'internalURL'],
797 help="The endpoint type to use for the telemetry service."),
Vadim Rovachev7bcea352013-12-26 15:56:17 +0400798 cfg.BoolOpt('too_slow_to_test',
799 default=True,
800 help="This variable is used as flag to enable "
801 "notification tests")
Yassine Lamgarchalb158d412013-12-27 19:29:42 +0100802]
803
804
Julie Pichond1017642013-07-24 16:37:23 +0100805dashboard_group = cfg.OptGroup(name="dashboard",
806 title="Dashboard options")
807
808DashboardGroup = [
809 cfg.StrOpt('dashboard_url',
810 default='http://localhost/',
811 help="Where the dashboard can be found"),
812 cfg.StrOpt('login_url',
813 default='http://localhost/auth/login/',
814 help="Login page for the dashboard"),
815]
816
817
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400818data_processing_group = cfg.OptGroup(name="data_processing",
819 title="Data Processing options")
820
821DataProcessingGroup = [
822 cfg.StrOpt('catalog_type',
823 default='data_processing',
JordanPfc62c902014-02-26 14:47:28 +0000824 help="Catalog type of the data processing service."),
825 cfg.StrOpt('endpoint_type',
826 default='publicURL',
827 choices=['public', 'admin', 'internal',
828 'publicURL', 'adminURL', 'internalURL'],
829 help="The endpoint type to use for the data processing "
830 "service."),
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +0400831]
832
833
Luigi Toscano14d172d2015-01-23 16:37:47 +0100834data_processing_feature_group = cfg.OptGroup(
835 name="data_processing-feature-enabled",
836 title="Enabled Data Processing features")
837
838DataProcessingFeaturesGroup = [
839 cfg.ListOpt('plugins',
840 default=["vanilla", "hdp"],
841 help="List of enabled data processing plugins")
842]
843
844
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500845boto_group = cfg.OptGroup(name='boto',
846 title='EC2/S3 options')
DennyZhang1e71b612013-09-26 12:35:40 -0500847BotoGroup = [
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500848 cfg.StrOpt('ec2_url',
849 default="http://localhost:8773/services/Cloud",
850 help="EC2 URL"),
851 cfg.StrOpt('s3_url',
852 default="http://localhost:8080",
853 help="S3 URL"),
854 cfg.StrOpt('aws_secret',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500855 help="AWS Secret Key",
856 secret=True),
857 cfg.StrOpt('aws_access',
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500858 help="AWS Access Key"),
Attila Fazekas27dd92e2014-02-21 14:49:40 +0100859 cfg.StrOpt('aws_zone',
860 default="nova",
861 help="AWS Zone for EC2 tests"),
Matthew Treinish39e48ef2012-12-21 13:36:15 -0500862 cfg.StrOpt('s3_materials_path',
863 default="/opt/stack/devstack/files/images/"
864 "s3-materials/cirros-0.3.0",
865 help="S3 Materials Path"),
866 cfg.StrOpt('ari_manifest',
867 default="cirros-0.3.0-x86_64-initrd.manifest.xml",
868 help="ARI Ramdisk Image manifest"),
869 cfg.StrOpt('ami_manifest',
870 default="cirros-0.3.0-x86_64-blank.img.manifest.xml",
871 help="AMI Machine Image manifest"),
872 cfg.StrOpt('aki_manifest',
873 default="cirros-0.3.0-x86_64-vmlinuz.manifest.xml",
874 help="AKI Kernel Image manifest"),
875 cfg.StrOpt('instance_type',
876 default="m1.tiny",
877 help="Instance type"),
878 cfg.IntOpt('http_socket_timeout',
879 default=3,
880 help="boto Http socket timeout"),
881 cfg.IntOpt('num_retries',
882 default=1,
883 help="boto num_retries on error"),
884 cfg.IntOpt('build_timeout',
885 default=60,
886 help="Status Change Timeout"),
887 cfg.IntOpt('build_interval',
888 default=1,
889 help="Status Change Test Interval"),
890]
Attila Fazekasf7f2d932012-12-13 09:14:38 +0100891
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500892stress_group = cfg.OptGroup(name='stress', title='Stress Test Options')
893
894StressGroup = [
895 cfg.StrOpt('nova_logdir',
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500896 help='Directory containing log files on the compute nodes'),
897 cfg.IntOpt('max_instances',
898 default=16,
899 help='Maximum number of instances to create during test.'),
900 cfg.StrOpt('controller',
David Kranzb9d97502013-05-01 15:55:04 -0400901 help='Controller host.'),
902 # new stress options
903 cfg.StrOpt('target_controller',
David Kranzb9d97502013-05-01 15:55:04 -0400904 help='Controller host.'),
905 cfg.StrOpt('target_ssh_user',
David Kranzb9d97502013-05-01 15:55:04 -0400906 help='ssh user.'),
907 cfg.StrOpt('target_private_key_path',
David Kranzb9d97502013-05-01 15:55:04 -0400908 help='Path to private key.'),
909 cfg.StrOpt('target_logfiles',
David Kranzb9d97502013-05-01 15:55:04 -0400910 help='regexp for list of log files.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000911 cfg.IntOpt('log_check_interval',
David Kranzb9d97502013-05-01 15:55:04 -0400912 default=60,
Marc Koderer32221b8e2013-08-23 13:57:50 +0200913 help='time (in seconds) between log file error checks.'),
Matthew Treinishf319a732013-10-24 21:39:24 +0000914 cfg.IntOpt('default_thread_number_per_action',
Marc Koderer32221b8e2013-08-23 13:57:50 +0200915 default=4,
Julien Leloup04d40f72014-01-28 11:17:18 +0100916 help='The number of threads created while stress test.'),
917 cfg.BoolOpt('leave_dirty_stack',
918 default=False,
919 help='Prevent the cleaning (tearDownClass()) between'
920 ' each stress test run if an exception occurs'
Julien Leloupa5ee5422014-02-13 14:29:02 +0100921 ' during this run.'),
922 cfg.BoolOpt('full_clean_stack',
923 default=False,
924 help='Allows a full cleaning process after a stress test.'
925 ' Caution : this cleanup will remove every objects of'
926 ' every tenant.')
Matthew Treinish615ea6a2013-02-25 17:26:59 -0500927]
928
929
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900930scenario_group = cfg.OptGroup(name='scenario', title='Scenario Test Options')
931
932ScenarioGroup = [
933 cfg.StrOpt('img_dir',
934 default='/opt/stack/new/devstack/files/images/'
935 'cirros-0.3.1-x86_64-uec',
936 help='Directory containing image files'),
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300937 cfg.StrOpt('img_file', deprecated_name='qcow2_img_file',
Masayuki Igawa4f71bf02014-02-21 14:02:29 +0900938 default='cirros-0.3.1-x86_64-disk.img',
Alessandro Pilottib7c1daa2014-08-16 14:24:13 +0300939 help='Image file name'),
940 cfg.StrOpt('img_disk_format',
941 default='qcow2',
942 help='Image disk format'),
943 cfg.StrOpt('img_container_format',
944 default='bare',
945 help='Image container format'),
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900946 cfg.StrOpt('ami_img_file',
947 default='cirros-0.3.1-x86_64-blank.img',
948 help='AMI image file name'),
949 cfg.StrOpt('ari_img_file',
950 default='cirros-0.3.1-x86_64-initrd',
951 help='ARI image file name'),
952 cfg.StrOpt('aki_img_file',
953 default='cirros-0.3.1-x86_64-vmlinuz',
954 help='AKI image file name'),
955 cfg.StrOpt('ssh_user',
956 default='cirros',
Joe Gordonb5e10cd2013-07-10 15:51:12 +0000957 help='ssh username for the image file'),
958 cfg.IntOpt(
959 'large_ops_number',
960 default=0,
961 help="specifies how many resources to request at once. Used "
Yair Fried413bf2d2014-11-19 17:07:11 +0200962 "for large operations testing."),
963 # TODO(yfried): add support for dhcpcd
964 cfg.StrOpt('dhcp_client',
965 default='udhcpc',
966 choices=["udhcpc", "dhclient"],
967 help='DHCP client used by images to renew DCHP lease. '
968 'If left empty, update operation will be skipped. '
969 'Supported clients: "udhcpc", "dhclient"')
Masayuki Igawa73d9f3a2013-05-24 10:30:01 +0900970]
971
972
Matthew Treinish4c412922013-07-16 15:27:42 -0400973service_available_group = cfg.OptGroup(name="service_available",
974 title="Available OpenStack Services")
975
976ServiceAvailableGroup = [
977 cfg.BoolOpt('cinder',
978 default=True,
979 help="Whether or not cinder is expected to be available"),
Matthew Treinishfaa340d2013-07-19 16:26:21 -0400980 cfg.BoolOpt('neutron',
981 default=False,
982 help="Whether or not neutron is expected to be available"),
Matthew Treinish853ae442013-07-19 16:36:07 -0400983 cfg.BoolOpt('glance',
984 default=True,
985 help="Whether or not glance is expected to be available"),
Matthew Treinish61e332b2013-07-19 16:42:31 -0400986 cfg.BoolOpt('swift',
987 default=True,
988 help="Whether or not swift is expected to be available"),
Matthew Treinish6b41e242013-07-19 16:49:28 -0400989 cfg.BoolOpt('nova',
990 default=True,
991 help="Whether or not nova is expected to be available"),
Matthew Treinisha9d43882013-07-19 16:54:52 -0400992 cfg.BoolOpt('heat',
993 default=False,
994 help="Whether or not Heat is expected to be available"),
Mehdi Abaakouk8581c0b2013-10-04 10:45:42 +0200995 cfg.BoolOpt('ceilometer',
996 default=True,
997 help="Whether or not Ceilometer is expected to be available"),
Julie Pichond1017642013-07-24 16:37:23 +0100998 cfg.BoolOpt('horizon',
999 default=True,
1000 help="Whether or not Horizon is expected to be available"),
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001001 cfg.BoolOpt('sahara',
Sergey Lukjanovcec6c3f2013-12-10 12:38:21 +04001002 default=False,
Sergey Lukjanov9c95a252014-03-13 23:59:22 +04001003 help="Whether or not Sahara is expected to be available"),
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001004 cfg.BoolOpt('ironic',
1005 default=False,
1006 help="Whether or not Ironic is expected to be available"),
Nikhil Manchandadd6886f2014-03-03 01:58:45 -08001007 cfg.BoolOpt('trove',
1008 default=False,
1009 help="Whether or not Trove is expected to be available"),
Malini Kamalambal8681e922014-08-18 10:10:45 -04001010 cfg.BoolOpt('zaqar',
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -05001011 default=False,
Malini Kamalambal8681e922014-08-18 10:10:45 -04001012 help="Whether or not Zaqar is expected to be available"),
Matthew Treinish4c412922013-07-16 15:27:42 -04001013]
1014
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001015debug_group = cfg.OptGroup(name="debug",
1016 title="Debug System")
1017
1018DebugGroup = [
Sean Daguec522c092014-03-24 10:43:22 -04001019 cfg.StrOpt('trace_requests',
1020 default='',
1021 help="""A regex to determine which requests should be traced.
1022
1023This is a regex to match the caller for rest client requests to be able to
1024selectively trace calls out of specific classes and methods. It largely
1025exists for test development, and is not expected to be used in a real deploy
1026of tempest. This will be matched against the discovered ClassName:method
1027in the test environment.
1028
1029Expected values for this field are:
1030
1031 * ClassName:test_method_name - traces one test_method
1032 * ClassName:setUp(Class) - traces specific setup functions
1033 * ClassName:tearDown(Class) - traces specific teardown functions
1034 * ClassName:_run_cleanups - traces the cleanup functions
1035
1036If nothing is specified, this feature is not enabled. To trace everything
1037specify .* as the regex.
1038""")
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001039]
1040
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001041input_scenario_group = cfg.OptGroup(name="input-scenario",
1042 title="Filters and values for"
1043 " input scenarios")
1044
1045InputScenarioGroup = [
1046 cfg.StrOpt('image_regex',
1047 default='^cirros-0.3.1-x86_64-uec$',
1048 help="Matching images become parameters for scenario tests"),
1049 cfg.StrOpt('flavor_regex',
Andrea Frittoli99901c02014-01-30 18:06:49 +00001050 default='^m1.nano$',
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001051 help="Matching flavors become parameters for scenario tests"),
1052 cfg.StrOpt('non_ssh_image_regex',
1053 default='^.*[Ww]in.*$',
1054 help="SSH verification in tests is skipped"
1055 "for matching images"),
1056 cfg.StrOpt('ssh_user_regex',
Marc Koderer07f5a522015-03-27 15:02:41 +01001057 default="[[\"^.*[Cc]irros.*$\", \"cirros\"]]",
Andrea Frittolif5da28b2013-12-06 07:08:07 +00001058 help="List of user mapped to regex "
1059 "to matching image names."),
1060]
1061
Attila Fazekasaeeeefd2013-08-06 17:01:56 +02001062
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001063baremetal_group = cfg.OptGroup(name='baremetal',
Chris Hoge8f1401b2014-11-19 14:00:37 -08001064 title='Baremetal provisioning service options',
1065 help='When enabling baremetal tests, Nova '
1066 'must be configured to use the Ironic '
1067 'driver. The following paremeters for the '
1068 '[compute] section must be disabled: '
1069 'console_output, interface_attach, '
1070 'live_migration, pause, rescue, resize '
1071 'shelve, snapshot, and suspend')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001072
1073BaremetalGroup = [
1074 cfg.StrOpt('catalog_type',
1075 default='baremetal',
Adam Gandelman4a48a602014-03-20 18:23:18 -07001076 help="Catalog type of the baremetal provisioning service"),
1077 cfg.BoolOpt('driver_enabled',
1078 default=False,
1079 help="Whether the Ironic nova-compute driver is enabled"),
Yuiko Takada1ee1b322014-07-04 09:55:30 +09001080 cfg.StrOpt('driver',
1081 default='fake',
1082 help="Driver name which Ironic uses"),
JordanPfc62c902014-02-26 14:47:28 +00001083 cfg.StrOpt('endpoint_type',
1084 default='publicURL',
1085 choices=['public', 'admin', 'internal',
1086 'publicURL', 'adminURL', 'internalURL'],
1087 help="The endpoint type to use for the baremetal provisioning "
Adam Gandelman4a48a602014-03-20 18:23:18 -07001088 "service"),
1089 cfg.IntOpt('active_timeout',
1090 default=300,
1091 help="Timeout for Ironic node to completely provision"),
1092 cfg.IntOpt('association_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001093 default=30,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001094 help="Timeout for association of Nova instance and Ironic "
1095 "node"),
1096 cfg.IntOpt('power_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001097 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001098 help="Timeout for Ironic power transitions."),
1099 cfg.IntOpt('unprovision_timeout',
Adam Gandelmane42f0922014-06-10 15:26:37 -07001100 default=60,
Adam Gandelman4a48a602014-03-20 18:23:18 -07001101 help="Timeout for unprovisioning an Ironic node.")
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001102]
1103
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001104negative_group = cfg.OptGroup(name='negative', title="Negative Test Options")
1105
1106NegativeGroup = [
1107 cfg.StrOpt('test_generator',
1108 default='tempest.common.' +
1109 'generator.negative_generator.NegativeTestGenerator',
1110 help="Test generator class for all negative tests"),
1111]
1112
Jon Grimm270bd7f2014-08-05 18:11:29 +00001113_opts = [
1114 (auth_group, AuthGroup),
1115 (compute_group, ComputeGroup),
1116 (compute_features_group, ComputeFeaturesGroup),
1117 (identity_group, IdentityGroup),
1118 (identity_feature_group, IdentityFeatureGroup),
1119 (image_group, ImageGroup),
1120 (image_feature_group, ImageFeaturesGroup),
1121 (network_group, NetworkGroup),
1122 (network_feature_group, NetworkFeaturesGroup),
1123 (messaging_group, MessagingGroup),
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001124 (validation_group, ValidationGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001125 (volume_group, VolumeGroup),
1126 (volume_feature_group, VolumeFeaturesGroup),
1127 (object_storage_group, ObjectStoreGroup),
1128 (object_storage_feature_group, ObjectStoreFeaturesGroup),
1129 (database_group, DatabaseGroup),
1130 (orchestration_group, OrchestrationGroup),
1131 (telemetry_group, TelemetryGroup),
1132 (dashboard_group, DashboardGroup),
1133 (data_processing_group, DataProcessingGroup),
Luigi Toscano14d172d2015-01-23 16:37:47 +01001134 (data_processing_feature_group, DataProcessingFeaturesGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001135 (boto_group, BotoGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001136 (stress_group, StressGroup),
1137 (scenario_group, ScenarioGroup),
1138 (service_available_group, ServiceAvailableGroup),
1139 (debug_group, DebugGroup),
1140 (baremetal_group, BaremetalGroup),
1141 (input_scenario_group, InputScenarioGroup),
Jon Grimm270bd7f2014-08-05 18:11:29 +00001142 (negative_group, NegativeGroup)
1143]
1144
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001145
Matthew Treinish43b296a2014-02-28 15:23:00 -05001146def register_opts():
Jon Grimm270bd7f2014-08-05 18:11:29 +00001147 for g, o in _opts:
Maru Newbyf440c292015-03-31 15:58:47 +00001148 register_opt_group(_CONF, g, o)
Jon Grimm270bd7f2014-08-05 18:11:29 +00001149
1150
1151def list_opts():
1152 """Return a list of oslo.config options available.
1153
1154 The purpose of this is to allow tools like the Oslo sample config file
1155 generator to discover the options exposed to users.
1156 """
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001157 return [(g.name, o) for g, o in _opts]
Matthew Treinish43b296a2014-02-28 15:23:00 -05001158
1159
Sean Dague3b9b1f32013-12-20 17:04:54 -05001160# this should never be called outside of this class
1161class TempestConfigPrivate(object):
Daryl Walleck1465d612011-11-02 02:22:15 -05001162 """Provides OpenStack configuration information."""
1163
Brian Waldon738cd632011-12-12 18:45:09 -05001164 DEFAULT_CONFIG_DIR = os.path.join(
Zhongyue Luoa1343de2013-01-04 16:21:35 +08001165 os.path.abspath(os.path.dirname(os.path.dirname(__file__))),
Brian Waldon738cd632011-12-12 18:45:09 -05001166 "etc")
Daryl Walleck1465d612011-11-02 02:22:15 -05001167
Brian Waldon738cd632011-12-12 18:45:09 -05001168 DEFAULT_CONFIG_FILE = "tempest.conf"
1169
Andrea Frittolia96ee212014-08-15 18:34:20 +01001170 def __getattr__(self, attr):
1171 # Handles config options from the default group
Maru Newbyf440c292015-03-31 15:58:47 +00001172 return getattr(_CONF, attr)
Andrea Frittolia96ee212014-08-15 18:34:20 +01001173
Matthew Treinish43b296a2014-02-28 15:23:00 -05001174 def _set_attrs(self):
Maru Newbyf440c292015-03-31 15:58:47 +00001175 self.auth = _CONF.auth
1176 self.compute = _CONF.compute
1177 self.compute_feature_enabled = _CONF['compute-feature-enabled']
1178 self.identity = _CONF.identity
1179 self.identity_feature_enabled = _CONF['identity-feature-enabled']
1180 self.image = _CONF.image
1181 self.image_feature_enabled = _CONF['image-feature-enabled']
1182 self.network = _CONF.network
1183 self.network_feature_enabled = _CONF['network-feature-enabled']
Joseph Lanoux2f81cc12015-01-12 16:01:20 +00001184 self.validation = _CONF.validation
Maru Newbyf440c292015-03-31 15:58:47 +00001185 self.volume = _CONF.volume
1186 self.volume_feature_enabled = _CONF['volume-feature-enabled']
1187 self.object_storage = _CONF['object-storage']
1188 self.object_storage_feature_enabled = _CONF[
Matthew Treinishd5c96022013-10-17 21:51:23 +00001189 'object-storage-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001190 self.database = _CONF.database
1191 self.orchestration = _CONF.orchestration
1192 self.messaging = _CONF.messaging
1193 self.telemetry = _CONF.telemetry
1194 self.dashboard = _CONF.dashboard
1195 self.data_processing = _CONF.data_processing
1196 self.data_processing_feature_enabled = _CONF[
Luigi Toscano14d172d2015-01-23 16:37:47 +01001197 'data_processing-feature-enabled']
Maru Newbyf440c292015-03-31 15:58:47 +00001198 self.boto = _CONF.boto
1199 self.stress = _CONF.stress
1200 self.scenario = _CONF.scenario
1201 self.service_available = _CONF.service_available
1202 self.debug = _CONF.debug
1203 self.baremetal = _CONF.baremetal
1204 self.input_scenario = _CONF['input-scenario']
Maru Newbyf440c292015-03-31 15:58:47 +00001205 self.negative = _CONF.negative
1206 _CONF.set_default('domain_name', self.identity.admin_domain_name,
1207 group='identity')
1208 _CONF.set_default('alt_domain_name', self.identity.admin_domain_name,
1209 group='identity')
Sean Dague86bd8422013-12-20 09:56:44 -05001210
Joe Gordon28a84ae2014-07-17 15:38:28 +00001211 def __init__(self, parse_conf=True, config_path=None):
Matthew Treinish43b296a2014-02-28 15:23:00 -05001212 """Initialize a configuration from a conf directory and conf file."""
1213 super(TempestConfigPrivate, self).__init__()
1214 config_files = []
1215 failsafe_path = "/etc/tempest/" + self.DEFAULT_CONFIG_FILE
1216
Joe Gordon28a84ae2014-07-17 15:38:28 +00001217 if config_path:
1218 path = config_path
1219 else:
1220 # Environment variables override defaults...
1221 conf_dir = os.environ.get('TEMPEST_CONFIG_DIR',
1222 self.DEFAULT_CONFIG_DIR)
1223 conf_file = os.environ.get('TEMPEST_CONFIG',
1224 self.DEFAULT_CONFIG_FILE)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001225
Joe Gordon28a84ae2014-07-17 15:38:28 +00001226 path = os.path.join(conf_dir, conf_file)
Matthew Treinish43b296a2014-02-28 15:23:00 -05001227
1228 if not os.path.isfile(path):
1229 path = failsafe_path
1230
1231 # only parse the config file if we expect one to exist. This is needed
1232 # to remove an issue with the config file up to date checker.
1233 if parse_conf:
1234 config_files.append(path)
Maru Newbyf440c292015-03-31 15:58:47 +00001235 logging.register_options(_CONF)
Matthew Treinish5440a402014-10-02 14:36:16 -04001236 if os.path.isfile(path):
Maru Newbyf440c292015-03-31 15:58:47 +00001237 _CONF([], project='tempest', default_config_files=config_files)
Matthew Treinish5440a402014-10-02 14:36:16 -04001238 else:
Maru Newbyf440c292015-03-31 15:58:47 +00001239 _CONF([], project='tempest')
1240 logging.setup(_CONF, 'tempest')
Matthew Treinish43b296a2014-02-28 15:23:00 -05001241 LOG = logging.getLogger('tempest')
1242 LOG.info("Using tempest config file %s" % path)
1243 register_opts()
1244 self._set_attrs()
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001245 if parse_conf:
Maru Newbyf440c292015-03-31 15:58:47 +00001246 _CONF.log_opt_values(LOG, std_logging.DEBUG)
Masayuki Igawa9ec4cd82014-02-05 15:04:16 +09001247
Sean Dague86bd8422013-12-20 09:56:44 -05001248
1249class TempestConfigProxy(object):
1250 _config = None
Joe Gordon28a84ae2014-07-17 15:38:28 +00001251 _path = None
Sean Dague86bd8422013-12-20 09:56:44 -05001252
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001253 _extra_log_defaults = [
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001254 ('paramiko.transport', std_logging.INFO),
1255 ('requests.packages.urllib3.connectionpool', std_logging.WARN),
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001256 ]
1257
1258 def _fix_log_levels(self):
1259 """Tweak the oslo log defaults."""
Doug Hellmann583ce2c2015-03-11 14:55:46 +00001260 for name, level in self._extra_log_defaults:
1261 std_logging.getLogger(name).setLevel(level)
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001262
Sean Dague86bd8422013-12-20 09:56:44 -05001263 def __getattr__(self, attr):
1264 if not self._config:
Sean Daguedb6ac6c2014-06-06 16:52:44 -04001265 self._fix_log_levels()
Joe Gordon28a84ae2014-07-17 15:38:28 +00001266 self._config = TempestConfigPrivate(config_path=self._path)
Sean Dague86bd8422013-12-20 09:56:44 -05001267
1268 return getattr(self._config, attr)
1269
Joe Gordon28a84ae2014-07-17 15:38:28 +00001270 def set_config_path(self, path):
1271 self._path = path
1272
Sean Dague86bd8422013-12-20 09:56:44 -05001273
1274CONF = TempestConfigProxy()