blob: d844af1905a63a4f4029345f96cccdd87e90aea8 [file] [log] [blame]
Mike Tureka7cb4be2016-01-18 19:35:29 +00001# Copyright 2015 NEC Corporation
2# All Rights Reserved.
3#
Ameya Raut64ad5572022-01-27 11:26:27 +00004# Copyright (c) 2022 Dell Inc. or its subsidiaries.
5#
Mike Tureka7cb4be2016-01-18 19:35:29 +00006# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
18from oslo_config import cfg
19
20from tempest import config # noqa
21
22
Julia Kreger3a07c4d2021-06-22 10:27:56 -070023# NOTE(TheJulia): The following options are loaded into a tempest
24# plugin configuration option via plugin.py.
Dmitry Tantsurb609cea2017-12-12 08:06:44 +010025ironic_service_option = cfg.BoolOpt('ironic',
26 default=False,
27 help='Whether or not ironic is expected '
28 'to be available')
Jim Rollenhagen1c11bdf2016-11-29 16:57:30 -050029
John L. Villalovos25be1172017-12-13 16:08:34 -080030inspector_service_option = cfg.BoolOpt("ironic_inspector",
31 default=False,
Dmitry Tantsurb609cea2017-12-12 08:06:44 +010032 help="Whether or not ironic-inspector "
33 "is expected to be available")
Jim Rollenhagen1c11bdf2016-11-29 16:57:30 -050034
Julia Kreger3a07c4d2021-06-22 10:27:56 -070035ironic_scope_enforcement = cfg.BoolOpt('ironic',
36 default=False,
37 help='Wheter or not ironic is '
38 'exepcted to enforce auth '
39 'scope.')
40
41inspector_scope_enforcement = cfg.BoolOpt('ironic_inspector',
42 default=False,
43 help='Whether or not '
44 'ironic-inspector is expected '
45 'to enforce auth scope.')
46
Mike Tureka7cb4be2016-01-18 19:35:29 +000047baremetal_group = cfg.OptGroup(name='baremetal',
48 title='Baremetal provisioning service options',
49 help='When enabling baremetal tests, Nova '
50 'must be configured to use the Ironic '
51 'driver. The following parameters for the '
52 '[compute] section must be disabled: '
53 'console_output, interface_attach, '
54 'live_migration, pause, rescue, resize, '
55 'shelve, snapshot, and suspend')
56
Julia Kreger3a07c4d2021-06-22 10:27:56 -070057# The bulk of the embedded configuration is below.
58
Anton Arefiev6dc82792016-08-03 11:50:49 +030059baremetal_introspection_group = cfg.OptGroup(
60 name="baremetal_introspection",
61 title="Baremetal introspection service options",
62 help="When enabling baremetal introspection tests,"
63 "Ironic must be configured.")
64
Vasyl Saienkof46b9fa2017-02-23 13:06:56 -050065baremetal_features_group = cfg.OptGroup(
66 name='baremetal_feature_enabled',
67 title="Enabled Baremetal Service Features")
68
Mike Tureka7cb4be2016-01-18 19:35:29 +000069BaremetalGroup = [
Thiago Paivaa7760932016-08-15 15:23:30 -030070 cfg.StrOpt('catalog_type',
71 default='baremetal',
72 help="Catalog type of the baremetal provisioning service"),
73 cfg.StrOpt('driver',
Iury Gregory Melo Ferreira4569ada2020-03-09 16:52:09 +010074 default='fake-hardware',
Dmitry Tantsur893b1a92018-04-26 16:12:45 +020075 help="Driver name to use for API tests"),
Thiago Paivaa7760932016-08-15 15:23:30 -030076 cfg.StrOpt('endpoint_type',
77 default='publicURL',
78 choices=['public', 'admin', 'internal',
79 'publicURL', 'adminURL', 'internalURL'],
80 help="The endpoint type to use for the baremetal provisioning"
81 " service"),
Kamlesh Chauvhan42656a02022-05-12 14:11:14 +000082 cfg.StrOpt('root_device_name',
83 default='/dev/md0',
84 help="Root device name to be used for node deployment"),
Mike Tureka7cb4be2016-01-18 19:35:29 +000085 cfg.IntOpt('deploywait_timeout',
86 default=15,
87 help="Timeout for Ironic node to reach the "
88 "wait-callback state after powering on."),
Thiago Paivaa7760932016-08-15 15:23:30 -030089 cfg.IntOpt('active_timeout',
90 default=300,
91 help="Timeout for Ironic node to completely provision"),
92 cfg.IntOpt('association_timeout',
93 default=30,
94 help="Timeout for association of Nova instance and Ironic "
95 "node"),
96 cfg.IntOpt('power_timeout',
97 default=60,
98 help="Timeout for Ironic power transitions."),
99 cfg.IntOpt('unprovision_timeout',
100 default=300,
101 help="Timeout for unprovisioning an Ironic node. "
102 "Takes longer since Kilo as Ironic performs an extra "
103 "step in Node cleaning."),
Dao Cong Tien4108a352018-01-26 09:38:46 +0700104 cfg.IntOpt('rescue_timeout',
105 default=300,
106 help="Timeout for rescuing an Ironic node."),
107 cfg.IntOpt('unrescue_timeout',
108 default=300,
109 help="Timeout for unrescuing an Ironic node."),
Yuiko Takadaff785002015-12-17 15:56:42 +0900110 cfg.StrOpt('min_microversion',
Yuiko Takadaff785002015-12-17 15:56:42 +0900111 help="Lower version of the test target microversion range. "
112 "The format is 'X.Y', where 'X' and 'Y' are int values. "
113 "Tempest selects tests based on the range between "
114 "min_microversion and max_microversion. "
115 "If both values are None, Tempest avoids tests which "
116 "require a microversion."),
117 cfg.StrOpt('max_microversion',
118 default='latest',
119 help="Upper version of the test target microversion range. "
120 "The format is 'X.Y', where 'X' and 'Y' are int values. "
121 "Tempest selects tests based on the range between "
122 "min_microversion and max_microversion. "
123 "If both values are None, Tempest avoids tests which "
124 "require a microversion."),
Yuriy Yekovenkoeb612d92016-01-18 17:49:47 +0200125 cfg.BoolOpt('use_provision_network',
126 default=False,
Vasyl Saienko4ddbeec2017-01-20 16:26:04 +0000127 help="Whether the Ironic/Neutron tenant isolation is enabled"),
128 cfg.StrOpt('whole_disk_image_ref',
129 help="UUID of the wholedisk image to use in the tests."),
Vasyl Saienkof46b9fa2017-02-23 13:06:56 -0500130 cfg.StrOpt('whole_disk_image_url',
131 help="An http link to the wholedisk image to use in the "
132 "tests."),
133 cfg.StrOpt('whole_disk_image_checksum',
134 help="An MD5 checksum of the image."),
Vasyl Saienko4ddbeec2017-01-20 16:26:04 +0000135 cfg.StrOpt('partition_image_ref',
136 help="UUID of the partitioned image to use in the tests."),
Julia Kregerff9f8742020-06-17 13:47:34 -0700137 cfg.StrOpt('ramdisk_iso_image_ref',
138 help=("UUID (or url) of an ISO image for the ramdisk boot "
139 "tests.")),
Kamlesh Chauvhan42656a02022-05-12 14:11:14 +0000140 cfg.StrOpt('storage_inventory_file',
141 help="Path to storage inventory file for RAID cleaning tests."),
Kamlesh Chauvhan78562052022-09-03 06:22:08 +0000142 cfg.StrOpt('export_location',
143 help="Export config location for configuration molds."),
144 cfg.StrOpt('import_location',
145 help="Import config location for configuration molds."),
146 cfg.StrOpt('rollback_import_location',
147 help="Rollback import config location for configuration "
148 "molds. Optional. If not provided, rollback is skipped."),
Vasyl Saienko4ddbeec2017-01-20 16:26:04 +0000149 cfg.ListOpt('enabled_drivers',
150 default=['fake', 'pxe_ipmitool', 'agent_ipmitool'],
151 help="List of Ironic enabled drivers."),
152 cfg.ListOpt('enabled_hardware_types',
153 default=['ipmi'],
154 help="List of Ironic enabled hardware types."),
Yolanda Roblaeef49ea2018-05-15 12:54:58 +0200155 cfg.ListOpt('enabled_bios_interfaces',
156 default=['fake'],
157 help="List of Ironic enabled bios interfaces."),
Pavlo Shchelokovskyy12e62752017-12-21 16:11:28 +0000158 cfg.ListOpt('enabled_deploy_interfaces',
159 default=['iscsi', 'direct'],
160 help="List of Ironic enabled deploy interfaces."),
Dao Cong Tien4108a352018-01-26 09:38:46 +0700161 cfg.ListOpt('enabled_rescue_interfaces',
162 default=['no-rescue'],
163 help="List of Ironic enabled rescue interfaces."),
ankitbf770e52018-01-19 07:39:01 +0000164 cfg.ListOpt('enabled_boot_interfaces',
165 default=['fake', 'pxe'],
166 help="List of Ironic enabled boot interfaces."),
Dmitry Tantsur65abaca2019-08-07 11:07:48 +0200167 cfg.ListOpt('enabled_raid_interfaces',
168 default=['no-raid', 'agent'],
169 help="List of Ironic enabled RAID interfaces."),
Ameya Raut64ad5572022-01-27 11:26:27 +0000170 cfg.ListOpt('enabled_management_interfaces',
171 default=['fake', 'ipmitool', 'noop'],
172 help="List of Ironic enabled management interfaces."),
173 cfg.ListOpt('enabled_power_interfaces',
174 default=['fake', 'ipmitool'],
175 help="List of Ironic enabled power interfaces."),
Dao Cong Tiend6ce6672017-12-18 19:04:48 +0700176 cfg.StrOpt('default_rescue_interface',
177 help="Ironic default rescue interface."),
Kamlesh Chauvhan853164a2022-08-18 10:42:42 +0000178 cfg.StrOpt('firmware_image_url',
179 help="Image URL of firmware image file supported by "
180 "update_firmware clean step."),
181 cfg.StrOpt('firmware_image_checksum',
182 help="SHA1 checksum of firmware image file."),
183 cfg.StrOpt('firmware_rollback_image_url',
184 help="Image URL of firmware update cleaning step's "
185 "rollback image. Optional. If not provided, "
186 "rollback is skipped."),
187 cfg.StrOpt('firmware_rollback_image_checksum',
188 help="SHA1 checksum of firmware rollback image file. "
189 "This is required if firmware_rollback_image_url is set."),
Vasyl Saienko4ddbeec2017-01-20 16:26:04 +0000190 cfg.IntOpt('adjusted_root_disk_size_gb',
191 min=0,
192 help="Ironic adjusted disk size to use in the standalone tests "
193 "as instance_info/root_gb value."),
Sam Bettsf31abcc2018-02-06 17:34:08 +0000194 cfg.IntOpt('available_nodes', min=0, default=None,
195 help="The number of baremetal hosts available to use for "
Julia Kregercd85f202019-08-26 14:48:17 -0400196 "the tests."),
197 cfg.BoolOpt('partition_netboot',
198 default=True,
199 help="Treat partition images as netbooted as opposed to "
200 "attempting to populate a boot loader. IF cirros is "
201 "being used, this option should be set to True as "
202 "it lacks the needed components to make it locally "
203 "from a partition image."),
Iury Gregory Melo Ferreirad180a3e2020-06-16 18:17:44 +0200204 cfg.StrOpt('boot_mode',
205 default='bios',
206 choices=['bios', 'uefi'],
207 help="The desired boot_mode to be used on testing nodes."),
Dmitry Tantsurfd43dcc2022-02-01 20:19:36 +0100208 cfg.StrOpt('default_boot_option',
209 # No good default here, we need to actually set it.
210 help="The default boot option the testing nodes are using."),
Mike Tureka7cb4be2016-01-18 19:35:29 +0000211]
Vasyl Saienkof46b9fa2017-02-23 13:06:56 -0500212
213BaremetalFeaturesGroup = [
214 cfg.BoolOpt('ipxe_enabled',
215 default=True,
216 help="Defines if IPXE is enabled"),
Dmitry Tantsur52ca0092019-07-23 15:09:09 +0200217 cfg.BoolOpt('adoption',
218 # Defaults to False since it's a destructive operation AND it
219 # requires the plugin to be able to read ipmi_password.
220 default=False,
221 help="Defines if adoption is enabled"),
Dmitry Tantsur65abaca2019-08-07 11:07:48 +0200222 cfg.BoolOpt('software_raid',
223 default=False,
224 help="Defines if software RAID is enabled (available "
225 "starting with Train). Requires at least two disks "
226 "on testing nodes."),
Dmitry Tantsur0cc7aa92020-05-07 12:01:56 +0200227 cfg.BoolOpt('deploy_time_raid',
228 default=False,
229 help="Defines if in-band RAID can be built in deploy time "
230 "(possible starting with Victoria)."),
Vasyl Saienkof46b9fa2017-02-23 13:06:56 -0500231]
Dmitry Tantsurb609cea2017-12-12 08:06:44 +0100232
Anton Arefiev6dc82792016-08-03 11:50:49 +0300233BaremetalIntrospectionGroup = [
234 cfg.StrOpt('catalog_type',
235 default='baremetal-introspection',
236 help="Catalog type of the baremetal provisioning service"),
237 cfg.StrOpt('endpoint_type',
238 default='publicURL',
239 choices=['public', 'admin', 'internal',
240 'publicURL', 'adminURL', 'internalURL'],
241 help="The endpoint type to use for the baremetal introspection"
242 " service"),
243 cfg.IntOpt('introspection_sleep',
244 default=30,
245 help="Introspection sleep before check status"),
246 cfg.IntOpt('introspection_timeout',
247 default=600,
248 help="Introspection time out"),
Dmitry Tantsurdeab6ec2019-10-18 17:29:52 +0200249 cfg.IntOpt('introspection_start_timeout',
250 default=90,
251 help="Timeout to start introspection"),
Anton Arefiev6dc82792016-08-03 11:50:49 +0300252 cfg.IntOpt('hypervisor_update_sleep',
253 default=60,
254 help="Time to wait until nova becomes aware of "
255 "bare metal instances"),
256 cfg.IntOpt('hypervisor_update_timeout',
257 default=300,
258 help="Time out for wait until nova becomes aware of "
259 "bare metal instances"),
260 # NOTE(aarefiev): status_check_period default is 60s, but checking
261 # node state takes some time(API call), so races appear here,
262 # 80s would be enough to make one more check.
263 cfg.IntOpt('ironic_sync_timeout',
264 default=80,
265 help="Time it might take for Ironic--Inspector "
266 "sync to happen"),
Anton Arefiev6b003562016-09-13 12:17:29 +0300267 cfg.IntOpt('discovery_timeout',
268 default=300,
269 help="Time to wait until new node would enrolled in "
270 "ironic"),
271 cfg.BoolOpt('auto_discovery_feature',
272 default=False,
273 help="Is the auto-discovery feature enabled. Enroll hook "
274 "should be specified in node_not_found_hook - processing "
275 "section of inspector.conf"),
Dmitry Tantsur39579c62018-03-28 12:46:48 +0200276 cfg.StrOpt('auto_discovery_default_driver',
277 # TODO(dtantsur): change to fake-hardware when Queens is no
278 # longer supported.
279 default='fake',
280 help="The driver expected to be set on newly discovered nodes. "
281 "Only has effect with auto_discovery_feature is True."),
Dmitry Tantsur0812cc72019-03-14 10:56:45 +0100282 cfg.StrOpt('auto_discovery_target_driver',
283 help="The driver to set on the newly discovered nodes. "
284 "Only has effect with auto_discovery_feature is True."),
Dongcan Ye2d992ed2019-05-10 01:55:29 +0000285 cfg.StrOpt('data_store',
Dongcan Ye2d992ed2019-05-10 01:55:29 +0000286 help="The storage backend for storing introspection data."),
Anton Arefiev6dc82792016-08-03 11:50:49 +0300287]