Fixes and updates for clean.sh and setup.sh 67/1967/6
authorSzilard Cserey <szilard.cserey@ericsson.com>
Thu, 24 Sep 2015 12:10:07 +0000 (14:10 +0200)
committerJonas Bjurel <jonas.bjurel@ericsson.com>
Fri, 25 Sep 2015 10:47:05 +0000 (10:47 +0000)
Remove PXE interface (VLAN 0) and check IP Forwarding is enabled
Add/Clean VLAN 300 interface
Swap IP address from Base interface to VLAN interface

Change-Id: Ia6ce76b220518f979dc2e3e9acd8e53540cbaef1
Signed-off-by: Szilard Cserey <szilard.cserey@ericsson.com>
common/ci/clean.sh
common/ci/setup.sh

index 4cbc67b..6bc39f5 100755 (executable)
@@ -16,6 +16,9 @@ red=`tput setaf 1`
 green=`tput setaf 2`
 pxe_bridge='pxebr'
 vm_dir=/var/opt/opnfv
+private_interface='enp6s0'
+management_vid=300
+management_interface="${private_interface}.${management_vid}"
 ##END VARS
 
 ##FUNCTIONS
@@ -26,6 +29,27 @@ display_usage() {
   echo -e "\n   -base_config : Full path of ksgen settings file to parse. Required.  Will provide BMC info to shutdown hosts.  Example:  -base_config /opt/myinventory.yml \n"
 }
 
+remove_interface_with_name_pattern() {
+  if [ -z $1 ]; then
+    echo "${red}Cannot remove interface. No interface name pattern specified!${reset}"
+    exit 1
+  fi
+  local interface_name_pattern=$1
+  echo "${blue} Looking for interface with name pattern: ${interface_name_pattern}${reset}"
+  interface=$(ip link show | grep -oP ${interface_name_pattern})
+  if [ ! -z "${interface}" ]; then
+    echo "${blue}Interface ${interface} detected! Removing...${reset}"
+    ip link del ${interface}
+    if ip link show | grep -oP ${interface_name_pattern}; then
+      echo "${red}Could not remove interface ${interface} ${reset}"
+      exit 1
+    else
+      echo "${blue}Interface ${interface} successfully removed${reset}"
+    fi
+  else
+    echo "${blue}Interface with name pattern ${interface_name_pattern} does not exist, nothing to remove${reset}"
+  fi
+}
 ##END FUNCTIONS
 
 if [[ ( $1 == "--help") ||  $1 == "-h" ]]; then
@@ -241,10 +265,10 @@ for kernel_mod in vboxnetadp vboxnetflt vboxpci vboxdrv kvm_intel kvm; do
   fi
 done
 
-###remove pxebr
+###remove PXE bridge
 echo "${blue}Checking whether PXE bridge ${pxe_bridge} exists${reset}"
 if ! brctl show ${pxe_bridge} 2>&1 | grep -i 'No such device'; then
-  echo "${blue}PXE bridge detected. Removing...${reset}"
+  echo "${blue}PXE bridge ${pxe_bridge} detected! Removing...${reset}"
   link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+')
   if [[ ${link_state} != 'DOWN' ]]; then
     ip link set dev ${pxe_bridge} down
@@ -265,3 +289,39 @@ if ! brctl show ${pxe_bridge} 2>&1 | grep -i 'No such device'; then
 else
   echo "${blue}PXE bridge ${pxe_bridge} does not exist${reset}"
 fi
+
+###remove PXE interface (VLAN 0)
+echo "${blue}Checking whether PXE interface (VLAN 0) exists and remove it${reset}"
+remove_interface_with_name_pattern "enp.+s.+\.0"
+
+###moving IP Address from Openstack Management interface back to base interface
+echo "${blue}Moving IP addresses from VLAN ${management_vid} interface ${management_interface} back to interface ${private_interface}${reset}"
+management_interface_ip_addr_list=$(ip addr show ${management_interface} | grep -oP 'inet \K[^ ]+')
+if [[ ! -z ${management_interface_ip_addr_list} ]]; then
+  echo -e "${blue}Found IP addresses on VLAN ${management_vid} interface ${management_interface}:\n${management_interface_ip_addr_list}${reset}"
+  for management_interface_ip_addr in ${management_interface_ip_addr_list}
+  do
+    echo "${blue}Removing IP address ${management_interface_ip_addr} from VLAN ${management_vid} interface ${management_interface}${reset}"
+    ip addr del ${management_interface_ip_addr} dev ${management_interface}
+    if ip addr show ${management_interface} | grep ${management_interface_ip_addr}; then
+      echo "${red}Could not remove IP address ${management_interface_ip_addr} from VLAN ${management_vid} interface ${management_interface}${reset}"
+      exit 1
+    fi
+    if ! ip addr show ${private_interface} | grep ${management_interface_ip_addr}; then
+      echo "${blue}Adding IP address ${management_interface_ip_addr} to interface ${private_interface}${reset}"
+      ip addr add ${management_interface_ip_addr} dev ${private_interface}
+      if ! ip addr show ${private_interface} | grep ${management_interface_ip_addr}; then
+        echo "${red}Could not set IP address ${management_interface_ip_addr} to interface ${private_interface}${reset}"
+        exit 1
+      fi
+    else
+      echo "${blue}Interface ${private_interface} already has assigned to itself this IP address ${management_interface_ip_addr}${reset}"
+    fi
+  done
+else
+  echo "${red}No IP Address is assigned to VLAN ${management_vid} interface ${management_interface}, there isn't any IP address to move to interface ${private_interface}${reset}"
+fi
+
+###remove Openstack Management interface (VLAN 300)
+echo "${blue}Checking whether Openstack Management interface (VLAN 300) exists and remove it${reset}"
+remove_interface_with_name_pattern "enp.+s.+\.${management_vid}"
index 82fede4..bb54147 100755 (executable)
@@ -14,6 +14,8 @@ private_interface='enp6s0'
 public_interface='enp8s0'
 pxe_bridge='pxebr'
 fuel_gw_ip='10.20.0.1/16'
+management_vid=300
+management_interface="${private_interface}.${management_vid}"
 ##END VARS
 
 ##FUNCTIONS
@@ -77,13 +79,33 @@ start_libvirtd_service() {
   fi
 }
 
+
+#Check whether interface exists
+check_interface_exists() {
+  if [ -z $1 ]; then
+    echo "${red}Cannot check whether interface exists! No interface specified!${reset}"
+    exit 1
+  fi
+  local interface=$1
+  #Check whether interface exists
+  echo "${blue}Checking whether interface ${interface} exists${reset}"
+  if ! ip link show ${interface}; then
+    echo "${red}Interface ${interface} does not exists!${reset}"
+    exit 1
+  else
+    echo "${green}OK!${reset}"
+  fi
+}
+
 #Check whether interface is UP
-check_interface() {
+check_interface_up() {
   if [ -z $1 ]; then
-    echo "${red}Cannot bring UP, No interface specified${reset}"
+    echo "${red}Cannot check whether interface is UP! No interface specified!${reset}"
     exit 1
   fi
   local interface=$1
+
+  #Check whether interface is UP
   echo "${blue}Checking whether interface ${interface} is UP${reset}"
   link_state=$(ip link show ${interface} | grep -oP 'state \K[^ ]+')
   if [[ ${link_state} != 'UP' ]]; then
@@ -100,33 +122,39 @@ check_interface() {
   fi
 }
 
-setup_pxe_bridge() {
-  #Check whether private interface exists
-  echo "${blue}Checking whether private interface ${private_interface} exists${reset}"
-  if ! ip link show ${private_interface}; then
-    echo "${red}Private interface ${private_interface} does not exists!${reset}"
+#Create VLAN interface
+create_vlan_interface()  {
+  if [ -z $1 ]; then
+    echo "${red}Cannot create VLAN interface. No base interface specified!${reset}"
+    exit 1
+  fi
+  if [ -z $2 ]; then
+    echo "${red}Cannot create VLAN interface. No VLAN ID specified!${reset}"
     exit 1
-  else
-    echo "${green}OK!${reset}"
   fi
 
-  #Check whether private interface is UP
-  check_interface ${private_interface}
+  local base_interface=$1
+  local vid=$2
+  local interface="${base_interface}.${vid}"
 
-  pxe_vid=0
-  pxe_interface="${private_interface}.${pxe_vid}"
-
-  #Check whether VLAN 0 (PXE) interface exists
-  echo "${blue}Checking whether VLAN 0 (PXE) interface ${pxe_interface} exists${reset}"
-  if ! ip link show ${pxe_interface}; then
-    echo "${blue}Creating  VLAN 0 (PXE) interface ${pxe_interface}${reset}"
-    ip link add link ${private_interface} name ${pxe_interface} type vlan id ${pxe_vid}
+  echo "${blue}Checking whether VLAN ${vid} interface ${interface} exists, otherwise create it${reset}"
+  if ! ip link show ${interface}; then
+    echo "${blue}Creating  VLAN ${vid} interface ${interface}${reset}"
+    ip link add link ${base_interface} name ${interface} type vlan id ${vid}
   else
     echo "${green}OK!${reset}"
   fi
 
-  #Check whether VLAN 0 (PXE) interface is UP
-  check_interface ${pxe_interface}
+  #Check whether VLAN interface is UP
+  check_interface_up ${interface}
+}
+
+###setup PXE Bridge
+setup_pxe_bridge() {
+  pxe_vid=0
+  pxe_interface="${private_interface}.${pxe_vid}"
+  #Check whether VLAN 0 (PXE) interface exists, otherwise create it
+  create_vlan_interface ${private_interface} ${pxe_vid}
 
   #Check whether PXE bridge exists
   echo "${blue}Checking whether PXE bridge ${pxe_bridge} exists${reset}"
@@ -151,7 +179,7 @@ setup_pxe_bridge() {
   fi
 
   #Check whether PXE bridge is UP
-  check_interface ${pxe_bridge}
+  check_interface_up ${pxe_bridge}
 
   #Add Fuel Gateway IP Address to PXE bridge
   echo "${blue}Checking whether Fuel Gateway IP Address ${fuel_gw_ip} is assigned to PXE bridge ${pxe_bridge}${reset}"
@@ -166,20 +194,21 @@ setup_pxe_bridge() {
     echo "${green}OK!${reset}"
   fi
 }
+
 ###check whether access to public network is granted
 check_access_enabled_to_public_network() {
-  #Check whether public interface exists
-  echo "${blue}Checking whether public interface ${public_interface} exists${reset}"
-  if ! ip link show ${public_interface}; then
-    echo "${red}Public interface ${public_interface} does not exists!${reset}"
-    exit 1
+  #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
 
-  #Check whether public interface ${public_interface} is UP
-  check_interface ${public_interface}
-
   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}"
@@ -188,6 +217,40 @@ check_access_enabled_to_public_network() {
     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
+}
+
 ##END FUNCTIONS
 
 main() {
@@ -195,8 +258,13 @@ main() {
   install_libvirt
   load_kvm_kernel_mod
   start_libvirtd_service
+  check_interface_exists ${private_interface}
+  check_interface_up ${private_interface}
+  check_interface_exists ${public_interface}
+  check_interface_up ${public_interface}
   setup_pxe_bridge
   check_access_enabled_to_public_network
+  create_openstack_management_interface
 }
 
 main "$@"