##############################################################################
# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
{%- import 'net_map.j2' as nm with context %}
{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
{%- set nics = { nm.ctl01.nic_admin: True, nm.ctl01.nic_mgmt: True, nm.ctl01.nic_public: True } %}
{%- set vlans = { nm.vlan_admin: nm.ctl01.nic_admin, nm.vlan_mgmt: nm.ctl01.nic_mgmt, nm.vlan_public: nm.ctl01.nic_public } %}
---
parameters:
  linux:
    network:
      interface:
{%- for nic in nics %}
        {{ nic }}:
          enabled: true
          type: eth
          proto: manual
          address: 0.0.0.0
          netmask: 255.255.255.0
          name: {{ nic }}
          noifupdown: true
{%- endfor %}

{%- for vlan in vlans %}
    {%- if vlan | int > 0 %}
        {{ vlans[vlan] }}.{{ vlan }}:
          enabled: true
          proto: manual
          type: vlan
          name: {{ vlans[vlan] }}.{{ vlan }}
          use_interfaces:
            - {{ vlans[vlan] }}
          noifupdown: true
    {%- endif %}
{%- endfor %}

        br-mgmt:
          enabled: true
          proto: dhcp
          type: bridge
          use_interfaces:
            - {{ nm.ctl01.nic_admin }}{% if nm.vlan_admin | int > 0 %}.{{ nm.vlan_admin }}{% endif %}
          noifupdown: true
        br-ctl:
          enabled: true
          type: bridge
          proto: static
          address: ${_param:single_address}
          netmask: 255.255.255.0
          use_interfaces:
            - {{ nm.ctl01.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %}
          noifupdown: true
        br-ex:
          enabled: true
          proto: manual
          address: 0.0.0.0
          netmask: ${_param:opnfv_net_public_mask}
          type: bridge
          use_interfaces:
            - {{ nm.ctl01.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
          noifupdown: true