From 32086f62131e1b813e2f3d97bc2c78f66c6a3154 Mon Sep 17 00:00:00 2001 From: Carlos Konstanski Date: Wed, 13 Dec 2017 18:54:21 -0700 Subject: adding files --- files/network.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 files/network.sh (limited to 'files/network.sh') diff --git a/files/network.sh b/files/network.sh new file mode 100755 index 0000000..22b0623 --- /dev/null +++ b/files/network.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +router_name="${1}" +private_network_name="${2}" +private_network_cidr="${3}" +ext_network_name="${4}" +dns_servers="${5}" + +if [ "${router_name}" == "" ]; then + echo "No router name supplied." >&2 + exit 1 +elif [ "${private_network_name}" == "" ]; then + echo "No private network name supplied." >&2 + exit 1 +elif [ "${private_network_cidr}" == "" ]; then + echo "No private network CIDR supplied." >&2 + exit 1 +elif [ "${ext_network_name}" == "" ]; then + echo "No external network name supplied." >&2 + exit 1 +elif [ "${dns_servers}" == "" ]; then + echo "No dns servers supplied." >&2 + exit 1 +fi + +ext_network_id=$(openstack network show -f shell -c id "${ext_network_name}" 2>/dev/null | awk -F= '{print $2;}' | sed -e 's/\"//g') +if [ "${ext_network_id}" == "" ]; then + echo "No ${ext_network_name} network exists." >&2 + exit 1 +fi + +private_network_id=$(openstack network show -f shell -c id "${private_network_name}" 2>/dev/null | awk -F= '{print $2;}' |sed -e 's/\"//g') +if [ "${private_network_id}" == "" ]; then + openstack network create "${private_network_name}" >/dev/null + openstack subnet create \ + "${private_network_name}" \ + --network "${private_network_name}" \ + --subnet-range "${private_network_cidr}" \ + --dns-nameserver $(echo ${dns_servers} | awk '{print $1;}') \ + --dns-nameserver $(echo ${dns_servers} | awk '{print $2;}') \ + --dns-nameserver $(echo ${dns_servers} | awk '{print $3;}') \ + >/dev/null + private_network_id=$(openstack network show -f shell -c id "${private_network_name}" 2>/dev/null | awk -F= '{print $2;}' |sed -e 's/\"//g') + if [ "${private_network_id}" == "" ]; then + echo "Cannot retrieve private network ID after creation." >&2 + exit 1 + fi +fi + +router_id=$(openstack router show -f shell -c id "${router_name}" 2>/dev/null | awk -F= '{print $2;}' | sed -e 's/\"//g') +if [ "${router_id}" == "" ]; then + openstack router create "${router_name}" >/dev/null + router_id=$(openstack router show -f shell -c id "${router_name}" 2>/dev/null | awk -F= '{print $2;}' | sed -e 's/\"//g') + if [ "${router_id}" == "" ]; then + echo "Cannot retrieve router ID after creation." >&2 + exit 1 + fi +fi + +gateway_info=$(openstack router show -f shell -c external_gateway_info "${router_name}" 2>/dev/null | grep -F 'external_fixed_ips') +if [ "${gateway_info}" == "" ]; then + openstack router set "${router_id}" --external-gateway "${ext_network_id}" >/dev/null +fi + +openstack router add subnet "${router_id}" "${private_network_name}" >/dev/null 2>&1 || true + +echo -n "${private_network_id}" + +exit 0 -- cgit v1.3