stephane 9ab830529b Clean up seed image file
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
2014-10-14 16:39:50 -07:00

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