Add prepared 'environment' model for baremetal lab03 (ovs-dpdk)

Change-Id: Ia2e8c00fd495628fc04107b1414033d888c6c5d6
Reviewed-on: https://review.gerrithub.io/369976
Reviewed-by: Dennis Dmitriev <dis.xcom@gmail.com>
Tested-by: Dennis Dmitriev <dis.xcom@gmail.com>
diff --git a/tcp_tests/environments/lab03_ovs_dpdk/common.yml b/tcp_tests/environments/lab03_ovs_dpdk/common.yml
new file mode 100644
index 0000000..cbf1423
--- /dev/null
+++ b/tcp_tests/environments/lab03_ovs_dpdk/common.yml
@@ -0,0 +1,7 @@
+parameters:
+  _param:
+  # Put any environment-specific variables here
+
+  linux:
+    network:
+      interface: ${_param:linux_network_interfaces}
diff --git a/tcp_tests/environments/lab03_ovs_dpdk/description.txt b/tcp_tests/environments/lab03_ovs_dpdk/description.txt
new file mode 100644
index 0000000..9861193
--- /dev/null
+++ b/tcp_tests/environments/lab03_ovs_dpdk/description.txt
@@ -0,0 +1,23 @@
+MCP BM LAB03, see [1]
+
+This environment is designed to test ovs-dpdk, but can be used for
+testing other models that fit the nodes in this lab.
+
+Lab contains the following hosts:
+
+kvm01: cz8113.bud.mirantis.net
+kvm02: cz7168.bud.mirantis.net
+kvm03: cz7169.bud.mirantis.net
+cmp001: cz7395.bud.mirantis.net
+cmp002: cz7166.bud.mirantis.net
+gtw01: cz7636.bud.mirantis.net
+gtw02: cz7637.bud.mirantis.net
+
+reclass.storage definitions that are created from the cluster model
+after the first salt-inventory generation and placed to init.yml here.
+
+To create a new 'environmet' model with additional classes is used reclass_tools [2]
+while the 'environment' model is at the PoC stage.
+
+[1] https://docs.google.com/document/d/1RrC8MYBL2yJjlf7IjAh8zlzcS4ejVt_5gf9sPNcPMbQ/
+[2] https://github.com/dis-xcom/reclass_tools
diff --git a/tcp_tests/environments/lab03_ovs_dpdk/init.yml b/tcp_tests/environments/lab03_ovs_dpdk/init.yml
new file mode 100644
index 0000000..5068c3c
--- /dev/null
+++ b/tcp_tests/environments/lab03_ovs_dpdk/init.yml
@@ -0,0 +1,579 @@
+parameters:
+  reclass:
+    storage:
+      node:
+        stacklight_telemetry_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_telemetry_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_message_queue_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_gateway_node03:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: enp2s0f1
+                type: bond
+                use_interfaces:
+                - enp2s0f1
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: 10.167.4.226
+                bridge: br-floating
+                enabled: true
+                netmask: 255.255.255.0
+                ovs_options: tag=2416
+                proto: static
+                type: ovs_port
+              floating-to-prv:
+                bridge: br-floating
+                enabled: true
+                peer: prv-to-floating
+                port_type: patch
+                type: ovs_port
+              primary_first_nic:
+                enabled: true
+                master: bond0
+                name: enp2s0f1
+                proto: manual
+                type: slave
+              prv-to-floating:
+                bridge: br-prv
+                enabled: true
+                peer: floating-to-prv
+                port_type: patch
+                type: ovs_port
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_database_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_gateway_node02:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: enp2s0f1
+                type: bond
+                use_interfaces:
+                - enp2s0f1
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: 10.167.4.225
+                bridge: br-floating
+                enabled: true
+                netmask: 255.255.255.0
+                ovs_options: tag=2416
+                proto: static
+                type: ovs_port
+              floating-to-prv:
+                bridge: br-floating
+                enabled: true
+                peer: prv-to-floating
+                port_type: patch
+                type: ovs_port
+              primary_first_nic:
+                enabled: true
+                master: bond0
+                name: enp2s0f1
+                proto: manual
+                type: slave
+              prv-to-floating:
+                bridge: br-prv
+                enabled: true
+                peer: floating-to-prv
+                port_type: patch
+                type: ovs_port
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_control_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_monitor_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_telemetry_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_message_queue_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        infra_kvm_node01:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: enp3s0f1
+                type: bond
+                use_interfaces:
+                - enp3s0f1
+              bond0.2416:
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+              br_ctl:
+                address: 10.167.4.241
+                enabled: true
+                netmask: 255.255.255.0
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.2416
+              br_mgm:
+                address: 172.16.49.11
+                enabled: true
+                gateway: 172.16.49.1
+                name_servers:
+                - 8.8.8.8
+                - 8.8.4.4
+                netmask: 255.255.255.192
+                proto: static
+                type: bridge
+                use_interfaces:
+                - enp3s0f0
+              eth1:
+                enabled: true
+                master: bond0
+                name: enp3s0f1
+                proto: manual
+                type: slave
+              eth2:
+                enabled: true
+                name: enp3s0f0
+                proto: manual
+                type: eth
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_proxy_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_telemetry_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        infra_kvm_node02:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: eno2
+                type: bond
+                use_interfaces:
+                - eno2
+              bond0.2416:
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+              br_ctl:
+                address: 10.167.4.242
+                enabled: true
+                netmask: 255.255.255.0
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.2416
+              br_mgm:
+                address: 172.16.49.12
+                enabled: true
+                gateway: 172.16.49.1
+                name_servers:
+                - 8.8.8.8
+                - 8.8.4.4
+                netmask: 255.255.255.192
+                proto: static
+                type: bridge
+                use_interfaces:
+                - eno1
+              eth1:
+                enabled: true
+                master: bond0
+                name: eno2
+                proto: manual
+                type: slave
+              eth2:
+                enabled: true
+                name: eno1
+                proto: manual
+                type: eth
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_monitor_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_telemetry_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_log_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_proxy_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_message_queue_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_log_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_database_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_control_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_compute_node02:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0.2416:
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+              br-prv:
+                address: 10.167.6.102
+                enabled: true
+                netmask: 255.255.255.0
+                type: dpdk_ovs_bridge
+              br_ctl:
+                address: 10.167.4.102
+                enabled: true
+                netmask: 255.255.255.0
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.2416
+              dpdk0:
+                bond: dpdkbond1
+                driver: igb_uio
+                enabled: true
+                n_rxq: 2
+                name: eth2
+                pci: '0000:05:00.1'
+                type: dpdk_ovs_port
+              dpdk1:
+                bond: dpdkbond1
+                driver: igb_uio
+                enabled: true
+                n_rxq: 2
+                name: eth4
+                pci: 0000:0b:00.0
+                type: dpdk_ovs_port
+              dpdkbond1:
+                bridge: br-prv
+                enabled: true
+                mode: active-backup
+                type: dpdk_ovs_bond
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_gateway_node01:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: enp2s0f1
+                type: bond
+                use_interfaces:
+                - enp2s0f1
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: 10.167.4.224
+                bridge: br-floating
+                enabled: true
+                netmask: 255.255.255.0
+                ovs_options: tag=2416
+                proto: static
+                type: ovs_port
+              floating-to-prv:
+                bridge: br-floating
+                enabled: true
+                peer: prv-to-floating
+                port_type: patch
+                type: ovs_port
+              primary_first_nic:
+                enabled: true
+                master: bond0
+                name: enp2s0f1
+                proto: manual
+                type: slave
+              prv-to-floating:
+                bridge: br-prv
+                enabled: true
+                peer: floating-to-prv
+                port_type: patch
+                type: ovs_port
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_log_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_compute_node01:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0.2416:
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+              br-prv:
+                address: 10.167.6.101
+                enabled: true
+                netmask: 255.255.255.0
+                type: dpdk_ovs_bridge
+              br_ctl:
+                address: 10.167.4.101
+                enabled: true
+                netmask: 255.255.255.0
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.2416
+              dpdk0:
+                bond: dpdkbond1
+                driver: igb_uio
+                enabled: true
+                n_rxq: 2
+                name: enp5s0f1
+                pci: '0000:05:00.1'
+                type: dpdk_ovs_port
+              dpdk1:
+                bond: dpdkbond1
+                driver: igb_uio
+                enabled: true
+                n_rxq: 2
+                name: enp5s0f2
+                pci: '0000:05:00.2'
+                type: dpdk_ovs_port
+              dpdkbond1:
+                bridge: br-prv
+                enabled: true
+                mode: active-backup
+                type: dpdk_ovs_bond
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_database_node03:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        infra_kvm_node03:
+          params:
+            # Use interfaces configuration from the context file,
+            # or generate your own 'linux.network.interface' object using
+            # additional inventory.
+            # For example, you can take the 'inventory_node_name' and find it's config
+            # in an additional dict inventory[inventory_node_name] loaded from custom_inventory.yaml,
+            # or skip the original context from 'cookiecutter' object and iterate only custom inventory.
+            linux_network_interfaces:
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: eno2
+                type: bond
+                use_interfaces:
+                - eno2
+              bond0.2416:
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+              br_ctl:
+                address: 10.167.4.243
+                enabled: true
+                netmask: 255.255.255.0
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.2416
+              br_mgm:
+                address: 172.16.49.13
+                enabled: true
+                gateway: 172.16.49.1
+                name_servers:
+                - 8.8.8.8
+                - 8.8.4.4
+                netmask: 255.255.255.192
+                proto: static
+                type: bridge
+                use_interfaces:
+                - eno1
+              eth1:
+                enabled: true
+                master: bond0
+                name: eno2
+                proto: manual
+                type: slave
+              eth2:
+                enabled: true
+                name: eno1
+                proto: manual
+                type: eth
+
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_monitor_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        openstack_control_node01:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common
+        stacklight_telemetry_node02:
+          params:
+            linux_network_interfaces:
+              ens3: ${_param:linux_single_interface}
+          classes:
+          - environment.lab03_ovs_dpdk.common