# NOTE: This file is deprecated, and is included for backwards-compatibility
# for use in upgrades. For new deployments, set ipv6: true for isolated
# networks using IPv6 (Tenant network should use IPv4 for tunneling),
# and set the default_route_networks to "['ControlPlane', 'External']"
# on the Controller role to use ControlPlane for IPv4 and External for IPv6
# default routes, and include network-environment.yaml instead of this file.
resource_registry:
  # Network Interface templates to use (these files must exist). You can
  # override these by including one of the net-*.yaml environment files,
  # such as net-bond-with-vlans-v6.yaml, or modifying the list here.
{%- for role in roles %}
  # Port assignments for the {{role.name}}
  OS::TripleO::{{role.name}}::Net::SoftwareConfig:
    ../network/config/single-nic-vlans/{{role.deprecated_nic_config_name|default(role.name.lower() ~ ".yaml")}}
{%- endfor %}

parameter_defaults:
  # This section is where deployment-specific configuration is done
  #
  # NOTE: (Since Rocky)
  # ControlPlaneSubnetCidr: It is no longer a requirement to provide this
  #                         parameter. The attribute is resolved from the
  #                         ctlplane subnet(s).
  # ControlPlaneDefaultRoute: It is no longer a requirement to provide this
  #                           parameter. The attribute is resolved from the
  #                           ctlplane subnet(s).
  # EC2MetadataIp: It is no longer a requirement to provide this parameter. The
  #                attribute is resolved from the ctlplane subnet(s).
  #
  #
{% for network in networks if network.enabled|default(true) %}
{%-     if network.name != 'Tenant' %}
  # Customize the IP subnets to match the local environment
  {{network.name}}NetCidr: '{{network.ipv6_subnet}}'
  # Customize the IP range to use for static IPs and VIPs
{%-         if network.name == 'External' %}
  # Leave room if the external network is also used for floating IPs
{%-         endif %}
  {{network.name}}AllocationPools: {{network.ipv6_allocation_pools}}
{%-     else %}
  # Tenant tunneling network is IPv4 until IPv6 is fully supported
  # Customize the IP subnets to match the local environment
  {{network.name}}NetCidr: '{{network.ip_subnet}}'
  # Customize the IP range to use for static IPs and VIPs
  {{network.name}}AllocationPools: {{network.allocation_pools}}
{%-     endif %}
{%-     if network.gateway_ipv6|default(false) %}
  # Gateway router for routable networks
  {{network.name}}InterfaceDefaultRoute: '{{network.gateway_ipv6}}'
{%-     endif %}
{%-     if network.vlan is defined %}
  # Customize the VLAN ID to match the local environment
  {{network.name}}NetworkVlanID: {{network.vlan}}
{%-     endif %}
{%-     if network.routes_ipv6 %}
  # Routes to add to host_routes property of the subnets in neutron.
  {{network.name}}Routes: {{network.routes_ipv6|default([])}}
{%-     endif %}
{%-     if network.name == 'Tenant' %}
  # MTU of the underlying physical network. Neutron uses this value to
  # calculate MTU for all virtual network components. For flat and VLAN
  # networks, neutron uses this value without modification. For overlay
  # networks such as VXLAN, neutron automatically subtracts the overlay
  # protocol overhead from this value.
  TenantNetPhysnetMtu: {{network.mtu|default('1500')}}
{%-     endif %}
{%      for subnet in network.subnets|default({}) if network.subnets[subnet].enabled|default(true) %}
{%-         if network.name != 'Tenant' %}
  {{network.name}}SubnetCidr_{{subnet}}: {{network.subnets[subnet]['ipv6_subnet']}}
  {{network.name}}AllocationPools_{{subnet}}: {{network.subnets[subnet]['ipv6_allocation_pools']}}
  {{network.name}}InterfaceDefaultRoute_{{subnet}}: {{network.subnets[subnet]['gateway_ipv6']}}
{%-             if network.subnets[subnet][routes_ipv6] %}
  {{network.name}}Routes_{{subnet}}: {{network.subnets[subnet]['routes_ipv6']|default([])}}
{%-             endif %}
{%-         else %}
  {{network.name}}SubnetCidr_{{subnet}}: {{network.subnets[subnet]['ip_subnet']}}
  {{network.name}}AllocationPools_{{subnet}}: {{network.subnets[subnet]['allocation_pools']}}
  {{network.name}}InterfaceDefaultRoute_{{subnet}}: {{network.subnets[subnet]['gateway_ip']}}
{%-             if network.subnets[subnet][routes] %}
  {{network.name}}Routes_{{subnet}}: {{network.subnets[subnet]['routes']|default([])}}
{%-             endif %}
{%-         endif %}
{%-         if network.subnets[subnet]['vlan'] is defined %}
  {{network.name}}NetworkVlanID_{{subnet}}: {{network.subnets[subnet]['vlan']}}
{%-         endif %}
{%      endfor %}
{% endfor %}
{#- FIXME: These global parameters should be defined in a YAML file, e.g. network_data.yaml. #}
  # Define the DNS servers (maximum 2) for the overcloud nodes
  # When the list is not set (empty) the nameservers on the ctlplane subnet(s) will be used.
  # (ctlplane subnet(s) nameservers are confgured by the ``undercloud_nameservers`` option in ``undercloud.conf``)
  DnsServers: []
  # List of Neutron network types for tenant networks (will be used in order)
  NeutronNetworkType: 'vxlan,vlan'
  # The tunnel type for the tenant network (vxlan or gre). Set to '' to disable tunneling.
  NeutronTunnelTypes: 'vxlan'
  # Neutron VLAN ranges per network, for example 'datacentre:1:499,tenant:500:1000':
  NeutronNetworkVLANRanges: 'datacentre:1:1000'
  # Customize bonding options, e.g. "mode=4 lacp_rate=1 updelay=1000 miimon=100"
  # for Linux bonds w/LACP, or "bond_mode=active-backup" for OVS active/backup.
  BondInterfaceOvsOptions: "bond_mode=active-backup"