| Mike Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 1 | # Copyright 2015 NEC Corporation | 
 | 2 | # All Rights Reserved. | 
 | 3 | # | 
| Ameya Raut | 64ad557 | 2022-01-27 11:26:27 +0000 | [diff] [blame] | 4 | # Copyright (c) 2022 Dell Inc. or its subsidiaries. | 
 | 5 | # | 
| Mike Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 6 | #    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 |  | 
 | 18 | from oslo_config import cfg | 
 | 19 |  | 
 | 20 | from tempest import config  # noqa | 
 | 21 |  | 
 | 22 |  | 
| Julia Kreger | 3a07c4d | 2021-06-22 10:27:56 -0700 | [diff] [blame] | 23 | # NOTE(TheJulia): The following options are loaded into a tempest | 
 | 24 | # plugin configuration option via plugin.py. | 
| Dmitry Tantsur | b609cea | 2017-12-12 08:06:44 +0100 | [diff] [blame] | 25 | ironic_service_option = cfg.BoolOpt('ironic', | 
 | 26 |                                     default=False, | 
 | 27 |                                     help='Whether or not ironic is expected ' | 
 | 28 |                                     'to be available') | 
| Jim Rollenhagen | 1c11bdf | 2016-11-29 16:57:30 -0500 | [diff] [blame] | 29 |  | 
| John L. Villalovos | 25be117 | 2017-12-13 16:08:34 -0800 | [diff] [blame] | 30 | inspector_service_option = cfg.BoolOpt("ironic_inspector", | 
 | 31 |                                        default=False, | 
| Dmitry Tantsur | b609cea | 2017-12-12 08:06:44 +0100 | [diff] [blame] | 32 |                                        help="Whether or not ironic-inspector " | 
 | 33 |                                        "is expected to be available") | 
| Jim Rollenhagen | 1c11bdf | 2016-11-29 16:57:30 -0500 | [diff] [blame] | 34 |  | 
| Julia Kreger | 3a07c4d | 2021-06-22 10:27:56 -0700 | [diff] [blame] | 35 | ironic_scope_enforcement = cfg.BoolOpt('ironic', | 
 | 36 |                                        default=False, | 
 | 37 |                                        help='Wheter or not ironic is ' | 
 | 38 |                                             'exepcted to enforce auth ' | 
 | 39 |                                             'scope.') | 
 | 40 |  | 
 | 41 | inspector_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 Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 47 | baremetal_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 Kreger | 3a07c4d | 2021-06-22 10:27:56 -0700 | [diff] [blame] | 57 | # The bulk of the embedded configuration is below. | 
 | 58 |  | 
| Anton Arefiev | 6dc8279 | 2016-08-03 11:50:49 +0300 | [diff] [blame] | 59 | baremetal_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 Saienko | f46b9fa | 2017-02-23 13:06:56 -0500 | [diff] [blame] | 65 | baremetal_features_group = cfg.OptGroup( | 
 | 66 |     name='baremetal_feature_enabled', | 
 | 67 |     title="Enabled Baremetal Service Features") | 
 | 68 |  | 
| Mike Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 69 | BaremetalGroup = [ | 
| Thiago Paiva | a776093 | 2016-08-15 15:23:30 -0300 | [diff] [blame] | 70 |     cfg.StrOpt('catalog_type', | 
 | 71 |                default='baremetal', | 
 | 72 |                help="Catalog type of the baremetal provisioning service"), | 
 | 73 |     cfg.StrOpt('driver', | 
| Iury Gregory Melo Ferreira | 4569ada | 2020-03-09 16:52:09 +0100 | [diff] [blame] | 74 |                default='fake-hardware', | 
| Dmitry Tantsur | 893b1a9 | 2018-04-26 16:12:45 +0200 | [diff] [blame] | 75 |                help="Driver name to use for API tests"), | 
| Thiago Paiva | a776093 | 2016-08-15 15:23:30 -0300 | [diff] [blame] | 76 |     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 Chauvhan | 42656a0 | 2022-05-12 14:11:14 +0000 | [diff] [blame] | 82 |     cfg.StrOpt('root_device_name', | 
 | 83 |                default='/dev/md0', | 
 | 84 |                help="Root device name to be used for node deployment"), | 
| Mike Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 85 |     cfg.IntOpt('deploywait_timeout', | 
 | 86 |                default=15, | 
 | 87 |                help="Timeout for Ironic node to reach the " | 
 | 88 |                     "wait-callback state after powering on."), | 
| Thiago Paiva | a776093 | 2016-08-15 15:23:30 -0300 | [diff] [blame] | 89 |     cfg.IntOpt('active_timeout', | 
 | 90 |                default=300, | 
 | 91 |                help="Timeout for Ironic node to completely provision"), | 
| Julia Kreger | 982d177 | 2022-03-30 16:40:44 -0700 | [diff] [blame^] | 92 |     cfg.IntOpt('anaconda_active_timeout', | 
 | 93 |                default=3600, | 
 | 94 |                help="Timeout for Ironic node to completely provision " | 
 | 95 |                     "when using the anaconda deployment interface."), | 
| Thiago Paiva | a776093 | 2016-08-15 15:23:30 -0300 | [diff] [blame] | 96 |     cfg.IntOpt('association_timeout', | 
 | 97 |                default=30, | 
 | 98 |                help="Timeout for association of Nova instance and Ironic " | 
 | 99 |                     "node"), | 
 | 100 |     cfg.IntOpt('power_timeout', | 
 | 101 |                default=60, | 
 | 102 |                help="Timeout for Ironic power transitions."), | 
 | 103 |     cfg.IntOpt('unprovision_timeout', | 
 | 104 |                default=300, | 
 | 105 |                help="Timeout for unprovisioning an Ironic node. " | 
 | 106 |                     "Takes longer since Kilo as Ironic performs an extra " | 
 | 107 |                     "step in Node cleaning."), | 
| Dao Cong Tien | 4108a35 | 2018-01-26 09:38:46 +0700 | [diff] [blame] | 108 |     cfg.IntOpt('rescue_timeout', | 
 | 109 |                default=300, | 
 | 110 |                help="Timeout for rescuing an Ironic node."), | 
 | 111 |     cfg.IntOpt('unrescue_timeout', | 
 | 112 |                default=300, | 
 | 113 |                help="Timeout for unrescuing an Ironic node."), | 
| Yuiko Takada | ff78500 | 2015-12-17 15:56:42 +0900 | [diff] [blame] | 114 |     cfg.StrOpt('min_microversion', | 
| Yuiko Takada | ff78500 | 2015-12-17 15:56:42 +0900 | [diff] [blame] | 115 |                help="Lower version of the test target microversion range. " | 
 | 116 |                     "The format is 'X.Y', where 'X' and 'Y' are int values. " | 
 | 117 |                     "Tempest selects tests based on the range between " | 
 | 118 |                     "min_microversion and max_microversion. " | 
 | 119 |                     "If both values are None, Tempest avoids tests which " | 
 | 120 |                     "require a microversion."), | 
 | 121 |     cfg.StrOpt('max_microversion', | 
 | 122 |                default='latest', | 
 | 123 |                help="Upper version of the test target microversion range. " | 
 | 124 |                     "The format is 'X.Y', where 'X' and 'Y' are int values. " | 
 | 125 |                     "Tempest selects tests based on the range between " | 
 | 126 |                     "min_microversion and max_microversion. " | 
 | 127 |                     "If both values are None, Tempest avoids tests which " | 
 | 128 |                     "require a microversion."), | 
| Yuriy Yekovenko | eb612d9 | 2016-01-18 17:49:47 +0200 | [diff] [blame] | 129 |     cfg.BoolOpt('use_provision_network', | 
 | 130 |                 default=False, | 
| Vasyl Saienko | 4ddbeec | 2017-01-20 16:26:04 +0000 | [diff] [blame] | 131 |                 help="Whether the Ironic/Neutron tenant isolation is enabled"), | 
 | 132 |     cfg.StrOpt('whole_disk_image_ref', | 
 | 133 |                help="UUID of the wholedisk image to use in the tests."), | 
| Vasyl Saienko | f46b9fa | 2017-02-23 13:06:56 -0500 | [diff] [blame] | 134 |     cfg.StrOpt('whole_disk_image_url', | 
 | 135 |                help="An http link to the wholedisk image to use in the " | 
 | 136 |                     "tests."), | 
 | 137 |     cfg.StrOpt('whole_disk_image_checksum', | 
 | 138 |                help="An MD5 checksum of the image."), | 
| Vasyl Saienko | 4ddbeec | 2017-01-20 16:26:04 +0000 | [diff] [blame] | 139 |     cfg.StrOpt('partition_image_ref', | 
 | 140 |                help="UUID of the partitioned image to use in the tests."), | 
| Julia Kreger | ff9f874 | 2020-06-17 13:47:34 -0700 | [diff] [blame] | 141 |     cfg.StrOpt('ramdisk_iso_image_ref', | 
 | 142 |                help=("UUID (or url) of an ISO image for the ramdisk boot " | 
 | 143 |                      "tests.")), | 
| Kamlesh Chauvhan | 42656a0 | 2022-05-12 14:11:14 +0000 | [diff] [blame] | 144 |     cfg.StrOpt('storage_inventory_file', | 
 | 145 |                help="Path to storage inventory file for RAID cleaning tests."), | 
| Kamlesh Chauvhan | 7856205 | 2022-09-03 06:22:08 +0000 | [diff] [blame] | 146 |     cfg.StrOpt('export_location', | 
 | 147 |                help="Export config location for configuration molds."), | 
 | 148 |     cfg.StrOpt('import_location', | 
 | 149 |                help="Import config location for configuration molds."), | 
 | 150 |     cfg.StrOpt('rollback_import_location', | 
 | 151 |                help="Rollback import config location for configuration " | 
 | 152 |                     "molds. Optional. If not provided, rollback is skipped."), | 
| Julia Kreger | 982d177 | 2022-03-30 16:40:44 -0700 | [diff] [blame^] | 153 |     # TODO(TheJulia): For now, anaconda can be url based and we can move in | 
 | 154 |     # to being tested with glance as soon as we get a public stage2 image. | 
 | 155 |     cfg.StrOpt('anaconda_image_ref', | 
 | 156 |                help="URL of an anaconda repository to set as image_source"), | 
 | 157 |     cfg.StrOpt('anaconda_kernel_ref', | 
 | 158 |                help="URL of the kernel to utilize for anaconda deploys."), | 
 | 159 |     cfg.StrOpt('anaconda_initial_ramdisk_ref', | 
 | 160 |                help="URL of the initial ramdisk to utilize for anaconda " | 
 | 161 |                     "deploy operations."), | 
 | 162 |     cfg.StrOpt('anaconda_stage2_ramdisk_ref', | 
 | 163 |                help="URL of the anaconda second stage ramdisk. Presence of " | 
 | 164 |                     "this setting will also determine if a stage2 specific " | 
 | 165 |                     "anaconda test is run, or not."), | 
 | 166 |     cfg.StrOpt('anaconda_exit_test_at', | 
 | 167 |                default='heartbeat', | 
 | 168 |                choices=['heartbeat', 'active'], | 
 | 169 |                help='When to end the anaconda test job at. Due to ' | 
 | 170 |                     'the use model of the anaconda driver, as well ' | 
 | 171 |                     'as the performance profile, the anaconda test is ' | 
 | 172 |                     'normally only executed until we observe a heartbeat ' | 
 | 173 |                     'operation indicating that anaconda *has* booted and ' | 
 | 174 |                     'successfully parsed the URL.'), | 
| Vasyl Saienko | 4ddbeec | 2017-01-20 16:26:04 +0000 | [diff] [blame] | 175 |     cfg.ListOpt('enabled_drivers', | 
 | 176 |                 default=['fake', 'pxe_ipmitool', 'agent_ipmitool'], | 
 | 177 |                 help="List of Ironic enabled drivers."), | 
 | 178 |     cfg.ListOpt('enabled_hardware_types', | 
 | 179 |                 default=['ipmi'], | 
 | 180 |                 help="List of Ironic enabled hardware types."), | 
| Yolanda Robla | eef49ea | 2018-05-15 12:54:58 +0200 | [diff] [blame] | 181 |     cfg.ListOpt('enabled_bios_interfaces', | 
 | 182 |                 default=['fake'], | 
 | 183 |                 help="List of Ironic enabled bios interfaces."), | 
| Pavlo Shchelokovskyy | 12e6275 | 2017-12-21 16:11:28 +0000 | [diff] [blame] | 184 |     cfg.ListOpt('enabled_deploy_interfaces', | 
 | 185 |                 default=['iscsi', 'direct'], | 
 | 186 |                 help="List of Ironic enabled deploy interfaces."), | 
| Dao Cong Tien | 4108a35 | 2018-01-26 09:38:46 +0700 | [diff] [blame] | 187 |     cfg.ListOpt('enabled_rescue_interfaces', | 
 | 188 |                 default=['no-rescue'], | 
 | 189 |                 help="List of Ironic enabled rescue interfaces."), | 
| ankit | bf770e5 | 2018-01-19 07:39:01 +0000 | [diff] [blame] | 190 |     cfg.ListOpt('enabled_boot_interfaces', | 
 | 191 |                 default=['fake', 'pxe'], | 
 | 192 |                 help="List of Ironic enabled boot interfaces."), | 
| Dmitry Tantsur | 65abaca | 2019-08-07 11:07:48 +0200 | [diff] [blame] | 193 |     cfg.ListOpt('enabled_raid_interfaces', | 
 | 194 |                 default=['no-raid', 'agent'], | 
 | 195 |                 help="List of Ironic enabled RAID interfaces."), | 
| Ameya Raut | 64ad557 | 2022-01-27 11:26:27 +0000 | [diff] [blame] | 196 |     cfg.ListOpt('enabled_management_interfaces', | 
 | 197 |                 default=['fake', 'ipmitool', 'noop'], | 
 | 198 |                 help="List of Ironic enabled management interfaces."), | 
 | 199 |     cfg.ListOpt('enabled_power_interfaces', | 
 | 200 |                 default=['fake', 'ipmitool'], | 
 | 201 |                 help="List of Ironic enabled power interfaces."), | 
| Dao Cong Tien | d6ce667 | 2017-12-18 19:04:48 +0700 | [diff] [blame] | 202 |     cfg.StrOpt('default_rescue_interface', | 
 | 203 |                help="Ironic default rescue interface."), | 
| Kamlesh Chauvhan | 853164a | 2022-08-18 10:42:42 +0000 | [diff] [blame] | 204 |     cfg.StrOpt('firmware_image_url', | 
 | 205 |                help="Image URL of firmware image file supported by " | 
 | 206 |                     "update_firmware clean step."), | 
 | 207 |     cfg.StrOpt('firmware_image_checksum', | 
 | 208 |                help="SHA1 checksum of firmware image file."), | 
 | 209 |     cfg.StrOpt('firmware_rollback_image_url', | 
 | 210 |                help="Image URL of firmware update cleaning step's " | 
 | 211 |                     "rollback image. Optional. If not provided, " | 
 | 212 |                     "rollback is skipped."), | 
 | 213 |     cfg.StrOpt('firmware_rollback_image_checksum', | 
 | 214 |                help="SHA1 checksum of firmware rollback image file. " | 
 | 215 |                     "This is required if firmware_rollback_image_url is set."), | 
| Vasyl Saienko | 4ddbeec | 2017-01-20 16:26:04 +0000 | [diff] [blame] | 216 |     cfg.IntOpt('adjusted_root_disk_size_gb', | 
 | 217 |                min=0, | 
 | 218 |                help="Ironic adjusted disk size to use in the standalone tests " | 
 | 219 |                     "as instance_info/root_gb value."), | 
| Sam Betts | f31abcc | 2018-02-06 17:34:08 +0000 | [diff] [blame] | 220 |     cfg.IntOpt('available_nodes', min=0, default=None, | 
 | 221 |                help="The number of baremetal hosts available to use for " | 
| Julia Kreger | cd85f20 | 2019-08-26 14:48:17 -0400 | [diff] [blame] | 222 |                     "the tests."), | 
 | 223 |     cfg.BoolOpt('partition_netboot', | 
 | 224 |                 default=True, | 
 | 225 |                 help="Treat partition images as netbooted as opposed to " | 
 | 226 |                      "attempting to populate a boot loader. IF cirros is " | 
 | 227 |                      "being used, this option should be set to True as " | 
 | 228 |                      "it lacks the needed components to make it locally " | 
 | 229 |                      "from a partition image."), | 
| Iury Gregory Melo Ferreira | d180a3e | 2020-06-16 18:17:44 +0200 | [diff] [blame] | 230 |     cfg.StrOpt('boot_mode', | 
 | 231 |                default='bios', | 
 | 232 |                choices=['bios', 'uefi'], | 
 | 233 |                help="The desired boot_mode to be used on testing nodes."), | 
| Dmitry Tantsur | fd43dcc | 2022-02-01 20:19:36 +0100 | [diff] [blame] | 234 |     cfg.StrOpt('default_boot_option', | 
 | 235 |                # No good default here, we need to actually set it. | 
 | 236 |                help="The default boot option the testing nodes are using."), | 
| Mike Turek | a7cb4be | 2016-01-18 19:35:29 +0000 | [diff] [blame] | 237 | ] | 
| Vasyl Saienko | f46b9fa | 2017-02-23 13:06:56 -0500 | [diff] [blame] | 238 |  | 
 | 239 | BaremetalFeaturesGroup = [ | 
 | 240 |     cfg.BoolOpt('ipxe_enabled', | 
 | 241 |                 default=True, | 
 | 242 |                 help="Defines if IPXE is enabled"), | 
| Dmitry Tantsur | 52ca009 | 2019-07-23 15:09:09 +0200 | [diff] [blame] | 243 |     cfg.BoolOpt('adoption', | 
 | 244 |                 # Defaults to False since it's a destructive operation AND it | 
 | 245 |                 # requires the plugin to be able to read ipmi_password. | 
 | 246 |                 default=False, | 
 | 247 |                 help="Defines if adoption is enabled"), | 
| Dmitry Tantsur | 65abaca | 2019-08-07 11:07:48 +0200 | [diff] [blame] | 248 |     cfg.BoolOpt('software_raid', | 
 | 249 |                 default=False, | 
 | 250 |                 help="Defines if software RAID is enabled (available " | 
 | 251 |                      "starting with Train). Requires at least two disks " | 
 | 252 |                      "on testing nodes."), | 
| Dmitry Tantsur | 0cc7aa9 | 2020-05-07 12:01:56 +0200 | [diff] [blame] | 253 |     cfg.BoolOpt('deploy_time_raid', | 
 | 254 |                 default=False, | 
 | 255 |                 help="Defines if in-band RAID can be built in deploy time " | 
 | 256 |                      "(possible starting with Victoria)."), | 
| Vasyl Saienko | f46b9fa | 2017-02-23 13:06:56 -0500 | [diff] [blame] | 257 | ] | 
| Dmitry Tantsur | b609cea | 2017-12-12 08:06:44 +0100 | [diff] [blame] | 258 |  | 
| Anton Arefiev | 6dc8279 | 2016-08-03 11:50:49 +0300 | [diff] [blame] | 259 | BaremetalIntrospectionGroup = [ | 
 | 260 |     cfg.StrOpt('catalog_type', | 
 | 261 |                default='baremetal-introspection', | 
 | 262 |                help="Catalog type of the baremetal provisioning service"), | 
 | 263 |     cfg.StrOpt('endpoint_type', | 
 | 264 |                default='publicURL', | 
 | 265 |                choices=['public', 'admin', 'internal', | 
 | 266 |                         'publicURL', 'adminURL', 'internalURL'], | 
 | 267 |                help="The endpoint type to use for the baremetal introspection" | 
 | 268 |                     " service"), | 
 | 269 |     cfg.IntOpt('introspection_sleep', | 
 | 270 |                default=30, | 
 | 271 |                help="Introspection sleep before check status"), | 
 | 272 |     cfg.IntOpt('introspection_timeout', | 
 | 273 |                default=600, | 
 | 274 |                help="Introspection time out"), | 
| Dmitry Tantsur | deab6ec | 2019-10-18 17:29:52 +0200 | [diff] [blame] | 275 |     cfg.IntOpt('introspection_start_timeout', | 
 | 276 |                default=90, | 
 | 277 |                help="Timeout to start introspection"), | 
| Anton Arefiev | 6dc8279 | 2016-08-03 11:50:49 +0300 | [diff] [blame] | 278 |     cfg.IntOpt('hypervisor_update_sleep', | 
 | 279 |                default=60, | 
 | 280 |                help="Time to wait until nova becomes aware of " | 
 | 281 |                     "bare metal instances"), | 
 | 282 |     cfg.IntOpt('hypervisor_update_timeout', | 
 | 283 |                default=300, | 
 | 284 |                help="Time out for wait until nova becomes aware of " | 
 | 285 |                     "bare metal instances"), | 
 | 286 |     # NOTE(aarefiev): status_check_period default is 60s, but checking | 
 | 287 |     # node state takes some time(API call), so races appear here, | 
 | 288 |     # 80s would be enough to make one more check. | 
 | 289 |     cfg.IntOpt('ironic_sync_timeout', | 
 | 290 |                default=80, | 
 | 291 |                help="Time it might take for Ironic--Inspector " | 
 | 292 |                     "sync to happen"), | 
| Anton Arefiev | 6b00356 | 2016-09-13 12:17:29 +0300 | [diff] [blame] | 293 |     cfg.IntOpt('discovery_timeout', | 
 | 294 |                default=300, | 
 | 295 |                help="Time to wait until new node would enrolled in " | 
 | 296 |                     "ironic"), | 
 | 297 |     cfg.BoolOpt('auto_discovery_feature', | 
 | 298 |                 default=False, | 
 | 299 |                 help="Is the auto-discovery feature enabled. Enroll hook " | 
 | 300 |                      "should be specified in node_not_found_hook - processing " | 
 | 301 |                      "section of inspector.conf"), | 
| Dmitry Tantsur | 39579c6 | 2018-03-28 12:46:48 +0200 | [diff] [blame] | 302 |     cfg.StrOpt('auto_discovery_default_driver', | 
 | 303 |                # TODO(dtantsur): change to fake-hardware when Queens is no | 
 | 304 |                # longer supported. | 
 | 305 |                default='fake', | 
 | 306 |                help="The driver expected to be set on newly discovered nodes. " | 
 | 307 |                     "Only has effect with auto_discovery_feature is True."), | 
| Dmitry Tantsur | 0812cc7 | 2019-03-14 10:56:45 +0100 | [diff] [blame] | 308 |     cfg.StrOpt('auto_discovery_target_driver', | 
 | 309 |                help="The driver to set on the newly discovered nodes. " | 
 | 310 |                     "Only has effect with auto_discovery_feature is True."), | 
| Dongcan Ye | 2d992ed | 2019-05-10 01:55:29 +0000 | [diff] [blame] | 311 |     cfg.StrOpt('data_store', | 
| Dongcan Ye | 2d992ed | 2019-05-10 01:55:29 +0000 | [diff] [blame] | 312 |                help="The storage backend for storing introspection data."), | 
| Anton Arefiev | 6dc8279 | 2016-08-03 11:50:49 +0300 | [diff] [blame] | 313 | ] |