# Set the repository suite, one of the: 'nightly', 'testing', 'stable', or any other required
{% set REPOSITORY_SUITE = os_env('REPOSITORY_SUITE', 'testing') %}
{% set CUSTOM_VCP_TRUSTY_IMAGE_URL = os_env('CUSTOM_VCP_TRUSTY_IMAGE_URL', '') %}
{% set CUSTOM_VCP_XENIAL_IMAGE_URL = os_env('CUSTOM_VCP_XENIAL_IMAGE_URL', '') %}

#{# set DOMAIN_NAME = os_env('LAB_CONFIG_NAME', 'physical_mcp11_ovs_dpdk') + '.local' #}
{% set LAB_CONFIG_NAME = os_env('LAB_CONFIG_NAME', 'cookied-bm-mcp-ocata-contrail') %}
{% set DOMAIN_NAME = os_env('DOMAIN_NAME', LAB_CONFIG_NAME + '.local') %}
{% set HOSTNAME_CFG01 = os_env('HOSTNAME_CFG01', 'cfg01.' + DOMAIN_NAME) %}
{% set HOSTNAME_KVM01 = os_env('HOSTNAME_KVM01', 'kvm01.' + DOMAIN_NAME) %}
{% set HOSTNAME_KVM02 = os_env('HOSTNAME_KVM02', 'kvm02.' + DOMAIN_NAME) %}
{% set HOSTNAME_KVM03 = os_env('HOSTNAME_KVM03', 'kvm03.' + DOMAIN_NAME) %}
{% set HOSTNAME_CMP001 = os_env('HOSTNAME_CMP001', 'cmp001.' + DOMAIN_NAME) %}
{% set HOSTNAME_CMP002 = os_env('HOSTNAME_CMP002', 'cmp002.' + DOMAIN_NAME) %}
# {# set HOSTNAME_GTW01 = os_env('HOSTNAME_GTW01', 'gtw01.' + DOMAIN_NAME) #}
# {# set HOSTNAME_GTW02 = os_env('HOSTNAME_GTW02', 'gtw02.' + DOMAIN_NAME) #}

{% set ETH1_IP_ADDRESS_CFG01 = os_env('ETH1_IP_ADDRESS_CFG01', '172.16.49.66') %}
{% set ETH0_IP_ADDRESS_KVM01 = os_env('ETH0_IP_ADDRESS_KVM01', '172.16.49.67') %}
{% set ETH0_IP_ADDRESS_KVM02 = os_env('ETH0_IP_ADDRESS_KVM02', '172.16.49.68') %}
{% set ETH0_IP_ADDRESS_KVM03 = os_env('ETH0_IP_ADDRESS_KVM03', '172.16.49.69') %}
{% set ETH0_IP_ADDRESS_CMP001 = os_env('ETH0_IP_ADDRESS_CMP001', '172.16.49.73') %}
{% set ETH0_IP_ADDRESS_CMP002 = os_env('ETH0_IP_ADDRESS_CMP002', '172.16.49.74') %}
# {# set ETH0_IP_ADDRESS_CMP003 = os_env('ETH0_IP_ADDRESS_CMP003', '172.16.167.140') #}
# {# set ETH0_IP_ADDRESS_GTW01 = os_env('ETH0_IP_ADDRESS_GTW01', '172.16.49.5') #}
# {# set ETH0_IP_ADDRESS_GTW02 = os_env('ETH0_IP_ADDRESS_GTW02', '172.16.49.4') #}

{% import 'cookied-bm-mcp-ocata-contrail/underlay--meta-data.yaml' as CLOUDINIT_META_DATA with context %}
{% import 'cookied-bm-mcp-ocata-contrail/underlay--user-data-cfg01.yaml' as CLOUDINIT_USER_DATA_CFG01 with context %}
{% import 'cookied-bm-mcp-ocata-contrail/underlay--user-data1604.yaml' as CLOUDINIT_USER_DATA with context %}
{% import 'cookied-bm-mcp-ocata-contrail/underlay--user-data1604-hwe.yaml' as CLOUDINIT_USER_DATA_HWE with context %}

---
aliases:
 - &interface_model {{ os_env('INTERFACE_MODEL', 'virtio') }}
 - &cloudinit_meta_data {{ CLOUDINIT_META_DATA }}
 - &cloudinit_user_data_cfg01 {{ CLOUDINIT_USER_DATA_CFG01 }}
 - &cloudinit_user_data {{ CLOUDINIT_USER_DATA }}
 - &cloudinit_user_data_hwe {{ CLOUDINIT_USER_DATA_HWE }}


template:
  devops_settings:
    env_name: {{ os_env('ENV_NAME', 'cookied-bm-mcp-ocata-contrail_' + REPOSITORY_SUITE + "_" + os_env('BUILD_NUMBER', '')) }}

    address_pools:
      admin-pool01:
        net: {{ os_env('ADMIN_ADDRESS_POOL01', '172.16.49.64/26:26') }}
        params:
          ip_reserved:
            gateway: +62
            l2_network_device: +61
            default_{{ HOSTNAME_CFG01 }}: {{ ETH1_IP_ADDRESS_CFG01 }}
            default_{{ HOSTNAME_KVM01 }}: {{ ETH0_IP_ADDRESS_KVM01 }}
            default_{{ HOSTNAME_KVM02 }}: {{ ETH0_IP_ADDRESS_KVM02 }}
            default_{{ HOSTNAME_KVM03 }}: {{ ETH0_IP_ADDRESS_KVM03 }}
            default_{{ HOSTNAME_CMP001 }}: {{ ETH0_IP_ADDRESS_CMP001 }}
            default_{{ HOSTNAME_CMP002 }}: {{ ETH0_IP_ADDRESS_CMP002 }}
            default_{{ HOSTNAME_CMP003 }}: {{ ETH0_IP_ADDRESS_CMP003 }}
            # default_{{ HOSTNAME_GTW01 }}: {{ ETH0_IP_ADDRESS_GTW01 }}
            # default_{{ HOSTNAME_GTW02 }}: {{ ETH0_IP_ADDRESS_GTW02 }}
            virtual_{{ HOSTNAME_CFG01 }}: {{ ETH1_IP_ADDRESS_CFG01 }}
            virtual_{{ HOSTNAME_KVM01 }}: {{ ETH0_IP_ADDRESS_KVM01 }}
            virtual_{{ HOSTNAME_KVM02 }}: {{ ETH0_IP_ADDRESS_KVM02 }}
            virtual_{{ HOSTNAME_KVM03 }}: {{ ETH0_IP_ADDRESS_KVM03 }}
            virtual_{{ HOSTNAME_CMP001 }}: {{ ETH0_IP_ADDRESS_CMP001 }}
            virtual_{{ HOSTNAME_CMP002 }}: {{ ETH0_IP_ADDRESS_CMP002 }}
            # virtual_{{ HOSTNAME_CMP003 }}: {{ ETH0_IP_ADDRESS_CMP003 }}
            # virtual_{{ HOSTNAME_GTW01 }}: {{ ETH0_IP_ADDRESS_GTW01 }}
            # virtual_{{ HOSTNAME_GTW02 }}: {{ ETH0_IP_ADDRESS_GTW02 }}
          #ip_ranges:
          #    dhcp: [+2, -4]
      private-pool01:
        net: {{ os_env('PRIVATE_ADDRESS_POOL01', '10.167.8.0/24:24') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: +1

      tenant-pool01:
        net: {{ os_env('TENANT_ADDRESS_POOL01', '10.167.10.0/24:24') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: +1

      external-pool01:
        net: {{ os_env('EXTERNAL_ADDRESS_POOL01', '172.17.42.192/26:26') }}
        params:
          ip_reserved:
            gateway: +1
            l2_network_device: -2

    groups:

      - name: virtual
        driver:
          name: devops.driver.libvirt
          params:
            connection_string: !os_env CONNECTION_STRING, qemu:///system
            storage_pool_name: !os_env STORAGE_POOL_NAME, default
            stp: False
            hpet: False
            enable_acpi: true
            use_host_cpu: !os_env DRIVER_USE_HOST_CPU, true

        network_pools:
          admin: admin-pool01

        l2_network_devices:
          # Ironic management interface
          admin:
            address_pool: admin-pool01
            dhcp: false
            parent_iface:
              phys_dev: !os_env IRONIC_LAB_PXE_IFACE_0

        group_volumes:
         - name: cloudimage1604    # This name is used for 'backing_store' option for node volumes.
           source_image: !os_env IMAGE_PATH1604  # https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img
           format: qcow2
         - name: cfg01_day01_image               # Pre-configured day01 image
           source_image: {{ os_env('IMAGE_PATH_CFG01_DAY01', os_env('IMAGE_PATH1604')) }} # http://images.mirantis.com/cfg01-day01.qcow2 or fallback to IMAGE_PATH1604
           format: qcow2

        nodes:
          - name: {{ HOSTNAME_CFG01 }}
            role: salt_master
            params:
              vcpu: !os_env SLAVE_NODE_CPU, 4
              memory: !os_env SLAVE_NODE_MEMORY, 8192
              boot:
                - hd
              cloud_init_volume_name: iso
              cloud_init_iface_up: ens3
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 150
                  backing_store: cfg01_day01_image
                  format: qcow2
                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.
                  capacity: 1
                  format: raw
                  device: cdrom
                  bus: ide
                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data_cfg01

              interfaces:
                - label: ens3
                  l2_network_device: admin
                  interface_model: *interface_model
                  mac_address: !os_env ETH1_MAC_ADDRESS_CFG01
                #- label: ens4
                #  l2_network_device: private
                #  interface_model: *interface_model
              network_config:
                ens3:
                  networks:
                    - admin
                #ens4:
                #  networks:
                #    - private


      - name: default
        driver:
          name: devops_driver_ironic
          params:
            os_auth_token: fake-token
            ironic_url: !os_env IRONIC_URL  # URL that will be used by fuel-devops
                                            # to access Ironic API
            # Agent URL that is accessible from deploying node when nodes
            # are bootstrapped with PXE. Usually PXE/provision network address is used.
            agent_kernel_url: !os_env IRONIC_AGENT_KERNEL_URL
            agent_ramdisk_url: !os_env IRONIC_AGENT_RAMDISK_URL

        network_pools:
          admin: admin-pool01

        nodes:

        #  - name: {{ HOSTNAME_CFG01 }}
        #    role: salt_master
        #    params:
        #      ipmi_user: !os_env IPMI_USER
        #      ipmi_password: !os_env IPMI_PASSWORD
        #      ipmi_previlegies: OPERATOR
        #      ipmi_host: !os_env IPMI_HOST_CFG01  # hostname or IP address
        #      ipmi_lan_interface: lanplus
        #      ipmi_port: 623

        #      root_volume_name: system     # see 'volumes' below
        #      cloud_init_volume_name: iso  # see 'volumes' below
        #      cloud_init_iface_up: enp3s0f1  # see 'interfaces' below.
        #      volumes:
        #        - name: system
        #          capacity: !os_env NODE_VOLUME_SIZE, 200

        #          # The same as for agent URL, here is an URL to the image that should be
        #          # used for deploy the node. It should also be accessible from deploying
        #          # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
        #          source_image: !os_env IRONIC_SOURCE_IMAGE_URL
        #          source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

        #        - name: iso  # Volume with name 'iso' will be used
        #                     # for store image with cloud-init metadata.

        #          cloudinit_meta_data: *cloudinit_meta_data
        #          cloudinit_user_data: *cloudinit_user_data_cfg01

        #      interfaces:
        #        - label: enp3s0f0  # Infra interface
        #          mac_address: !os_env ETH0_MAC_ADDRESS_CFG01
        #        - label: enp3s0f1
        #          l2_network_device: admin
        #          mac_address: !os_env ETH1_MAC_ADDRESS_CFG01

        #      network_config:
        #        enp3s0f0:
        #          networks:
        #           - infra
        #        enp3s0f1:
        #          networks:
        #           - admin

          - name: {{ HOSTNAME_KVM01 }}
            role: salt_minion
            params:
              ipmi_user: !os_env IPMI_USER
              ipmi_password: !os_env IPMI_PASSWORD
              ipmi_previlegies: OPERATOR
              ipmi_host: !os_env IPMI_HOST_KVM01  # hostname or IP address
              ipmi_lan_interface: lanplus
              ipmi_port: 623

              root_volume_name: system     # see 'volumes' below
              cloud_init_volume_name: iso  # see 'volumes' below
              cloud_init_iface_up: enp9s0f0  # see 'interfaces' below.
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 200

                  # The same as for agent URL, here is an URL to the image that should be
                  # used for deploy the node. It should also be accessible from deploying
                  # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
                  source_image: !os_env IRONIC_SOURCE_IMAGE_URL
                  source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.

                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data

              interfaces:
                - label: enp9s0f0
                  l2_network_device: admin
                  mac_address: !os_env ETH0_MAC_ADDRESS_KVM01
                - label: enp9s0f1
                  mac_address: !os_env ETH1_MAC_ADDRESS_KVM01

              network_config:
                enp9s0f0:
                  networks:
                   - admin
                bond0:
                  networks:
                   - control
                  aggregation: active-backup
                  parents:
                   - enp9s0f1

          - name: {{ HOSTNAME_KVM02 }}
            role: salt_minion
            params:
              ipmi_user: !os_env IPMI_USER
              ipmi_password: !os_env IPMI_PASSWORD
              ipmi_previlegies: OPERATOR
              ipmi_host: !os_env IPMI_HOST_KVM02  # hostname or IP address
              ipmi_lan_interface: lanplus
              ipmi_port: 623

              root_volume_name: system     # see 'volumes' below
              cloud_init_volume_name: iso  # see 'volumes' below
              cloud_init_iface_up: enp9s0f0  # see 'interfaces' below.
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 200

                  # The same as for agent URL, here is an URL to the image that should be
                  # used for deploy the node. It should also be accessible from deploying
                  # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
                  source_image: !os_env IRONIC_SOURCE_IMAGE_URL
                  source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.

                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data

              interfaces:
                - label: enp9s0f0
                  l2_network_device: admin
                  mac_address: !os_env ETH0_MAC_ADDRESS_KVM02
                - label: enp9s0f1
                  mac_address: !os_env ETH1_MAC_ADDRESS_KVM02

              network_config:
                enp9s0f0:
                  networks:
                   - admin
                bond0:
                  networks:
                   - control
                  aggregation: active-backup
                  parents:
                   - enp9s0f1

          - name: {{ HOSTNAME_KVM03 }}
            role: salt_minion
            params:
              ipmi_user: !os_env IPMI_USER
              ipmi_password: !os_env IPMI_PASSWORD
              ipmi_previlegies: OPERATOR
              ipmi_host: !os_env IPMI_HOST_KVM03  # hostname or IP address
              ipmi_lan_interface: lanplus
              ipmi_port: 623

              root_volume_name: system     # see 'volumes' below
              cloud_init_volume_name: iso  # see 'volumes' below
              # cloud_init_iface_up: eno1  # see 'interfaces' below.
              cloud_init_iface_up: enp9s0f0  # see 'interfaces' below.
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 200

                  # The same as for agent URL, here is an URL to the image that should be
                  # used for deploy the node. It should also be accessible from deploying
                  # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
                  source_image: !os_env IRONIC_SOURCE_IMAGE_URL
                  source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.

                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data

              interfaces:
                # - label: eno1
                - label: enp9s0f0
                  l2_network_device: admin
                  mac_address: !os_env ETH0_MAC_ADDRESS_KVM03
                # - label: eno2
                - label: enp9s0f1
                  mac_address: !os_env ETH1_MAC_ADDRESS_KVM03

              network_config:
                # eno1:
                enp9s0f0:
                  networks:
                   - admin
                bond0:
                  networks:
                   - control
                  aggregation: active-backup
                  parents:
                   - enp9s0f1


          - name: {{ HOSTNAME_CMP001 }}
            role: salt_minion
            params:
              ipmi_user: !os_env IPMI_USER
              ipmi_password: !os_env IPMI_PASSWORD
              ipmi_previlegies: OPERATOR
              ipmi_host: !os_env IPMI_HOST_CMP001  # hostname or IP address
              ipmi_lan_interface: lanplus
              ipmi_port: 623

              root_volume_name: system     # see 'volumes' below
              cloud_init_volume_name: iso  # see 'volumes' below
              # cloud_init_iface_up: enp3s0f0  # see 'interfaces' below.
              cloud_init_iface_up: enp2s0f1  # see 'interfaces' below.
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 200

                  # The same as for agent URL, here is an URL to the image that should be
                  # used for deploy the node. It should also be accessible from deploying
                  # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
                  source_image: !os_env IRONIC_SOURCE_IMAGE_URL
                  source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.

                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data_hwe

              interfaces:
                - label: enp2s0f0
                  mac_address: !os_env ETH0_MAC_ADDRESS_CMP001
                - label: enp2s0f1
                  l2_network_device: admin
                  mac_address: !os_env ETH1_MAC_ADDRESS_CMP001
                - label: enp5s0f0
                  mac_address: !os_env ETH2_MAC_ADDRESS_CMP001
                  features: ['dpdk', 'dpdk_pci: 0000:05:00.0']
                - label: enp5s0f1
                  mac_address: !os_env ETH3_MAC_ADDRESS_CMP001
                  features: ['dpdk', 'dpdk_pci: 0000:05:00.1']
                # - label: enp5s0f2
                #   mac_address: !os_env ETH4_MAC_ADDRESS_CMP001
                #   features: ['dpdk', 'dpdk_pci: 0000:05:00.2']

              network_config:
                enp2s0f0:
                  networks:
                   - admin
                bond0:
                  networks:
                   - control
                  aggregation: active-backup
                  parents:
                   - enp5s0f0
                   - enp5s0f1



          - name: {{ HOSTNAME_CMP002 }}
            role: salt_minion
            params:
              ipmi_user: !os_env IPMI_USER
              ipmi_password: !os_env IPMI_PASSWORD
              ipmi_previlegies: OPERATOR
              ipmi_host: !os_env IPMI_HOST_CMP002  # hostname or IP address
              ipmi_lan_interface: lanplus
              ipmi_port: 623

              root_volume_name: system     # see 'volumes' below
              cloud_init_volume_name: iso  # see 'volumes' below
              # cloud_init_iface_up: eno1  # see 'interfaces' below.
              cloud_init_iface_up: enp2s0f1  # see 'interfaces' below.
              volumes:
                - name: system
                  capacity: !os_env NODE_VOLUME_SIZE, 200

                  # The same as for agent URL, here is an URL to the image that should be
                  # used for deploy the node. It should also be accessible from deploying
                  # node when nodes are provisioned by agent. Usually PXE/provision network address is used.
                  source_image: !os_env IRONIC_SOURCE_IMAGE_URL
                  source_image_checksum: !os_env IRONIC_SOURCE_IMAGE_CHECKSUM

                - name: iso  # Volume with name 'iso' will be used
                             # for store image with cloud-init metadata.

                  cloudinit_meta_data: *cloudinit_meta_data
                  cloudinit_user_data: *cloudinit_user_data_hwe

              interfaces:
                # - label: eno1
                - label: enp2s0f0
                  mac_address: !os_env ETH0_MAC_ADDRESS_CMP002
                # - label: eth0
                - label: enp2s0f1
                  l2_network_device: admin
                  mac_address: !os_env ETH1_MAC_ADDRESS_CMP002
                # - label: eth3
                - label: enp5s0f0
                  mac_address: !os_env ETH2_MAC_ADDRESS_CMP002
                  features: ['dpdk', 'dpdk_pci: 0000:05:00.0']
                # - label: eth2
                - label: enp5s0f1
                  mac_address: !os_env ETH3_MAC_ADDRESS_CMP002
                  features: ['dpdk', 'dpdk_pci: 0000:05:00.1']
                # - label: eth4
                #   mac_address: !os_env ETH4_MAC_ADDRESS_CMP002
                #   features: ['dpdk', 'dpdk_pci: 0000:0b:00.0']

              network_config:
                enp2s0f1:
                  networks:
                   - admin
                bond0:
                  networks:
                   - control
                  aggregation: active-backup
                  parents:
                   - enp5s0f0
                   - enp5s0f1
