Initial commit

Change-Id: I82738f63c49d10385183c6e626239cd15618d58b
diff --git "a/\173\043 interfaces \043\175/bond0_ab_contrail" "b/\173\043 interfaces \043\175/bond0_ab_contrail"
new file mode 100644
index 0000000..8de76d6
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_contrail"
@@ -0,0 +1,63 @@
+{#- Provides:     #}
+{#-   br_mesh (linux bridge) + tenant address #}
+{#-   vhost0 , as a keepalived vip interface #}
+{#- Requirements:                     #}
+{#-   _param:tenant_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_network_gateway         #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                mtu: 9000
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+
+              {{- set_param('keepalived_vip_interface', 'vhost0') }}
+              vhost0:
+                mtu: 9000
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                gateway: ${_param:_esc}{_param:tenant_network_gateway}
+                enabled: true
+                proto: static
+                type: eth
+                pre_up_cmds:
+                - /usr/lib/contrail/if-vhost0
+                name_servers:
+                - ${_param:_esc}{_param:dns_server01}
+                - ${_param:_esc}{_param:dns_server02}
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+              bond0.tenant_vlan:
+                mtu: 9000
+                name: bond0.${_param:_esc}{_param:tenant_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
diff --git "a/\173\043 interfaces \043\175/bond0_ab_ctl_contrail" "b/\173\043 interfaces \043\175/bond0_ab_ctl_contrail"
new file mode 100644
index 0000000..dfee7cd
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_ctl_contrail"
@@ -0,0 +1,88 @@
+{#- Provides:     #}
+{#-   br_ctl (linux bridge) + control address #}
+{#-   vhost0  #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_vlan           #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:tenant_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_network_gateway         #}
+{#-   _param:_param:dns_server01         #}
+{#-   _param:_param:dns_server02         #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                mtu: 9000
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+              bond0.control_vlan:
+                mtu: 9000
+                name: bond0.${_param:_esc}{_param:control_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
+
+              vhost0:
+                mtu: 9000
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                gateway: ${_param:_esc}{_param:tenant_network_gateway}
+                enabled: true
+                proto: static
+                type: eth
+                pre_up_cmds:
+                - /usr/lib/contrail/if-vhost0
+                name_servers:
+                - ${_param:_esc}{_param:dns_server01}
+                - ${_param:_esc}{_param:dns_server02}
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+              bond0.tenant_vlan:
+                mtu: 9000
+                name: bond0.${_param:_esc}{_param:tenant_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
diff --git "a/\173\043 interfaces \043\175/bond0_ab_dvr_vlan_ctl_prv_floating" "b/\173\043 interfaces \043\175/bond0_ab_dvr_vlan_ctl_prv_floating"
new file mode 100644
index 0000000..a4f891d
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_dvr_vlan_ctl_prv_floating"
@@ -0,0 +1,65 @@
+{#- Tenant over VLAN. For gateway nodes and computes with dvr #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_prv (OVS bridge) #}
+{#-   br_floating (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-floating
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-floating
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              floating-to-prv:
+                enabled: true
+                type: ovs_port
+                port_type: patch
+                bridge: br-floating
+                peer: prv-to-floating
+              prv-to-floating:
+                enabled: true
+                type: ovs_port
+                port_type: patch
+                bridge: br-prv
+                peer: floating-to-prv
diff --git "a/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_floating" "b/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_floating"
new file mode 100644
index 0000000..265aba8
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_dvr_vxlan_ctl_mesh_floating"
@@ -0,0 +1,63 @@
+{#- Tenant over VXLAN. For gateway nodes and computes with dvr #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_mesh (OVS bridge) + tenant address #}
+{#-   br_floating (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-floating:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-floating
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-floating
+              br-mesh:
+                enabled: true
+                type: ovs_port
+                bridge: br-floating
+                proto: static
+                ovs_options: tag=${_param:_esc}{_param:tenant_vlan}
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                require_interfaces:
+                - br-floating
diff --git "a/\173\043 interfaces \043\175/bond0_ab_nondvr_vlan_ctl_prv" "b/\173\043 interfaces \043\175/bond0_ab_nondvr_vlan_ctl_prv"
new file mode 100644
index 0000000..53cdb09
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_nondvr_vlan_ctl_prv"
@@ -0,0 +1,49 @@
+{#- Tenant over VLAN. For computes without dvr #}
+{#- Provides:     #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_prv (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-prv
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-prv
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-prv
diff --git "a/\173\043 interfaces \043\175/bond0_ab_nondvr_vxlan_ctl_mesh" "b/\173\043 interfaces \043\175/bond0_ab_nondvr_vxlan_ctl_mesh"
new file mode 100644
index 0000000..42dbfca
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_nondvr_vxlan_ctl_mesh"
@@ -0,0 +1,76 @@
+{#- Tenant over VXLAN. For computes without dvr #}
+{#- Provides:     #}
+{#-   br_ctl (linux bridge) + control address #}
+{#-   br_mesh (linux bridge) + tenant address #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+              bond0.control_vlan:
+                name: bond0.${_param:_esc}{_param:control_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
+
+              br_mesh:
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                enabled: true
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:tenant_vlan}
+              bond0.tenant_vlan:
+                name: bond0.${_param:_esc}{_param:tenant_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
diff --git "a/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl" "b/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl"
new file mode 100644
index 0000000..d6bbd72
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl"
@@ -0,0 +1,53 @@
+{#- Control network with bond. For control plane nodes #}
+{#- Provides:     #}
+{#-   br_ctl (linux bridge) + control address #}
+{#-   _param:keepalived_vip_interface = 'br_ctl' #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                proto: static
+                type: bridge
+                use_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+                require_interfaces:
+                - bond0.${_param:_esc}{_param:control_vlan}
+              bond0.control_vlan:
+                name: bond0.${_param:_esc}{_param:control_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - bond0
+                require_interfaces:
+                - bond0
diff --git "a/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl_prv" "b/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl_prv"
new file mode 100644
index 0000000..3cba8de
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_ovs_vlan_ctl_prv"
@@ -0,0 +1,49 @@
+{#- Tenant over VLAN. For gateway and compute nodes #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_prv (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-prv
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-prv:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-prv
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-prv
diff --git "a/\173\043 interfaces \043\175/bond0_ab_ovs_vxlan_ctl_mesh" "b/\173\043 interfaces \043\175/bond0_ab_ovs_vxlan_ctl_mesh"
new file mode 100644
index 0000000..2aea73d
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond0_ab_ovs_vxlan_ctl_mesh"
@@ -0,0 +1,62 @@
+{#- Tenant over VXLAN. For gateway and compute nodes #}
+{#- Provides:                         #}
+{#-   br_ctl (OVS bridge) + control address #}
+{#-   br_mesh (OVS bridge) + tenant address #}
+{#- Requirements:                     #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan           #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+{#-   _param:tenant_vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond0  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond0:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-ten
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-ten:
+                enabled: true
+                type: ovs_bridge
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                bridge: br-ten
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                ovs_options: tag=${_param:_esc}{_param:control_vlan}
+                proto: static
+                type: ovs_port
+                require_interfaces:
+                - br-ten
+              br-mesh:
+                enabled: true
+                type: ovs_port
+                bridge: br-ten
+                proto: static
+                ovs_options: tag=${_param:_esc}{_param:tenant_vlan}
+                address: ${_param:_esc}{_param:tenant_address}
+                netmask: ${_param:_esc}{_param:tenant_network_netmask}
+                require_interfaces:
+                - br-ten
diff --git "a/\173\043 interfaces \043\175/bond1_ab_ovs_floating" "b/\173\043 interfaces \043\175/bond1_ab_ovs_floating"
new file mode 100644
index 0000000..9df5f46
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond1_ab_ovs_floating"
@@ -0,0 +1,38 @@
+{#- Floating on a separated bond interfaces. For gateway nodes and computes with dvr #}
+{#- Provides:                         #}
+{#-   br_floating (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:?addr         #}
+{#-   _param:?mask         #}
+{#-   _param:?vlan           #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                mtu: 9000
+                enabled: true
+                master: bond1  # ?
+                name: {{ interface_name }}
+                proto: manual
+                type: slave  # ?
+                ipflush_onchange: true
+              {%- endfor %}
+              bond1:
+                enabled: true
+                mode: active-backup
+                ovs_bridge: br-floating
+                ovs_type: OVSPort
+                proto: manual
+                slaves: {{ ' '.join(interfaces.keys()) }}
+                type: bond
+                use_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+                require_interfaces:
+                {%- for interface_name in interfaces.keys() %}
+                - {{ interface_name }}
+                {%- endfor %}
+              br-floating:
+                enabled: true
+                type: ovs_bridge
diff --git "a/\173\043 interfaces \043\175/bond2_dpdk_prv" "b/\173\043 interfaces \043\175/bond2_dpdk_prv"
new file mode 100644
index 0000000..39bc013
--- /dev/null
+++ "b/\173\043 interfaces \043\175/bond2_dpdk_prv"
@@ -0,0 +1,27 @@
+{#- Provides:                         #}
+{#-   br-prv (OVS bridge) #}
+{#- Requirements:                     #}
+{#-   _param:tenant_address         #}
+{#-   _param:tenant_netmask         #}
+
+              # {{ interfaces_role }}
+              {%- for interface_name, interface in interfaces.items() %}
+              {{ interface_name }}:
+                bond: bonddpdk2
+                driver: igb_uio
+                enabled: true
+                n_rxq: 2
+                name: {{ interface_name }}
+                pci: '{{ interface['dpdk_pci'] }}'
+                type: dpdk_ovs_port
+              {%- endfor %}
+              bonddpdk2:
+                bridge: br-prv
+                enabled: true
+                mode: active-backup
+                type: dpdk_ovs_bond
+              br-prv:
+                address: ${_param:_esc}{_param:tenant_address}
+                enabled: true
+                netmask: ${_param:_esc}{_param:tenant_netmask}
+                type: dpdk_ovs_bridge
diff --git "a/\173\043 interfaces \043\175/readme.txt" "b/\173\043 interfaces \043\175/readme.txt"
new file mode 100644
index 0000000..cf80b5b
--- /dev/null
+++ "b/\173\043 interfaces \043\175/readme.txt"
@@ -0,0 +1,10 @@
+Patterns from this folder are used for two purposes:
+1. Configure the real node interfaces as specified in the inventory.
+2. Provide the following list of interfaces for the underlay level:
+  - br_mgm: Access from infrastructure management network / admin network / DHCP / PXE
+  - br_ctl: OpenStack control network for internal services
+  - br-prv: For tenant networks with VLAN segmentation
+  - br-ten: For tenant networks with VXLAN segmentation
+  - br-mesh: Endpoint for VXLAN tunnels that are used by br-ten
+  - br-floating: Connection to the floating network
+  - vhost0: for OpenContrail workloads
\ No newline at end of file
diff --git "a/\173\043 interfaces \043\175/single_ctl" "b/\173\043 interfaces \043\175/single_ctl"
new file mode 100644
index 0000000..ce54ed7
--- /dev/null
+++ "b/\173\043 interfaces \043\175/single_ctl"
@@ -0,0 +1,31 @@
+{#- Control network. For control plane nodes #}
+{#- Provides:                         #}
+{#-   br_ctl (linux bridge) + address #}
+{#-   _param:keepalived_vip_interface = 'br_ctl' #}
+{#- Requires:                         #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:dns_server01         #}
+{#-   _param:dns_server02         #}
+
+              # {{ interfaces_role }}
+              {%- set interface_name = interfaces.keys()[0] %}
+              {{ interface_name }}:
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              br_ctl:
+                address: ${_param:_esc}{_param:single_address}
+                enabled: true
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                proto: static
+                type: bridge
+                name_servers:
+                - ${_param:_esc}{_param:dns_server01}
+                - ${_param:_esc}{_param:dns_server02}
+                use_interfaces:
+                - {{ interface_name }}
+                require_interfaces:
+                - {{ interface_name }}
diff --git "a/\173\043 interfaces \043\175/single_dhcp" "b/\173\043 interfaces \043\175/single_dhcp"
new file mode 100644
index 0000000..87315e0
--- /dev/null
+++ "b/\173\043 interfaces \043\175/single_dhcp"
@@ -0,0 +1,11 @@
+{#- Management (admin) network with DHCP #}
+{#- Provides:                         #}
+{#-   <interface_name> + DHCP address #}
+
+              # {{ interfaces_role }}
+              {%- set interface_name = interfaces.keys()[0] %}
+              {{ interface_name }}:
+                enabled: true
+                type: eth
+                proto: dhcp
+                name: {{ interface_name }}
\ No newline at end of file
diff --git "a/\173\043 interfaces \043\175/single_mgm" "b/\173\043 interfaces \043\175/single_mgm"
new file mode 100644
index 0000000..a0de958
--- /dev/null
+++ "b/\173\043 interfaces \043\175/single_mgm"
@@ -0,0 +1,30 @@
+{#- Management (admin) network. For nodes where deploy address must be configured as static (at least cfg*) #}
+{#- Provides:                         #}
+{#-   br_mgm (linux bridge) + address #}
+{#- Requires:                         #}
+{#-   _param:deploy_address         #}
+{#-   _param:deploy_network_netmask         #}
+{#-   _param:deploy_network_gateway         #}
+{#-   _param:dns_server01         #}
+{#-   _param:dns_server02         #}
+
+              # {{ interfaces_role }}
+              {%- set interface_name = interfaces.keys()[0] %}
+              {{ interface_name }}:
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              br_mgm:
+                address: ${_param:_esc}{_param:deploy_address}
+                netmask: ${_param:_esc}{_param:deploy_network_netmask}  #lab03: 255.255.255.192
+                gateway: ${_param:_esc}{_param:deploy_network_gateway}  #lab03: 172.16.49.1
+                enabled: true
+                name_servers:
+                - ${_param:_esc}{_param:dns_server01}
+                - ${_param:_esc}{_param:dns_server02}
+                proto: static
+                type: bridge
+                use_interfaces:
+                - {{ interface_name }}
diff --git "a/\173\043 interfaces \043\175/single_mgm_dhcp" "b/\173\043 interfaces \043\175/single_mgm_dhcp"
new file mode 100644
index 0000000..fd2bf66
--- /dev/null
+++ "b/\173\043 interfaces \043\175/single_mgm_dhcp"
@@ -0,0 +1,18 @@
+{#- Management (admin) network. For nodes where deploy address provided by DHCP server #}
+{#- Provides:                         #}
+{#-   br_mgm (linux bridge) + DHCP address #}
+
+              # {{ interfaces_role }}
+              {%- set interface_name = interfaces.keys()[0] %}
+              {{ interface_name }}:
+                enabled: true
+                type: eth
+                proto: manual
+                ipflush_onchange: true
+                name: {{ interface_name }}
+              br_mgm:
+                enabled: true
+                proto: dhcp
+                type: bridge
+                use_interfaces:
+                - {{ interface_name }}
diff --git "a/\173\043 interfaces \043\175/single_vlan_ctl" "b/\173\043 interfaces \043\175/single_vlan_ctl"
new file mode 100644
index 0000000..2b899a2
--- /dev/null
+++ "b/\173\043 interfaces \043\175/single_vlan_ctl"
@@ -0,0 +1,41 @@
+{#- Control network. For control plane nodes #}
+{#- Provides:                         #}
+{#-   br_ctl (linux bridge) + address #}
+{#-   _param:keepalived_vip_interface = 'br_ctl' #}
+{#- Requires:                         #}
+{#-   _param:single_address         #}
+{#-   _param:control_network_netmask         #}
+{#-   _param:control_vlan         #}
+{#-   _param:dns_server01         #}
+{#-   _param:dns_server02         #}
+
+              # {{ interfaces_role }}
+              {%- set interface_name = interfaces.keys()[0] %}
+              {{ interface_name }}:
+                enabled: true
+                name: {{ interface_name }}
+                proto: manual
+                type: eth
+                ipflush_onchange: true
+              br_ctl:
+                enabled: true
+                address: ${_param:_esc}{_param:single_address}
+                netmask: ${_param:_esc}{_param:control_network_netmask}
+                proto: static
+                type: bridge
+                name_servers:
+                - ${_param:_esc}{_param:dns_server01}
+                - ${_param:_esc}{_param:dns_server02}
+                use_interfaces:
+                - {{ interface_name }}.${_param:_esc}{_param:control_vlan}
+                require_interfaces:
+                - {{ interface_name }}.${_param:_esc}{_param:control_vlan}
+              {{ interface_name }}.control_vlan:
+                name: {{ interface_name }}.${_param:_esc}{_param:control_vlan}
+                enabled: true
+                proto: manual
+                type: vlan
+                use_interfaces:
+                - {{ interface_name }}
+                require_interfaces:
+                - {{ interface_name }}