X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fci%2Fclean.sh;h=cc116e8d5e948c435c4befe5eadd47dd4d82708c;hb=542767ecd493fcd2713e75852b5e5bdd8a77cf20;hp=7842762174c4595ff4f34d47c69302b72d2b2118;hpb=44cd186386cf50a965be3fe443ab60da3b062da6;p=genesis.git diff --git a/common/ci/clean.sh b/common/ci/clean.sh index 7842762..cc116e8 100755 --- a/common/ci/clean.sh +++ b/common/ci/clean.sh @@ -14,8 +14,12 @@ reset=`tput sgr0` blue=`tput setaf 4` red=`tput setaf 1` green=`tput setaf 2` - +pxe_bridge='pxebr' vm_dir=/var/opt/opnfv +first_interface='enp6s0' +second_interface='enp7s0' +management_vid=300 +management_interface="${first_interface}.${management_vid}" ##END VARS ##FUNCTIONS @@ -26,6 +30,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 @@ -215,11 +240,17 @@ if rpm -qa | grep -iE 'libvirt|kvm'; then fi echo "${blue}Removing libvirt and kvm packages" yum -y remove libvirt-* - yum -y remove qemu-kvm-* + yum -y remove *qemu* else echo "${blue}libvirt/KVM is not installed${reset}" fi +###remove possible VMs (needed for 'rmmod kvm_intel') +if [ -n "$(ps -ef | grep qemu-kvm | grep -v grep)" ]; then + echo "${blue}Removing existing VMs ${reset}" + killall -9 qemu-kvm +fi + ###remove kernel modules echo "${blue}Removing kernel modules ${reset}" for kernel_mod in vboxnetadp vboxnetflt vboxpci vboxdrv kvm_intel kvm; do @@ -234,3 +265,62 @@ for kernel_mod in vboxnetadp vboxnetflt vboxpci vboxdrv kvm_intel kvm; do echo "${blue}Removed Kernel Module: $kernel_mod ${reset}" fi done + +###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 ${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 + sleep 5 + link_state=$(ip link show ${pxe_bridge} | grep -oP 'state \K[^ ]+') + if [[ ${link_state} != 'DOWN' ]]; then + echo "${red}Could not bring DOWN bridge ${pxe_bridge} link state is ${link_state}${reset}" + exit 1 + fi + fi + brctl delbr ${pxe_bridge} + if ifconfig | grep ${pxe_bridge} || brctl show | grep ${pxe_bridge}; then + echo "${red}Error trying to remove ${pxe_bridge}${reset}" + exit 1 + else + echo "${blue}PXE bridge ${pxe_bridge} removed${reset}" + fi +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" + +###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}" + +###bounce interfaces to restore default IP config +echo "${blue}Bouncing interfaces to restore IP config${reset}" +for interface in $first_interface $second_interface; do + echo "${blue}Bouncing interface: ${interface}${reset}" + ifdown $interface + sleep 5 + ifup $interface + tries=5 + counter=0 + while [ $counter -lt $tries ]; do + if ip addr show $interface | grep -Eo "inet [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"; then + temp_ip=$(ip addr show $interface | grep -Eo "inet [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" | awk '{print $2}') + echo "${blue}IP found on ${interface}. IP is ${temp_ip}${reset}" + break + else + ((counter++)) + sleep 2 + fi + done + + if [ "$counter" -ge 5 ]; then + echo "${red}Error: Unable to get IP address on ${interface}${reset}" + exit 1 + fi +done