# shellcheck disable=SC1090
 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh"
 
-# KVM, compute node prereqs (libvirt first), VCP deployment
 # patch the networking module for Debian based distros
 debian_ip_source=/usr/lib/python2.7/dist-packages/salt/modules/debian_ip.py
 salt -C 'kvm* or cmp*' file.line $debian_ip_source \
 
 wait_for 10 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_USER} \
   $(awk 'NR==1{print $2}' "$(eval echo "~${SUDO_USER}/.ssh/authorized_keys")")"
+
+# Disable proxy dhcp routes after installation
+salt -C 'prx*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
+  args='unset new_routers'
 
--- /dev/null
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+:
+: All rights reserved. This program and the accompanying materials
+: are made available under the terms of the Apache License, Version 2.0
+: which accompanies this distribution, and is available at
+: http://www.apache.org/licenses/LICENSE-2.0
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+From: Guillermo Herrero <guillermo.herrero@enea.com>
+Date: Mon, 20 Nov 2017 11:33:29 +0100
+Subject: [PATCH] extend public gateway support
+
+JIRA: FUEL-305
+
+Change-Id: Ic5a2d499925aeec5b597394a059640ddae83fb2d
+Signed-off-by: Guillermo Herrero <guillermo.herrero@enea.com>
+---
+ config/installers/fuel/pod_config.yml.j2 | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/config/installers/fuel/pod_config.yml.j2 b/config/installers/fuel/pod_config.yml.j2
+index bd815d5..e42e3d5 100644
+--- a/config/installers/fuel/pod_config.yml.j2
++++ b/config/installers/fuel/pod_config.yml.j2
+@@ -8,6 +8,9 @@
+     {%- if conf.net_config.public.dns is defined -%}
+         {%- set dns_public = conf['net_config']['public']['dns'] -%}
+     {%- endif -%}
++    {%- if conf.net_config.public.gateway is defined -%}
++        {%- set net_public_gw = conf['net_config']['public']['gateway'] -%}
++    {%- endif -%}
+     {%- set pxe_interface = conf['net_config']['admin']['interface'] -%}
+ {%- else -%}
+     {%- set net_admin = '192.168.11.0' -%}
+@@ -22,6 +25,10 @@
+ {%- if dns_public is not defined -%}
+     {%- set dns_public = [ '8.8.8.8', '8.8.4.4' ] -%}
+ {%- endif -%}
++{%- if net_public_gw is not defined -%}
++    {%- set net_public_gw =  net_public | ipaddr_index('1')  -%}
++{%- endif -%}
++
+ ---
+ parameters:
+   _param:
+@@ -55,6 +62,8 @@ parameters:
+     opnfv_openstack_proxy_address: {{ net_public | ipaddr_index('103') }}
+     opnfv_openstack_proxy_node01_address: {{ net_public | ipaddr_index('104') }}
+     opnfv_openstack_proxy_node02_address: {{ net_public | ipaddr_index('105') }}
++    opnfv_openstack_proxy_node01_control_address: {{ net_mgmt | ipaddr_index('104') }}
++    opnfv_openstack_proxy_node02_control_address: {{ net_mgmt | ipaddr_index('105') }}
+     opnfv_openstack_control_address: {{ net_mgmt | ipaddr_index('10') }}
+     opnfv_openstack_control_node01_address: {{ net_mgmt | ipaddr_index('11') }}
+     opnfv_openstack_control_node02_address: {{ net_mgmt | ipaddr_index('12') }}
+@@ -85,6 +94,7 @@ parameters:
+
+     opnfv_opendaylight_server_node01_single_address: {{ net_mgmt | ipaddr_index('111') }}
+
++    opnfv_net_public_gw: {{ net_public_gw }}
+     opnfv_name_servers: {{ dns_public }}
+     opnfv_dns_server01: '{{ dns_public[0] }}'
+
 
 Subject: [PATCH] Bring in opendaylight support
 
 Change-Id: I3efec9a8b586a6c75b1c1635ad2a7024d73d9ad2
+---
+ neutron/control/opendaylight/cluster.yml               | 17 +++++++++++++++++
+ neutron/control/opendaylight/single.yml                | 15 +++++++++++++++
+ neutron/gateway/opendaylight/single.yml                |  7 +++++++
+ opendaylight/server/single.yml                         |  2 ++
+ reclass/storage/system/opendaylight_control_single.yml | 13 +++++++++++++
+ 5 files changed, 54 insertions(+)
+ create mode 100644 neutron/control/opendaylight/cluster.yml
+ create mode 100644 neutron/control/opendaylight/single.yml
+ create mode 100644 neutron/gateway/opendaylight/single.yml
+ create mode 100644 opendaylight/server/single.yml
+ create mode 100644 reclass/storage/system/opendaylight_control_single.yml
 
 diff --git a/neutron/control/opendaylight/cluster.yml b/neutron/control/opendaylight/cluster.yml
 new file mode 100644
-index 00000000..a32e7abb
+index 0000000..a32e7ab
 --- /dev/null
 +++ b/neutron/control/opendaylight/cluster.yml
 @@ -0,0 +1,17 @@
 +            driver: opendaylight_v2
 diff --git a/neutron/control/opendaylight/single.yml b/neutron/control/opendaylight/single.yml
 new file mode 100644
-index 00000000..053f14df
+index 0000000..053f14d
 --- /dev/null
 +++ b/neutron/control/opendaylight/single.yml
 @@ -0,0 +1,15 @@
 +            driver: opendaylight_v2
 diff --git a/neutron/gateway/opendaylight/single.yml b/neutron/gateway/opendaylight/single.yml
 new file mode 100644
-index 00000000..21690017
+index 0000000..2169001
 --- /dev/null
 +++ b/neutron/gateway/opendaylight/single.yml
 @@ -0,0 +1,7 @@
 +        ovsdb_connection: tcp:127.0.0.1:6639
 diff --git a/opendaylight/server/single.yml b/opendaylight/server/single.yml
 new file mode 100644
-index 00000000..3d11872c
+index 0000000..3d11872
 --- /dev/null
 +++ b/opendaylight/server/single.yml
 @@ -0,0 +1,2 @@
 +- service.opendaylight.server.single
 diff --git a/reclass/storage/system/opendaylight_control_single.yml b/reclass/storage/system/opendaylight_control_single.yml
 new file mode 100644
-index 00000000..ad809f59
+index 0000000..ad809f5
 --- /dev/null
 +++ b/reclass/storage/system/opendaylight_control_single.yml
 @@ -0,0 +1,13 @@
 
 
     opnfv_opendaylight_server_node01_single_address: 10.167.4.111
 
+    opnfv_net_public_gw: 172.30.10.1
     opnfv_name_servers: ['8.8.8.8', '8.8.4.4']
     opnfv_dns_server01: '8.8.8.8'
     opnfv_net_mgmt_vlan: 300
 
   _param:
     reclass_config_master: 10.20.0.2
     opnfv_maas_mcp_address: 10.20.0.3
+    opnfv_net_mcpcontrol: 10.20.0.0
+    opnfv_net_mcpcontrol_mask: 255.255.255.0
 
     # These should be moved to pod_config.yml and read based on PDF admin net
     opnfv_maas_pxe_network_address: 192.168.11.0
 
   _param:
     reclass_config_master: ${SALT_MASTER}
     opnfv_maas_mcp_address: ${MAAS_IP}
+    opnfv_net_mcpcontrol: ${SALT_MASTER%.*}.0
+    opnfv_net_mcpcontrol_mask: 255.255.255.0
 
     # These should be moved to pod_config.yml and read based on PDF admin net
     opnfv_maas_pxe_network_address: ${MAAS_PXE_NETWORK}
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-parameters:
-  _param:
-    dhcp_nic: eth0
-    single_nic: eth1
-  linux:
-    network:
-      interface:
-        dhcp: ${_param:linux_dhcp_interface}
-        single: ${_param:linux_single_interface}
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - system.horizon.server.single
-parameters:
-  _param:
-    horizon_site_branding: OpenStack Dashboard
-    dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface}
-    single_nic: ${_param:opnfv_vcp_vm_secondary_interface}
-  linux:
-    network:
-      interface:
-        dhcp: ${_param:linux_dhcp_interface}
-        single: ${_param:linux_single_interface}
 
   linux:
     network:
       interface:
-        dhcp: ${_param:linux_dhcp_interface}
-        single: ${_param:linux_single_interface}
+        dhcp:
+          enabled: true
+          type: eth
+          proto: dhcp
+          name: ${_param:dhcp_nic}
+          route:
+            mcpcontol:
+              address: ${_param:opnfv_net_mcpcontrol}
+              netmask: ${_param:opnfv_net_mcpcontrol_mask}
+              gateway: ${_param:opnfv_infra_maas_node01_deploy_address}
+        single:
+          enabled: true
+          type: eth
+          proto: static
+          name: ${_param:single_nic}
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          route:
+            public:
+              address: 0.0.0.0
+              netmask: 0.0.0.0
+              gateway: ${_param:opnfv_net_public_gw}
         control:
           enabled: true
           type: eth
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_benchmark
-  - cluster.baremetal-mcp-ocata-odl-ha
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_dashboard
-  - cluster.baremetal-mcp-ocata-odl-ha
 
 classes:
   - cluster.baremetal-mcp-ocata-common.openstack_proxy
   - cluster.baremetal-mcp-ocata-odl-ha.infra
-  - cluster.baremetal-mcp-ocata-odl-ha.openstack.dashboard
 parameters:
   nginx:
     server:
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_benchmark
-  - cluster.baremetal-mcp-ocata-ovs-dpdk-ha
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_dashboard
-  - cluster.baremetal-mcp-ocata-ovs-dpdk-ha
 
 classes:
   - cluster.baremetal-mcp-ocata-common.openstack_proxy
   - cluster.baremetal-mcp-ocata-ovs-dpdk-ha.infra
-  - cluster.baremetal-mcp-ocata-ovs-dpdk-ha.openstack.dashboard
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_benchmark
-  - cluster.baremetal-mcp-ocata-ovs-ha
 
+++ /dev/null
-##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.baremetal-mcp-ocata-common.openstack_dashboard
-  - cluster.baremetal-mcp-ocata-ovs-ha
 
 classes:
   - cluster.baremetal-mcp-ocata-common.openstack_proxy
   - cluster.baremetal-mcp-ocata-ovs-ha.infra
-  - cluster.baremetal-mcp-ocata-ovs-ha.openstack.dashboard