#author: Tim Rozet (trozet@redhat.com)
# Use default if no param passed
-CONFIG=${1-"/var/opt/opnfv"}
+BASE=${BASE:-'/var/opt/opnfv'}
+IMAGES=${IMAGES:-"$BASE/images"}
+LIB=${LIB:-"$BASE/lib"}
+reset=$(tput sgr0 || echo "")
+blue=$(tput setaf 4 || echo "")
+red=$(tput setaf 1 || echo "")
+green=$(tput setaf 2 || echo "")
##LIBRARIES
-source $CONFIG/lib/common-functions.sh
+for lib in common-functions parse-functions; do
+ if ! source $LIB/${lib}.sh; then
+ echo "Failed to source $LIB/${lib}.sh"
+ exit 1
+ fi
+done
vm_index=4
-ovs_bridges="br-admin br-private br-public br-storage"
+ovs_bridges="br-admin br-tenant br-external br-storage"
+ovs_bridges+=" br-private br-public" # Legacy names, remove in E river
+
+#OPNFV_NETWORK_TYPES=$(python3 -c 'from apex.common.constants import OPNFV_NETWORK_TYPES; print(" ".join(OPNFV_NETWORK_TYPES))')
+OPNFV_NETWORK_TYPES+=" admin tenant external storage api"
+OPNFV_NETWORK_TYPES+=" admin_network private_network public_network storage_network api_network" # Legecy names, remove in E river
+
+
+display_usage() {
+ echo -e "Usage:\n$0 [arguments] \n"
+ echo -e " -i|--inventory : Full path to inventory yaml file. Required only for baremetal node clean"
+}
+
+##translates the command line parameters into variables
+##params: $@ the entire command line is passed
+##usage: parse_cmd_line() "$@"
+parse_cmdline() {
+ echo -e "\n\n${blue}This script is used to deploy the Apex Installer and Provision OPNFV Target System${reset}\n\n"
+ echo "Use -h to display help"
+ sleep 2
+
+ while [ "${1:0:1}" = "-" ]
+ do
+ case "$1" in
+ -h|--help)
+ display_usage
+ exit 0
+ ;;
+ -i|--inventory)
+ INVENTORY_FILE=$2
+ shift 2
+ ;;
+ *)
+ display_usage
+ exit 1
+ ;;
+ esac
+ done
+
+ if [[ ! -z "$INVENTORY_FILE" && ! -f "$INVENTORY_FILE" ]]; then
+ echo -e "{$red}ERROR: Inventory File: ${INVENTORY_FILE} does not exist! Exiting...${reset}"
+ exit 1
+ fi
+}
+
+parse_cmdline "$@"
+
+if [ -n "$INVENTORY_FILE" ]; then
+ echo -e "${blue}INFO: Parsing inventory file...${reset}"
+ if ! python3 -B $LIB/python/apex_python_utils.py clean -f ${INVENTORY_FILE}; then
+ echo -e "${red}WARN: Unable to shutdown all nodes! Please check /var/log/apex.log${reset}"
+ else
+ echo -e "${blue}INFO: Node shutdown complete...${reset}"
+ fi
+fi
# Clean off instack/undercloud VM
for vm in instack undercloud; do
virsh destroy $vm 2> /dev/null | xargs echo -n
- virsh undefine $vm 2> /dev/null | xargs echo -n
+ virsh undefine --nvram $vm 2> /dev/null | xargs echo -n
/usr/bin/touch /var/lib/libvirt/images/${vm}.qcow2
virsh vol-delete ${vm}.qcow2 --pool default 2> /dev/null | xargs echo -n
rm -f /var/lib/libvirt/images/${vm}.qcow2 2> /dev/null
/usr/bin/touch /var/lib/libvirt/images/baremetal${i}.qcow2
virsh vol-delete baremetal${i}.qcow2 --pool default 2> /dev/null | xargs echo -n
rm -f /var/lib/libvirt/images/baremetal${i}.qcow2 2> /dev/null
+ if [ -e /root/.vbmc/baremetal$i ]; then vbmc delete baremetal$i; fi
+done
+
+for network in ${OPNFV_NETWORK_TYPES}; do
+ virsh net-destroy ${network} 2> /dev/null
+ virsh net-undefine ${network} 2> /dev/null
done
# Clean off created bridges
for bridge in ${ovs_bridges}; do
- virsh net-destroy ${bridge} 2> /dev/null | xargs echo -n
- virsh net-undefine ${bridge} 2> /dev/null | xargs echo -n
if detach_interface_from_ovs ${bridge} 2> /dev/null; then
ovs-vsctl del-br ${bridge} 2> /dev/null
+ rm -f /etc/sysconfig/network-scripts/ifcfg-${bridge}
fi
done
# clean pub keys from root's auth keys
sed -i '/stack@undercloud.localdomain/d' /root/.ssh/authorized_keys
-sed -i '/virtual-power-key/d' /root/.ssh/authorized_keys
+# force storage cleanup
+virsh pool-refresh default
+
+# remove temporary files
+rm -f /tmp/network-environment.yaml
+
echo "Cleanup Completed"