Maru Newby | b096d9f | 2015-03-09 18:54:54 +0000 | [diff] [blame] | 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| 2 | # not use this file except in compliance with the License. You may obtain |
| 3 | # a copy of the License at |
| 4 | # |
| 5 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 6 | # |
| 7 | # Unless required by applicable law or agreed to in writing, software |
| 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 10 | # License for the specific language governing permissions and limitations |
| 11 | # under the License. |
| 12 | |
Ihar Hrachyshka | c695f9f | 2015-02-26 23:26:41 +0100 | [diff] [blame] | 13 | from oslo_config import cfg |
Assaf Muller | d22ca2e | 2016-01-19 11:47:14 -0500 | [diff] [blame] | 14 | from tempest import config |
| 15 | |
Assaf Muller | 65cc2d2 | 2016-04-07 17:56:03 -0400 | [diff] [blame] | 16 | |
Assaf Muller | d22ca2e | 2016-01-19 11:47:14 -0500 | [diff] [blame] | 17 | CONF = config.CONF |
Maru Newby | b096d9f | 2015-03-09 18:54:54 +0000 | [diff] [blame] | 18 | |
| 19 | |
Assaf Muller | d22ca2e | 2016-01-19 11:47:14 -0500 | [diff] [blame] | 20 | NeutronPluginOptions = [ |
Armando Migliaccio | 7f84c42 | 2017-02-21 18:43:38 -0800 | [diff] [blame] | 21 | cfg.ListOpt('provider_vlans', |
| 22 | default=[], |
| 23 | help='List of provider networks available in the deployment.'), |
Lajos Katona | 2f90465 | 2018-08-23 14:04:56 +0200 | [diff] [blame] | 24 | cfg.IntOpt('provider_net_base_segm_id', |
| 25 | default=3000, |
| 26 | help='Base segmentation ID to create provider networks. ' |
| 27 | 'This value will be increased in case of conflict.'), |
Yuuichi Fujioka | 1257b57 | 2015-06-10 17:18:12 +0900 | [diff] [blame] | 28 | cfg.BoolOpt('specify_floating_ip_address_available', |
| 29 | default=True, |
| 30 | help='Allow passing an IP Address of the floating ip when ' |
Hynek Mlnarik | c510676 | 2016-09-01 11:47:31 +0200 | [diff] [blame] | 31 | 'creating the floating ip'), |
| 32 | cfg.ListOpt('available_type_drivers', |
| 33 | default=[], |
| 34 | help='List of network types available to neutron, ' |
| 35 | 'e.g. vxlan,vlan,gre.'), |
Chandan Kumar | c125fd1 | 2017-11-15 19:41:01 +0530 | [diff] [blame] | 36 | cfg.StrOpt('agent_availability_zone', |
| 37 | help='The availability zone for all agents in the deployment. ' |
| 38 | 'Configure this only when the single value is used by ' |
| 39 | 'all agents in the deployment.'), |
Yariv Rachmani | fed6f86 | 2017-12-19 11:55:25 +0200 | [diff] [blame] | 40 | cfg.IntOpt('max_networks_per_project', |
| 41 | default=4, |
| 42 | help='Max number of networks per project. ' |
| 43 | 'Configure this only when project is limited with real ' |
| 44 | 'vlans in deployment.'), |
Dongcan Ye | 91017ca | 2018-02-11 10:46:03 +0000 | [diff] [blame] | 45 | cfg.StrOpt('l3_agent_mode', |
| 46 | help='The agent mode for L3 agents in the deployment. ' |
| 47 | 'Configure this only when the single value is used by ' |
| 48 | 'all agents in the deployment.'), |
Yariv Rachmani | 9497088 | 2018-03-04 11:35:17 +0200 | [diff] [blame] | 49 | cfg.StrOpt('test_mtu_networks', |
| 50 | default='[{"provider:network_type":"vxlan",' |
| 51 | '"mtu":1200, "cidr":"10.100.0.0/16"}' |
| 52 | ',' |
| 53 | '{"provider:network_type":"vxlan",' |
| 54 | '"mtu":1300, "cidr":"10.200.0.0/16"}]', |
| 55 | help='Configuration for test networks. The format is JSON. ' |
| 56 | '"provider:network_type":<TYPE> - string ' |
| 57 | '"mtu":<MTU> - integer ' |
| 58 | '"cidr"<SUBNET/MASK> - string ' |
Federico Ressi | e9c89bf | 2018-04-19 13:02:33 +0200 | [diff] [blame] | 59 | '"provider:segmentation_id":<VLAN_ID> - integer'), |
pkomarov | 5ce1bc2 | 2019-03-23 22:53:26 +0200 | [diff] [blame] | 60 | cfg.IntOpt('max_mtu', |
| 61 | default=1500, |
| 62 | help='Max mtu value of default deployments".'), |
Roman Safronov | 367e118 | 2020-05-13 16:38:15 +0300 | [diff] [blame] | 63 | cfg.StrOpt('global_ip_address', |
| 64 | default='', |
| 65 | help='An IP address in the Internet that can be used in ' |
| 66 | 'a connectivity test'), |
Huifeng Le | 1c9f40b | 2018-11-07 01:14:21 +0800 | [diff] [blame] | 67 | cfg.StrOpt('q_agent', |
| 68 | default=None, |
| 69 | choices=['None', 'linuxbridge', 'ovs', 'sriov'], |
| 70 | help='Agent used for devstack@q-agt.service'), |
Hang Yang | e6e0ccf | 2021-02-26 15:07:05 -0600 | [diff] [blame] | 71 | cfg.StrOpt('firewall_driver', |
| 72 | default=None, |
| 73 | choices=['None', 'openvswitch', 'ovn', |
| 74 | 'iptables_hybrid', 'iptables'], |
| 75 | help='Driver for security groups firewall in the L2 agent'), |
Eduardo Olivares | 58c5d47 | 2023-01-12 10:04:02 +0100 | [diff] [blame] | 76 | cfg.StrOpt('dns_domain', |
| 77 | default='openstackgate.local', |
| 78 | help='dns_domain value configured at neutron.conf, which will ' |
| 79 | 'be used for the DNS configuration of the instances'), |
Ihar Hrachyshka | 889566a | 2024-08-22 18:08:29 +0000 | [diff] [blame] | 80 | cfg.BoolOpt('snat_rules_apply_to_nested_networks', |
| 81 | default=False, |
| 82 | help='Whether SNAT rules apply recursively to all connected ' |
| 83 | 'networks. This is the default behavior for ovs and ' |
Ihar Hrachyshka | 9881eff | 2024-08-26 19:36:09 -0400 | [diff] [blame] | 84 | 'linuxbridge drivers. OVN requires ' |
| 85 | 'ovn_router_indirect_snat=True setting to implement it.'), |
Federico Ressi | e9c89bf | 2018-04-19 13:02:33 +0200 | [diff] [blame] | 86 | |
Federico Ressi | a2aad94 | 2018-04-09 12:01:48 +0200 | [diff] [blame] | 87 | # Multicast tests settings |
| 88 | cfg.StrOpt('multicast_group_range', |
Lucas Alvares Gomes | 1d30f61 | 2020-02-05 11:23:36 +0000 | [diff] [blame] | 89 | default='225.0.0.120-225.0.0.250', |
Federico Ressi | a2aad94 | 2018-04-09 12:01:48 +0200 | [diff] [blame] | 90 | help='Unallocated multi-cast IPv4 range, which will be used to ' |
| 91 | 'test the multi-cast support.'), |
| 92 | |
Federico Ressi | e9c89bf | 2018-04-19 13:02:33 +0200 | [diff] [blame] | 93 | # Option for feature to connect via SSH to VMs using an intermediate SSH |
| 94 | # server |
| 95 | cfg.StrOpt('ssh_proxy_jump_host', |
| 96 | default=None, |
| 97 | help='Proxy jump host used to connect via SSH to VMs..'), |
| 98 | cfg.StrOpt('ssh_proxy_jump_username', |
| 99 | default='root', |
| 100 | help='User name used to connect to "ssh_proxy_jump_host".'), |
| 101 | cfg.StrOpt('ssh_proxy_jump_password', |
| 102 | default=None, |
| 103 | help='Password used to connect to "ssh_proxy_jump_host".'), |
| 104 | cfg.StrOpt('ssh_proxy_jump_keyfile', |
| 105 | default=None, |
| 106 | help='Keyfile used to connect to "ssh_proxy_jump_host".'), |
| 107 | cfg.IntOpt('ssh_proxy_jump_port', |
| 108 | default=22, |
| 109 | help='Port used to connect to "ssh_proxy_jump_host".'), |
Yarboa | 11b6892 | 2021-01-07 13:03:35 +0200 | [diff] [blame] | 110 | cfg.IntOpt('reboots_in_test', |
| 111 | default=1, |
| 112 | help='Number of reboots to apply if tests requires reboots'), |
Slawek Kaplonski | da17f00 | 2018-10-11 18:35:23 +0200 | [diff] [blame] | 113 | |
| 114 | # Options for special, "advanced" image like e.g. Ubuntu. Such image can be |
| 115 | # used in tests which require some more advanced tool than available in |
| 116 | # Cirros |
Yariv Rachmani | fa1081a | 2018-11-21 12:46:57 +0200 | [diff] [blame] | 117 | cfg.BoolOpt('default_image_is_advanced', |
| 118 | default=False, |
| 119 | help='Default image is an image which supports features ' |
| 120 | 'that Cirros does not, like Ubuntu or CentOS supporting ' |
| 121 | 'advanced features. ' |
| 122 | 'If this is set to True, "advanced_image_ref" option ' |
| 123 | 'is not required to be set.'), |
Slawek Kaplonski | da17f00 | 2018-10-11 18:35:23 +0200 | [diff] [blame] | 124 | cfg.StrOpt('advanced_image_ref', |
| 125 | default=None, |
| 126 | help='Valid advanced image uuid to be used in tests. ' |
| 127 | 'It is an image that supports features that Cirros ' |
| 128 | 'does not, like Ubuntu or CentOS supporting advanced ' |
| 129 | 'features.'), |
| 130 | cfg.StrOpt('advanced_image_flavor_ref', |
| 131 | default=None, |
| 132 | help='Valid flavor to use with advanced image in tests. ' |
| 133 | 'This is required if advanced image has to be used in ' |
| 134 | 'tests.'), |
| 135 | cfg.StrOpt('advanced_image_ssh_user', |
| 136 | default=None, |
| 137 | help='Name of ssh user to use with advanced image in tests. ' |
| 138 | 'This is required if advanced image has to be used in ' |
| 139 | 'tests.'), |
nfridman | 07f0e78 | 2019-11-04 09:12:58 -0500 | [diff] [blame] | 140 | |
| 141 | # Option for creating QoS policies configures as "shared". |
| 142 | # The default is false in order to prevent undesired usage |
| 143 | # while testing in parallel. |
| 144 | cfg.BoolOpt('create_shared_resources', |
| 145 | default=False, |
| 146 | help='Allow creation of shared resources.' |
| 147 | 'The default value is false.'), |
Lucas Alvares Gomes | b5114e0 | 2020-02-04 13:36:46 +0000 | [diff] [blame] | 148 | cfg.BoolOpt('is_igmp_snooping_enabled', |
| 149 | default=False, |
| 150 | help='Indicates whether IGMP snooping is enabled or not. ' |
| 151 | 'If True, multicast test(s) will assert that multicast ' |
| 152 | 'traffic is not being flooded to all ports. Defaults ' |
| 153 | 'to False.'), |
Dr. Jens Harbott | cca5dc8 | 2021-10-25 14:48:57 +0200 | [diff] [blame] | 154 | # Option for scheduling BGP speakers to agents explicitly |
| 155 | # The default is false with automatic scheduling on creation |
| 156 | # happening with the default scheduler |
| 157 | cfg.BoolOpt('bgp_schedule_speakers_to_agents', |
| 158 | default=False, |
| 159 | help='Schedule BGP speakers to agents explicitly.'), |
Hynek Mlnarik | c510676 | 2016-09-01 11:47:31 +0200 | [diff] [blame] | 160 | ] |
Maru Newby | b096d9f | 2015-03-09 18:54:54 +0000 | [diff] [blame] | 161 | |
Assaf Muller | d22ca2e | 2016-01-19 11:47:14 -0500 | [diff] [blame] | 162 | # TODO(amuller): Redo configuration options registration as part of the planned |
| 163 | # transition to the Tempest plugin architecture |
| 164 | for opt in NeutronPluginOptions: |
| 165 | CONF.register_opt(opt, 'neutron_plugin_options') |
Assaf Muller | 65cc2d2 | 2016-04-07 17:56:03 -0400 | [diff] [blame] | 166 | |
Slawek Kaplonski | a7bb161 | 2019-07-17 15:34:46 +0200 | [diff] [blame] | 167 | # TODO(slaweq): This config option is added to avoid running bgpvpn tests twice |
| 168 | # on stable branches till stable/stein. We need to remove this config option |
| 169 | # once stable/stein is EOL. Bgpvpn tempest plugin has been merged into |
| 170 | # neutron-tempest-plugin from Train. Train onwards bgpvpn tests will run from |
| 171 | # neutron-tempest-plugins. |
Slawek Kaplonski | 8dd49aa | 2019-04-16 14:47:07 +0200 | [diff] [blame] | 172 | BgpvpnGroup = [ |
Slawek Kaplonski | a7bb161 | 2019-07-17 15:34:46 +0200 | [diff] [blame] | 173 | cfg.BoolOpt('run_bgpvpn_tests', |
| 174 | default=True, |
| 175 | help=("If it is set to False bgpvpn api and scenario tests " |
| 176 | "will be skipped")), |
Slawek Kaplonski | 8dd49aa | 2019-04-16 14:47:07 +0200 | [diff] [blame] | 177 | cfg.IntOpt('min_asn', |
| 178 | default=100, |
| 179 | help=("Minimum number for the range of " |
| 180 | "autonomous system number for distinguishers.")), |
| 181 | cfg.IntOpt('min_nn', |
| 182 | default=100, |
| 183 | help=("Minimum number for the range of " |
| 184 | "assigned number for distinguishers.")), |
| 185 | cfg.IntOpt('max_asn', |
| 186 | default=200, |
| 187 | help=("Maximum number for the range of " |
| 188 | "autonomous system number for distinguishers.")), |
| 189 | cfg.IntOpt('max_nn', |
| 190 | default=200, |
| 191 | help=("Maximum number for the range of " |
| 192 | "assigned number for distinguishers.")), |
| 193 | ] |
| 194 | |
| 195 | bgpvpn_group = cfg.OptGroup(name="bgpvpn", title=("Networking-Bgpvpn Service " |
| 196 | "Options")) |
| 197 | CONF.register_group(bgpvpn_group) |
| 198 | CONF.register_opts(BgpvpnGroup, group="bgpvpn") |
Assaf Muller | 65cc2d2 | 2016-04-07 17:56:03 -0400 | [diff] [blame] | 199 | |
Slawek Kaplonski | a7bb161 | 2019-07-17 15:34:46 +0200 | [diff] [blame] | 200 | # TODO(slaweq): This config option is added to avoid running fwaas tests twice |
| 201 | # on stable branches till stable/stein. We need to remove this config option |
| 202 | # once stable/stein is EOL. Fwaas tempest plugin has been merged into |
| 203 | # neutron-tempest-plugin from Train. Train onwards fwaas tests will run from |
| 204 | # neutron-tempest-plugins. |
| 205 | FwaasGroup = [ |
| 206 | cfg.BoolOpt('run_fwaas_tests', |
| 207 | default=True, |
| 208 | help=("If it is set to False fwaas api and scenario tests " |
| 209 | "will be skipped")), |
| 210 | ] |
| 211 | |
| 212 | fwaas_group = cfg.OptGroup( |
| 213 | name="fwaas", title=("Neutron-fwaas Service Options")) |
| 214 | CONF.register_group(fwaas_group) |
| 215 | CONF.register_opts(FwaasGroup, group="fwaas") |
| 216 | |
| 217 | # TODO(slaweq): This config option is added to avoid running SFC tests twice |
| 218 | # on stable branches till stable/stein. We need to remove this config option |
| 219 | # once stable/stein is EOL. SFC tempest plugin has been merged into |
| 220 | # neutron-tempest-plugin from Train. Train onwards SFC tests will run from |
| 221 | # neutron-tempest-plugins. |
| 222 | SfcGroup = [ |
| 223 | cfg.BoolOpt('run_sfc_tests', |
| 224 | default=True, |
| 225 | help=("If it is set to False SFC api and scenario tests " |
| 226 | "will be skipped")), |
| 227 | ] |
| 228 | |
| 229 | sfc_group = cfg.OptGroup(name="sfc", title=("Networking-sfc Service Options")) |
| 230 | CONF.register_group(sfc_group) |
| 231 | CONF.register_opts(SfcGroup, group="sfc") |
| 232 | |
elajkat | 1f275e4 | 2021-10-15 12:47:55 +0200 | [diff] [blame] | 233 | |
| 234 | TaasGroup = [ |
| 235 | cfg.StrOpt('provider_physical_network', |
| 236 | default='', |
| 237 | help='Physical network to be used for creating SRIOV network.'), |
| 238 | cfg.StrOpt('provider_segmentation_id', |
| 239 | default='', |
| 240 | help='Segmentation-id to be used for creating SRIOV network.'), |
| 241 | cfg.StrOpt('vlan_filter', |
| 242 | default='', |
| 243 | help='Comma separated list of VLANs to be mirrored ' |
| 244 | 'for a Tap-Flow.'), |
| 245 | ] |
| 246 | taas_group = cfg.OptGroup(name='taas', |
| 247 | title='TaaS Tempest Options') |
| 248 | CONF.register_group(taas_group) |
| 249 | CONF.register_opts(TaasGroup, group="taas") |
| 250 | |
Arkady Shtempler | 88d1d57 | 2023-11-01 13:05:07 +0200 | [diff] [blame] | 251 | # DNS Integration with an External Service |
| 252 | DnsFeatureGroup = [ |
| 253 | cfg.IntOpt( |
| 254 | 'segmentation_id', default=12345, |
| 255 | help="For network types VLAN, GRE, VXLAN or GENEVE, the segmentation" |
| 256 | " ID must be outside the ranges assigned to project networks."), |
| 257 | ] |
| 258 | dns_feature_group = cfg.OptGroup( |
| 259 | name='designate_feature_enabled', title='Enabled Designate Features') |
| 260 | CONF.register_group(dns_feature_group) |
| 261 | CONF.register_opts(DnsFeatureGroup, group="designate_feature_enabled") |
elajkat | 1f275e4 | 2021-10-15 12:47:55 +0200 | [diff] [blame] | 262 | |
Assaf Muller | 65cc2d2 | 2016-04-07 17:56:03 -0400 | [diff] [blame] | 263 | config_opts_translator = { |
| 264 | 'project_network_cidr': 'tenant_network_cidr', |
| 265 | 'project_network_v6_cidr': 'tenant_network_v6_cidr', |
| 266 | 'project_network_mask_bits': 'tenant_network_mask_bits', |
| 267 | 'project_network_v6_mask_bits': 'tenant_network_v6_mask_bits'} |
| 268 | |
| 269 | |
| 270 | def safe_get_config_value(group, name): |
| 271 | """Safely get Oslo config opts from Tempest, using old and new names.""" |
| 272 | conf_group = getattr(CONF, group) |
| 273 | |
| 274 | try: |
| 275 | return getattr(conf_group, name) |
| 276 | except cfg.NoSuchOptError: |
| 277 | return getattr(conf_group, config_opts_translator[name]) |