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
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
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
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