+
+###check whether access to public network is granted
+check_access_enabled_to_public_network() {
+ #Check whether IP forwarding is enabled
+ echo "${blue}Checking whether IP Forwarding is enabled ${reset}"
+ if ! sysctl net.ipv4.ip_forward | grep "net.ipv4.ip_forward = 1"; then
+ sysctl -w net.ipv4.ip_forward=1
+ if ! sysctl net.ipv4.ip_forward | grep "net.ipv4.ip_forward = 1"; then
+ echo "${red}IP Forwarding could not be enabled!${reset}"
+ exit 1
+ fi
+ else
+ echo "${green}OK!${reset}"
+ fi
+
+ echo "${blue}Checking whether access is granted to public network through interface ${public_interface}${reset}"
+ if ! sudo iptables -t nat -L POSTROUTING -v | grep "MASQUERADE.*${public_interface}.*anywhere.*anywhere"; then
+ echo "${blue}Enable access to public network through interface ${public_interface}${reset}"
+ iptables -t nat -A POSTROUTING -o ${public_interface} -j MASQUERADE
+ else
+ echo "${green}OK!${reset}"
+ fi
+}
+
+###setup Openstack Management Interface
+create_openstack_management_interface() {
+ #Check whether Openstack Management interface exists, otherwise create it
+ create_vlan_interface ${private_interface} ${management_vid}
+
+ echo "${blue}Moving IP addresses from interface ${private_interface} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ private_interface_ip_addr_list=$(ip addr show ${private_interface} | grep -oP 'inet \K[^ ]+')
+ if [[ ! -z ${private_interface_ip_addr_list} ]]; then
+ echo -e "${blue}Found IP addresses on interface ${private_interface}:\n${private_interface_ip_addr_list}${reset}"
+ for private_interface_ip_addr in ${private_interface_ip_addr_list}
+ do
+ echo "${blue}Removing IP address ${private_interface_ip_addr} from interface ${private_interface}${reset}"
+ ip addr del ${private_interface_ip_addr} dev ${private_interface}
+ if ip addr show ${private_interface} | grep ${private_interface_ip_addr}; then
+ echo "${red}Could not remove IP address ${private_interface_ip_addr} from interface ${private_interface}${reset}"
+ exit 1
+ fi
+ if ! ip addr show ${management_interface} | grep ${private_interface_ip_addr}; then
+ echo "${blue}Adding IP address ${private_interface_ip_addr} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ ip addr add ${private_interface_ip_addr} dev ${management_interface}
+ if ! ip addr show ${management_interface} | grep ${private_interface_ip_addr}; then
+ echo "${red}Could not set IP address ${private_interface_ip_addr} to VLAN ${management_vid} interface ${management_interface}${reset}"
+ exit 1
+ fi
+ else
+ echo "${blue}VLAN ${management_vid} interface ${management_interface} already has assigned to itself this IP address ${private_interface_ip_addr}${reset}"
+ fi
+ done
+ else
+ echo "${red}No IP Address is assigned to interface ${private_interface}, there isn't any IP address to move to interface ${management_interface}${reset}"
+ fi
+}
+