Update deployment scripts for TryMCP

Introduce 3 Ethernet controller for slave AIO node to support
public floating address for host and internet access from vms.

Change-Id: Idf0c423559d1bf9a13617760295bc0c943800fdb
Related-Prod: TRYMCP-6
diff --git a/predefine-vm/functions.sh b/predefine-vm/functions.sh
index d5b1cec..b0d7976 100644
--- a/predefine-vm/functions.sh
+++ b/predefine-vm/functions.sh
@@ -10,6 +10,20 @@
   source ${envFile}
 fi
 
+function count_netmask {
+    local network=$1
+    local cidr=$(echo $network | cut -f 2 -d '/')
+    local ones="printf '1%.0s' {1..${cidr}}"
+    local zeros="printf '0%.0s' {1..$(( 32 - ${cidr} ))}"
+    local netmask_binary="$(echo $ones | bash)$(echo $zeros | bash)"
+    local netmask_decimal=""
+    for i in 0 8 16 24; do
+        netmask_decimal+="$(echo $((2#${netmask_binary:${i}:8})))"
+        [[ "${i}" != '24' ]] && netmask_decimal+='.'
+    done
+    echo "${netmask_decimal}"
+}
+
 function check_packages {
     local slave=$1
     local packages="libvirt-bin qemu-kvm"
@@ -215,6 +229,31 @@
 EOF
 fi
 
+  if [[ "${VM_PUBLIC_NET_NEEDED}" =~ [Tt]rue ]]; then
+    if [[ "${VM_PUBLIC_BRIDGE_DISABLE}" =~ [Ff]alse ]]; then
+        create_bridge_network "${VM_PUBLIC_NETWORK_NAME}" "${VM_PUBLIC_BRIDGE_NAME}"
+        cat <<EOF >> $(pwd)/${vmName}-vm.xml
+    <interface type='bridge'>
+      <source bridge='$VM_PUBLIC_BRIDGE_NAME'/>
+      <model type='virtio'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
+    </interface>
+EOF
+    else
+        local vmPublicNetworkGateway=$(isoinfo -i ${VM_CONFIG_DISK} -J -x ${allocationDataFile} | grep -w 'openstack_public_neutron_subnet_gateway' | cut -f 2 -d ':' | tr -d ' ')
+        local vmPublicNetworkCIDR=$(isoinfo -i ${VM_CONFIG_DISK} -J -x ${allocationDataFile} | grep -w 'openstack_public_neutron_subnet_cidr' | cut -f 2 -d ':' | tr -d ' ')
+        local vmPublicNetworkMask=$(count_netmask "${vmPublicNetworkCIDR}")
+        create_host_network "${VM_PUBLIC_NETWORK_NAME}" "${vmPublicNetworkGateway}" "${vmPublicNetworkMask}" true
+        cat <<EOF >> $(pwd)/${vmName}-vm.xml
+    <interface type='network'>
+      <source network='$VM_PUBLIC_NETWORK_NAME'/>
+      <model type='virtio'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
+    </interface>
+EOF
+    fi
+fi
+
   cat <<EOF >> $(pwd)/${vmName}-vm.xml
     <serial type='pty'>
       <source path='/dev/pts/1'/>