blob: 016299b978b90eae2d83b8d8fd7e5adb9e4ae4f2 [file] [log] [blame]
Maru Newbyb096d9f2015-03-09 18:54:54 +00001# 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 Hrachyshkac695f9f2015-02-26 23:26:41 +010013from oslo_config import cfg
Assaf Mullerd22ca2e2016-01-19 11:47:14 -050014from tempest import config
15
Assaf Muller65cc2d22016-04-07 17:56:03 -040016
Assaf Mullerd22ca2e2016-01-19 11:47:14 -050017CONF = config.CONF
Maru Newbyb096d9f2015-03-09 18:54:54 +000018
19
Assaf Mullerd22ca2e2016-01-19 11:47:14 -050020NeutronPluginOptions = [
Armando Migliaccio7f84c422017-02-21 18:43:38 -080021 cfg.ListOpt('provider_vlans',
22 default=[],
23 help='List of provider networks available in the deployment.'),
Lajos Katona2f904652018-08-23 14:04:56 +020024 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 Fujioka1257b572015-06-10 17:18:12 +090028 cfg.BoolOpt('specify_floating_ip_address_available',
29 default=True,
30 help='Allow passing an IP Address of the floating ip when '
Hynek Mlnarikc5106762016-09-01 11:47:31 +020031 '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 Kumarc125fd12017-11-15 19:41:01 +053036 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 Rachmanifed6f862017-12-19 11:55:25 +020040 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 Ye91017ca2018-02-11 10:46:03 +000045 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 Rachmani94970882018-03-04 11:35:17 +020049 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 Ressie9c89bf2018-04-19 13:02:33 +020059 '"provider:segmentation_id":<VLAN_ID> - integer'),
pkomarov5ce1bc22019-03-23 22:53:26 +020060 cfg.IntOpt('max_mtu',
61 default=1500,
62 help='Max mtu value of default deployments".'),
Roman Safronov367e1182020-05-13 16:38:15 +030063 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 Le1c9f40b2018-11-07 01:14:21 +080067 cfg.StrOpt('q_agent',
68 default=None,
69 choices=['None', 'linuxbridge', 'ovs', 'sriov'],
70 help='Agent used for devstack@q-agt.service'),
Hang Yange6e0ccf2021-02-26 15:07:05 -060071 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 Olivares58c5d472023-01-12 10:04:02 +010076 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'),
Federico Ressie9c89bf2018-04-19 13:02:33 +020080
Federico Ressia2aad942018-04-09 12:01:48 +020081 # Multicast tests settings
82 cfg.StrOpt('multicast_group_range',
Lucas Alvares Gomes1d30f612020-02-05 11:23:36 +000083 default='225.0.0.120-225.0.0.250',
Federico Ressia2aad942018-04-09 12:01:48 +020084 help='Unallocated multi-cast IPv4 range, which will be used to '
85 'test the multi-cast support.'),
86
Federico Ressie9c89bf2018-04-19 13:02:33 +020087 # Option for feature to connect via SSH to VMs using an intermediate SSH
88 # server
89 cfg.StrOpt('ssh_proxy_jump_host',
90 default=None,
91 help='Proxy jump host used to connect via SSH to VMs..'),
92 cfg.StrOpt('ssh_proxy_jump_username',
93 default='root',
94 help='User name used to connect to "ssh_proxy_jump_host".'),
95 cfg.StrOpt('ssh_proxy_jump_password',
96 default=None,
97 help='Password used to connect to "ssh_proxy_jump_host".'),
98 cfg.StrOpt('ssh_proxy_jump_keyfile',
99 default=None,
100 help='Keyfile used to connect to "ssh_proxy_jump_host".'),
101 cfg.IntOpt('ssh_proxy_jump_port',
102 default=22,
103 help='Port used to connect to "ssh_proxy_jump_host".'),
Yarboa11b68922021-01-07 13:03:35 +0200104 cfg.IntOpt('reboots_in_test',
105 default=1,
106 help='Number of reboots to apply if tests requires reboots'),
Slawek Kaplonskida17f002018-10-11 18:35:23 +0200107
108 # Options for special, "advanced" image like e.g. Ubuntu. Such image can be
109 # used in tests which require some more advanced tool than available in
110 # Cirros
Yariv Rachmanifa1081a2018-11-21 12:46:57 +0200111 cfg.BoolOpt('default_image_is_advanced',
112 default=False,
113 help='Default image is an image which supports features '
114 'that Cirros does not, like Ubuntu or CentOS supporting '
115 'advanced features. '
116 'If this is set to True, "advanced_image_ref" option '
117 'is not required to be set.'),
Slawek Kaplonskida17f002018-10-11 18:35:23 +0200118 cfg.StrOpt('advanced_image_ref',
119 default=None,
120 help='Valid advanced image uuid to be used in tests. '
121 'It is an image that supports features that Cirros '
122 'does not, like Ubuntu or CentOS supporting advanced '
123 'features.'),
124 cfg.StrOpt('advanced_image_flavor_ref',
125 default=None,
126 help='Valid flavor to use with advanced image in tests. '
127 'This is required if advanced image has to be used in '
128 'tests.'),
129 cfg.StrOpt('advanced_image_ssh_user',
130 default=None,
131 help='Name of ssh user to use with advanced image in tests. '
132 'This is required if advanced image has to be used in '
133 'tests.'),
nfridman07f0e782019-11-04 09:12:58 -0500134
135 # Option for creating QoS policies configures as "shared".
136 # The default is false in order to prevent undesired usage
137 # while testing in parallel.
138 cfg.BoolOpt('create_shared_resources',
139 default=False,
140 help='Allow creation of shared resources.'
141 'The default value is false.'),
Lucas Alvares Gomesb5114e02020-02-04 13:36:46 +0000142 cfg.BoolOpt('is_igmp_snooping_enabled',
143 default=False,
144 help='Indicates whether IGMP snooping is enabled or not. '
145 'If True, multicast test(s) will assert that multicast '
146 'traffic is not being flooded to all ports. Defaults '
147 'to False.'),
Dr. Jens Harbottcca5dc82021-10-25 14:48:57 +0200148 # Option for scheduling BGP speakers to agents explicitly
149 # The default is false with automatic scheduling on creation
150 # happening with the default scheduler
151 cfg.BoolOpt('bgp_schedule_speakers_to_agents',
152 default=False,
153 help='Schedule BGP speakers to agents explicitly.'),
Vasyl Saienko7c251fd2025-07-01 10:25:55 +0000154 cfg.IntOpt('internal_port_setup_delay',
155 default=5,
156 help='Number of seconds to wait after network create to '
157 'setup internal ports.'),
Hynek Mlnarikc5106762016-09-01 11:47:31 +0200158]
Maru Newbyb096d9f2015-03-09 18:54:54 +0000159
Assaf Mullerd22ca2e2016-01-19 11:47:14 -0500160# TODO(amuller): Redo configuration options registration as part of the planned
161# transition to the Tempest plugin architecture
162for opt in NeutronPluginOptions:
163 CONF.register_opt(opt, 'neutron_plugin_options')
Assaf Muller65cc2d22016-04-07 17:56:03 -0400164
Slawek Kaplonskia7bb1612019-07-17 15:34:46 +0200165# TODO(slaweq): This config option is added to avoid running bgpvpn tests twice
166# on stable branches till stable/stein. We need to remove this config option
167# once stable/stein is EOL. Bgpvpn tempest plugin has been merged into
168# neutron-tempest-plugin from Train. Train onwards bgpvpn tests will run from
169# neutron-tempest-plugins.
Slawek Kaplonski8dd49aa2019-04-16 14:47:07 +0200170BgpvpnGroup = [
Slawek Kaplonskia7bb1612019-07-17 15:34:46 +0200171 cfg.BoolOpt('run_bgpvpn_tests',
172 default=True,
173 help=("If it is set to False bgpvpn api and scenario tests "
174 "will be skipped")),
Slawek Kaplonski8dd49aa2019-04-16 14:47:07 +0200175 cfg.IntOpt('min_asn',
176 default=100,
177 help=("Minimum number for the range of "
178 "autonomous system number for distinguishers.")),
179 cfg.IntOpt('min_nn',
180 default=100,
181 help=("Minimum number for the range of "
182 "assigned number for distinguishers.")),
183 cfg.IntOpt('max_asn',
184 default=200,
185 help=("Maximum number for the range of "
186 "autonomous system number for distinguishers.")),
187 cfg.IntOpt('max_nn',
188 default=200,
189 help=("Maximum number for the range of "
190 "assigned number for distinguishers.")),
Michael Polenchuk0b5ce0d2021-02-25 18:42:03 +0400191 cfg.StrOpt('l3vpn_endpoint',
192 default=None,
193 help=("IP Address/Mask, which will be used to "
194 "test the l3vpn connectivity.")),
195 cfg.StrOpt('l3vpn_subnet_cidr',
196 default="192.168.0.254/24",
197 help=("IP Address/Mask, which will be used as private network"
198 "test the l3vpn connectivity.")),
199 cfg.StrOpt('l2vpn_endpoint',
200 default=None,
201 help=("IP Address/Mask, which will be used to "
202 "test the l2vpn connectivity.")),
203 cfg.StrOpt('route_target',
204 default=None,
205 help=("Route-target (RT) extended community attributes "
206 "identify the VPN membership of routes.")),
Slawek Kaplonski8dd49aa2019-04-16 14:47:07 +0200207]
208
209bgpvpn_group = cfg.OptGroup(name="bgpvpn", title=("Networking-Bgpvpn Service "
210 "Options"))
211CONF.register_group(bgpvpn_group)
212CONF.register_opts(BgpvpnGroup, group="bgpvpn")
Assaf Muller65cc2d22016-04-07 17:56:03 -0400213
Vasyl Saienkoe4bba982023-04-07 15:28:19 +0000214
215DynamicRoutingGroup = [
216 cfg.StrOpt('frr_docker_image',
217 default='quay.io/frrouting/frr:8.5.0',
218 help=("Docker image with frr.")),
219 cfg.ListOpt('frr_provider_ipv4_ips',
220 default=["10.11.12.71/24", "10.11.12.72/24", "10.11.12.73/24",
221 "10.11.12.74/24", "10.11.12.75/24", "10.11.12.76/24"],
222 help=('List of ip addresses to bind frr containers. Require '
223 'at least 3 items per class to run tests simulteniously. '
224 'The addresses should be assigned on interface with '
225 'tempest node.')),
226 cfg.ListOpt('frr_provider_ipv6_ips',
227 default=["2001:db8:a000::7001/64", "2001:db8:a000::7002/64",
228 "2001:db8:a000::7003/64", "2001:db8:a000::7004/64",
229 "2001:db8:a000::7005/64", "2001:db8:a000::7006/64"],
230 help=('List of ip addresses to bind frr containers. Require '
231 'at least 3 items per class to run tests simulteniously. '
232 'The addresses should be assigned on interface with '
233 'tempest node.')),
234 cfg.BoolOpt('frr_bgp_ipv6_enabled',
235 default=False,
236 help=("Run dynamic routing ipv6 tests.")),
237 cfg.IntOpt('frr_bgp_timeout',
238 default=600,
239 help=('Timeout for bgp operation like setup neighborship '
240 'or route update.')),
241 cfg.StrOpt('frr_bgp_ipv4_control_cidr',
242 default='10.0.0.0/8',
243 help=("CIDR for bgp control network on gateway nodes. Is "
244 "used as allowed range for dynamic neighbors.")),
245 cfg.StrOpt('frr_bgp_ipv6_control_cidr',
246 default='2001:db8::/32',
247 help=("CIDR for bgp control network on gateway nodes. Is "
248 "used as allowed range for dynamic neighbors.")),
249]
250dynamic_routing_group = cfg.OptGroup(name="dynamic_routing",
251 title=("Networking-DNR Service Options"))
252CONF.register_group(dynamic_routing_group)
253CONF.register_opts(DynamicRoutingGroup, group="dynamic_routing")
254
Slawek Kaplonskia7bb1612019-07-17 15:34:46 +0200255# TODO(slaweq): This config option is added to avoid running fwaas tests twice
256# on stable branches till stable/stein. We need to remove this config option
257# once stable/stein is EOL. Fwaas tempest plugin has been merged into
258# neutron-tempest-plugin from Train. Train onwards fwaas tests will run from
259# neutron-tempest-plugins.
260FwaasGroup = [
261 cfg.BoolOpt('run_fwaas_tests',
262 default=True,
263 help=("If it is set to False fwaas api and scenario tests "
264 "will be skipped")),
265]
266
267fwaas_group = cfg.OptGroup(
268 name="fwaas", title=("Neutron-fwaas Service Options"))
269CONF.register_group(fwaas_group)
270CONF.register_opts(FwaasGroup, group="fwaas")
271
272# TODO(slaweq): This config option is added to avoid running SFC tests twice
273# on stable branches till stable/stein. We need to remove this config option
274# once stable/stein is EOL. SFC tempest plugin has been merged into
275# neutron-tempest-plugin from Train. Train onwards SFC tests will run from
276# neutron-tempest-plugins.
277SfcGroup = [
278 cfg.BoolOpt('run_sfc_tests',
279 default=True,
280 help=("If it is set to False SFC api and scenario tests "
281 "will be skipped")),
282]
283
284sfc_group = cfg.OptGroup(name="sfc", title=("Networking-sfc Service Options"))
285CONF.register_group(sfc_group)
286CONF.register_opts(SfcGroup, group="sfc")
287
elajkat1f275e42021-10-15 12:47:55 +0200288
289TaasGroup = [
290 cfg.StrOpt('provider_physical_network',
291 default='',
292 help='Physical network to be used for creating SRIOV network.'),
293 cfg.StrOpt('provider_segmentation_id',
294 default='',
295 help='Segmentation-id to be used for creating SRIOV network.'),
296 cfg.StrOpt('vlan_filter',
297 default='',
298 help='Comma separated list of VLANs to be mirrored '
299 'for a Tap-Flow.'),
300]
301taas_group = cfg.OptGroup(name='taas',
302 title='TaaS Tempest Options')
303CONF.register_group(taas_group)
304CONF.register_opts(TaasGroup, group="taas")
305
Arkady Shtempler88d1d572023-11-01 13:05:07 +0200306# DNS Integration with an External Service
307DnsFeatureGroup = [
308 cfg.IntOpt(
309 'segmentation_id', default=12345,
310 help="For network types VLAN, GRE, VXLAN or GENEVE, the segmentation"
311 " ID must be outside the ranges assigned to project networks."),
312]
313dns_feature_group = cfg.OptGroup(
314 name='designate_feature_enabled', title='Enabled Designate Features')
315CONF.register_group(dns_feature_group)
316CONF.register_opts(DnsFeatureGroup, group="designate_feature_enabled")
elajkat1f275e42021-10-15 12:47:55 +0200317
Assaf Muller65cc2d22016-04-07 17:56:03 -0400318config_opts_translator = {
319 'project_network_cidr': 'tenant_network_cidr',
320 'project_network_v6_cidr': 'tenant_network_v6_cidr',
321 'project_network_mask_bits': 'tenant_network_mask_bits',
322 'project_network_v6_mask_bits': 'tenant_network_v6_mask_bits'}
323
324
325def safe_get_config_value(group, name):
326 """Safely get Oslo config opts from Tempest, using old and new names."""
327 conf_group = getattr(CONF, group)
328
329 try:
330 return getattr(conf_group, name)
331 except cfg.NoSuchOptError:
332 return getattr(conf_group, config_opts_translator[name])