Merge "Return gateway node to new OS OVS labs"
diff --git a/classes/cluster/os_ha_ovs/infra/config.yml b/classes/cluster/os_ha_ovs/infra/config.yml
index 7d36a2b..bbc9975 100644
--- a/classes/cluster/os_ha_ovs/infra/config.yml
+++ b/classes/cluster/os_ha_ovs/infra/config.yml
@@ -105,6 +105,19 @@
               value_template: <<node_tenant_ip>>
             external_address:
               value_template: <<node_external_ip>>
+        openstack_gateway:
+          expression: <<node_hostname>>__startswith__gtw
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.gateway
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
+          cluster_param:
+            openstack_gateway_node01_address:
+              value_template: <<node_control_ip>>
       node:
         openstack_control_node01:
           classes:
diff --git a/classes/cluster/os_ha_ovs/openstack/gateway.yml b/classes/cluster/os_ha_ovs/openstack/gateway.yml
new file mode 100644
index 0000000..2e7f0f0
--- /dev/null
+++ b/classes/cluster/os_ha_ovs/openstack/gateway.yml
@@ -0,0 +1,78 @@
+classes:
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.neutron.gateway.cluster
+- cluster.virtual-mcp11-ovs
+parameters:
+  _param:
+    primary_interface: ens4
+    tenant_interface: ens5
+    external_interface: ens6
+    interface_mtu: 9000
+    linux_system_codename: xenial
+  linux:
+    network:
+      bridge: openvswitch
+      interface:
+        dhcp_int:
+          enabled: true
+          name: ens3
+          proto: dhcp
+          type: eth
+          mtu: ${_param:interface_mtu}
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        tenant_interface:
+          enabled: true
+          name: ${_param:tenant_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        external_interface:
+          enabled: true
+          name: ${_param:external_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        br-floating:
+          enabled: true
+          type: ovs_bridge
+          mtu: ${_param:interface_mtu}
+        br-mgmt:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          mtu: ${_param:interface_mtu}
+          use_interfaces:
+          - ${_param:primary_interface}
+        br-mesh:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:tenant_interface}
+        float-to-ex:
+          enabled: true
+          type: ovs_port
+          mtu: ${_param:interface_mtu}
+          bridge: br-floating
+        br-ex:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          address: ${_param:external_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:external_interface}
+          use_ovs_ports:
+          - float-to-ex
\ No newline at end of file
diff --git a/classes/cluster/os_ha_ovs/openstack/init.yml b/classes/cluster/os_ha_ovs/openstack/init.yml
index fc7c24c..fff4f05 100644
--- a/classes/cluster/os_ha_ovs/openstack/init.yml
+++ b/classes/cluster/os_ha_ovs/openstack/init.yml
@@ -1,7 +1,9 @@
 parameters:
   _param:
-    openstack_proxy_address: 172.16.10.121
-    openstack_proxy_node01_address: 172.16.10.121
+    openstack_proxy_hostname: prx
+    openstack_proxy_address: ${_param:openstack_proxy_node01_address}
+    openstack_proxy_node01_hostname: prx01
+    openstack_proxy_node01_address: ${_param:infra_config_address}
     openstack_control_hostname: ctl
     openstack_control_node01_hostname: ctl01
     openstack_control_node02_hostname: ctl02
@@ -10,6 +12,10 @@
     openstack_control_node01_address: 172.16.10.101
     openstack_control_node02_address: 172.16.10.102
     openstack_control_node03_address: 172.16.10.103
+    openstack_gateway_hostname: gtw
+    openstack_gateway_address: ${_param:openstack_gateway_node01_address}
+    openstack_gateway_node01_hostname: gtw01
+    openstack_gateway_node01_address: 172.16.10.110
     openstack_database_address: ${_param:openstack_control_address}
     openstack_message_queue_address: ${_param:openstack_control_address}
     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
@@ -93,30 +99,41 @@
         prx:
           address: ${_param:openstack_proxy_address}
           names:
-          - prx
-          - prx.${_param:cluster_domain}
+          - ${_param:openstack_proxy_hostname}
+          - ${_param:openstack_proxy_hostname}.${_param:cluster_domain}
         prx01:
           address: ${_param:openstack_proxy_node01_address}
           names:
-          - prx01
-          - prx01.${_param:cluster_domain}
+          - ${_param:openstack_proxy_node01_hostname}
+          - ${_param:openstack_proxy_node01_hostname}.${_param:cluster_domain}
         ctl:
           address: ${_param:openstack_control_address}
           names:
-          - ctl
-          - ctl.${_param:cluster_domain}
+          - ${_param:openstack_control_hostname}
+          - ${_param:openstack_control_hostname}.${_param:cluster_domain}
         ctl01:
           address: ${_param:openstack_control_node01_address}
           names:
-          - ctl01
-          - ctl01.${_param:cluster_domain}
+          - ${_param:openstack_control_node01_hostname}
+          - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
         ctl02:
           address: ${_param:openstack_control_node02_address}
           names:
-          - ctl02
-          - ctl02.${_param:cluster_domain}
+          - ${_param:openstack_control_node02_hostname}
+          - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
         ctl03:
           address: ${_param:openstack_control_node03_address}
           names:
-          - ctl03
-          - ctl03.${_param:cluster_domain}
+          - ${_param:openstack_control_node03_hostname}
+          - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
+        gtw:
+          address: ${_param:openstack_gateway_address}
+          names:
+          - ${_param:openstack_gateway_hostname}
+          - ${_param:openstack_gateway_hostname}.${_param:cluster_domain}
+        gtw01:
+          address: ${_param:openstack_gateway_address}
+          names:
+          - ${_param:openstack_gateway_hostname}
+          - ${_param:openstack_gateway_hostname}.${_param:cluster_domain}
+
diff --git a/classes/cluster/sl_os_ovs/infra/config.yml b/classes/cluster/sl_os_ovs/infra/config.yml
index 75401d0..a1c2d1a 100644
--- a/classes/cluster/sl_os_ovs/infra/config.yml
+++ b/classes/cluster/sl_os_ovs/infra/config.yml
@@ -107,6 +107,19 @@
               value_template: <<node_tenant_ip>>
             external_address:
               value_template: <<node_external_ip>>
+        openstack_gateway:
+          expression: <<node_hostname>>__startswith__gtw
+          node_class:
+            value_template:
+              - cluster.<<node_cluster>>.openstack.gateway
+          node_param:
+            tenant_address:
+              value_template: <<node_tenant_ip>>
+            external_address:
+              value_template: <<node_external_ip>>
+          cluster_param:
+            openstack_gateway_node01_address:
+              value_template: <<node_control_ip>>
         stacklight_monitor01:
           expression: <<node_hostname>>__equals__mon01
           cluster_param:
diff --git a/classes/cluster/sl_os_ovs/init.yml b/classes/cluster/sl_os_ovs/init.yml
index b9a31c6..5fc70a0 100644
--- a/classes/cluster/sl_os_ovs/init.yml
+++ b/classes/cluster/sl_os_ovs/init.yml
@@ -1,11 +1,11 @@
 classes:
 - system.linux.system.single
-- cluster.sl_os_ovs.infra
-- cluster.sl_os_ovs.openstack
 - system.openssh.server.team.lab
 - system.openssh.server.team.tcpcloud
 - system.openssh.server.team.stacklight
 - system.openssh.server.team.mcp_qa
+- cluster.sl_os_ovs.infra
+- cluster.sl_os_ovs.openstack
 - cluster.sl_os_ovs.stacklight
 - cluster.sl_os_ovs.stacklight.client
-- cluster.overrides
\ No newline at end of file
+- cluster.overrides
diff --git a/classes/cluster/sl_os_ovs/openstack/gateway.yml b/classes/cluster/sl_os_ovs/openstack/gateway.yml
new file mode 100644
index 0000000..2e7f0f0
--- /dev/null
+++ b/classes/cluster/sl_os_ovs/openstack/gateway.yml
@@ -0,0 +1,78 @@
+classes:
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.neutron.gateway.cluster
+- cluster.virtual-mcp11-ovs
+parameters:
+  _param:
+    primary_interface: ens4
+    tenant_interface: ens5
+    external_interface: ens6
+    interface_mtu: 9000
+    linux_system_codename: xenial
+  linux:
+    network:
+      bridge: openvswitch
+      interface:
+        dhcp_int:
+          enabled: true
+          name: ens3
+          proto: dhcp
+          type: eth
+          mtu: ${_param:interface_mtu}
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        tenant_interface:
+          enabled: true
+          name: ${_param:tenant_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        external_interface:
+          enabled: true
+          name: ${_param:external_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        br-floating:
+          enabled: true
+          type: ovs_bridge
+          mtu: ${_param:interface_mtu}
+        br-mgmt:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          mtu: ${_param:interface_mtu}
+          use_interfaces:
+          - ${_param:primary_interface}
+        br-mesh:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:tenant_interface}
+        float-to-ex:
+          enabled: true
+          type: ovs_port
+          mtu: ${_param:interface_mtu}
+          bridge: br-floating
+        br-ex:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          address: ${_param:external_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:external_interface}
+          use_ovs_ports:
+          - float-to-ex
\ No newline at end of file
diff --git a/classes/cluster/sl_os_ovs/openstack/init.yml b/classes/cluster/sl_os_ovs/openstack/init.yml
index 280ddce..6c1ddb6 100644
--- a/classes/cluster/sl_os_ovs/openstack/init.yml
+++ b/classes/cluster/sl_os_ovs/openstack/init.yml
@@ -1,7 +1,9 @@
 parameters:
   _param:
-    openstack_proxy_address: 172.16.10.121
-    openstack_proxy_node01_address: 172.16.10.121
+    openstack_proxy_hostname: prx
+    openstack_proxy_address: ${_param:openstack_proxy_node01_address}
+    openstack_proxy_node01_hostname: prx01
+    openstack_proxy_node01_address: ${_param:infra_config_address}
     openstack_control_hostname: ctl
     openstack_control_node01_hostname: ctl01
     openstack_control_node02_hostname: ctl02
@@ -10,6 +12,10 @@
     openstack_control_node01_address: 172.16.10.101
     openstack_control_node02_address: 172.16.10.102
     openstack_control_node03_address: 172.16.10.103
+    openstack_gateway_hostname: gtw
+    openstack_gateway_address: ${_param:openstack_gateway_node01_address}
+    openstack_gateway_node01_hostname: gtw01
+    openstack_gateway_node01_address: 172.16.10.110
     openstack_database_address: ${_param:openstack_control_address}
     openstack_message_queue_address: ${_param:openstack_control_address}
     openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
@@ -94,40 +100,41 @@
         prx:
           address: ${_param:openstack_proxy_address}
           names:
-          - prx
-          - prx.${_param:cluster_domain}
+          - ${_param:openstack_proxy_hostname}
+          - ${_param:openstack_proxy_hostname}.${_param:cluster_domain}
         prx01:
           address: ${_param:openstack_proxy_node01_address}
           names:
-          - prx01
-          - prx01.${_param:cluster_domain}
+          - ${_param:openstack_proxy_node01_hostname}
+          - ${_param:openstack_proxy_node01_hostname}.${_param:cluster_domain}
         ctl:
           address: ${_param:openstack_control_address}
           names:
-          - ctl
-          - ctl.${_param:cluster_domain}
+          - ${_param:openstack_control_hostname}
+          - ${_param:openstack_control_hostname}.${_param:cluster_domain}
         ctl01:
           address: ${_param:openstack_control_node01_address}
           names:
-          - ctl01
-          - ctl01.${_param:cluster_domain}
+          - ${_param:openstack_control_node01_hostname}
+          - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain}
         ctl02:
           address: ${_param:openstack_control_node02_address}
           names:
-          - ctl02
-          - ctl02.${_param:cluster_domain}
+          - ${_param:openstack_control_node02_hostname}
+          - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain}
         ctl03:
           address: ${_param:openstack_control_node03_address}
           names:
-          - ctl03
-          - ctl03.${_param:cluster_domain}
-        cmp01:
-          address: 172.16.10.105
+          - ${_param:openstack_control_node03_hostname}
+          - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
+        gtw:
+          address: ${_param:openstack_gateway_address}
           names:
-          - cmp01
-          - cmp01.${_param:cluster_domain}
-        cmp02:
-          address: 172.16.10.106
+          - ${_param:openstack_gateway_hostname}
+          - ${_param:openstack_gateway_hostname}.${_param:cluster_domain}
+        gtw01:
+          address: ${_param:openstack_gateway_address}
           names:
-          - cmp02
-          - cmp02.${_param:cluster_domain}
+          - ${_param:openstack_gateway_hostname}
+          - ${_param:openstack_gateway_hostname}.${_param:cluster_domain}
+