kolla-ansible/tools/cleanup-containers
liyingjun d5fe8a30f9 Cleanup container script improvement
Currently, when there are some qemu processes which may be some useful
virtual machines running by the operator running on non compute node, the
cleanup script will fail the cleanup operation for that node. We need to
ignore the qemu process check for non compute nodes.

Change-Id: If49a1a30764063935b2a65312de8f3b2357c7fbc
Closes-bug: 1633005
2016-10-13 17:31:17 +08:00

29 lines
992 B
Bash
Executable File

#!/bin/bash
if [[ $COMPUTE ]] && [[ $(pgrep qemu) ]]; then
echo "Some qemu processes were detected."
echo "Docker will not be able to stop the nova_libvirt container with those running."
echo "Please clean them up before rerunning this script."
exit 1
fi
if [ -n "$1" ]; then
containers_to_kill=($(docker ps | grep -E "$1" | awk '{print $1}'))
volumes_to_remove=($(docker volume ls | grep -E "$1" | awk '{print $1}'))
else
containers_to_kill=$(docker ps --filter "label=kolla_version" --format "{{.Names}}" -a)
volumes_to_remove=$(docker inspect -f '{{range .Mounts}} {{printf "%s\n" .Name }}{{end}}' ${containers_to_kill} | \
egrep -v '(^\s*$)' | sort | uniq)
fi
echo "Stopping containers..."
(docker stop -t 2 ${containers_to_kill} 2>&1) > /dev/null
echo "Removing containers..."
(docker rm -v -f ${containers_to_kill} 2>&1) > /dev/null
echo "Removing volumes..."
(docker volume rm ${volumes_to_remove} 2>&1) > /dev/null
echo "All cleaned up!"