
Since libvirt doesn't manage the seed's storage volume, it doesn't currently get deleted when cleanup-env is run. This change handles the destroy and volume cleanup differently for the seed such that the volume gets removed. Changes have also been added in the destroy and remove process to avoid producing noisy error messages, by only destroying domains that are currently running, as well as only attempting to remove storage for non-seed domains. Change-Id: I65b8f5dde936efa11c0b6857a5b8b138da7f425b Closes-Bug: 1298466
78 lines
2.3 KiB
Bash
Executable File
78 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright 2013 Red Hat
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
SCRIPT_NAME=$(basename $0)
|
|
|
|
LIBVIRT_VOL_POOL=${LIBVIRT_VOL_POOL:-"default"}
|
|
|
|
function show_options() {
|
|
echo "Usage: $SCRIPT_NAME [-n NUM]"
|
|
echo
|
|
echo "Cleanup vm state left behind by previous runs"
|
|
echo
|
|
echo " -n -- Test environment number to clean up."
|
|
echo
|
|
echo "If provided, NUM is the environment number to be cleaned up."
|
|
echo "If not provided, the default environment will be cleaned."
|
|
exit 1
|
|
}
|
|
|
|
NUM=
|
|
|
|
TEMP=$(getopt -o h,n: -n $SCRIPT_NAME -- "$@")
|
|
if [ $? != 0 ] ; then show_options; fi
|
|
|
|
# Note the quotes around `$TEMP': they are essential!
|
|
eval set -- "$TEMP"
|
|
|
|
while true ; do
|
|
case "$1" in
|
|
-h) show_options ;;
|
|
-n) NUM="$2" ; shift 2 ;;
|
|
--) shift ; break ;;
|
|
*) echo "Error: unsupported option $1." ; show_options ;;
|
|
esac
|
|
done
|
|
|
|
SEED_NAME=seed
|
|
BRIDGE_NAME=
|
|
|
|
if [ -n "$NUM" ]; then
|
|
SEED_NAME="seed_${NUM}"
|
|
BRIDGE_NAME="brbm${NUM}"
|
|
fi
|
|
|
|
BAREMETAL_REGEX="baremetal${BRIDGE_NAME}"
|
|
|
|
for NAME in $(sudo virsh list --name | grep "^\($SEED_NAME\|${BAREMETAL_REGEX}_.*\)$"); do
|
|
sudo virsh destroy $NAME
|
|
done
|
|
|
|
for NAME in $(sudo virsh list --name --all | grep "^\($SEED_NAME\|${BAREMETAL_REGEX}_.*\)$"); do
|
|
if [ $NAME == $SEED_NAME ]; then
|
|
# handle seeds differently since their storage is not managed by libvirt
|
|
sudo virsh undefine --managed-save $NAME
|
|
sudo rm /var/lib/libvirt/images/$NAME.qcow2
|
|
else
|
|
sudo virsh undefine --managed-save --remove-all-storage $NAME
|
|
fi
|
|
done
|
|
|
|
for NAME in $(sudo virsh vol-list $LIBVIRT_VOL_POOL 2>/dev/null | grep /var/ | awk '{print $1}' | grep "^\($SEED_NAME\|$BAREMETAL_REGEX\)" ); do
|
|
sudo virsh vol-delete --pool $LIBVIRT_VOL_POOL $NAME
|
|
done
|