# NOTE: This template is now deprecated, and is only included for compatibility
# when upgrading a deployment where this template was originally used. For new
# deployments, set "ipv6: true" on desired networks in network_data.yaml, and
# include network-isolation.yaml.
#
# Enable the creation of Neutron networks for isolated Overcloud
# traffic and configure each role to assign ports (related
# to that role) on these networks.
resource_registry:
  # networks as defined in network_data.yaml
  {%- for network in networks if network.enabled|default(true) %}
    {%- if network.name != 'Tenant' %}
  OS::TripleO::Network::{{network.name}}: ../network/{{network.name_lower|default(network.name.lower())}}_v6.yaml
    {%- else %}
    # IPv4 until OVS and Neutron support IPv6 tunnel endpoints
  OS::TripleO::Network::{{network.name}}: ../network/{{network.name_lower|default(network.name.lower())}}.yaml
    {%- endif %}
  {%- endfor %}

  # Port assignments for the VIPs
  {%- for network in networks if network.vip and network.enabled|default(true) %}
  {%- if network.external_resource_vip_id|default('') %}
  OS::TripleO::Network::Ports::{{network.name}}VipPort: ../network/ports/external_resource_{{network.name_lower|default(network.name.lower())}}_v6.yaml
  {%- else %}
  OS::TripleO::Network::Ports::{{network.name}}VipPort: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
  {%- endif %}
  {%- endfor %}

  OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml
  OS::TripleO::Network::Ports::OVNDBsVipPort: ../network/ports/vip_v6.yaml

  # Port assignments by role, edit role definition to assign networks to roles.
{%- for role in roles %}
{#-     Convert net map or net list to internal list of networks #}
{#-     NOTE(hjensas): For backward compatibility support role data with both #}
{#-                    networks map (new schema) and network list (old schema). #}
{%-     if role.networks is mapping %}
{%-         set _role_networks = [] %}
{%-         for key, val in role.networks.items() %}
{%-             set _ = _role_networks.append(key) %}
{%-         endfor %}
{%-     else %}
{%-         set _role_networks = role.networks %}
{%-     endif %}
  # Port assignments for the {{role.name}}
{%-     for network in networks %}
{%-         if network.name in _role_networks and network.enabled|default(true) and network.name != 'Tenant' %}
  OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}_v6.yaml
{%-         elif network.name in _role_networks and network.enabled|default(true) and network.name == 'Tenant' %}
  # IPv4 until OVS and Neutron support IPv6 tunnel endpoints
  OS::TripleO::{{role.name}}::Ports::{{network.name}}Port: ../network/ports/{{network.name_lower|default(network.name.lower())}}.yaml
{%-         endif %}
{%-     endfor %}
{%- endfor %}


parameter_defaults:
  # Enable IPv6 for Ceph.
  CephIPv6: True
  # Enable IPv6 for Corosync. This is required when Corosync is using an IPv6 IP in the cluster.
  CorosyncIPv6: True
  # Enable various IPv6 features in Nova.
  NovaIPv6: True
  # Enable IPv6 environment for RabbitMQ.
  RabbitIPv6: True
  # Enable IPv6 environment for Memcached.
  MemcachedIPv6: True
  # Enable IPv6 environment for MySQL.
  MysqlIPv6: True
  # Enable IPv6 environment for Manila
  ManilaIPv6: True
  # Enable IPv6 environment for Redis.
  RedisIPv6: True
