#!/bin/sh

if [ "z$1" = "z-h" -o "z$1" = "z--help" ]; then
    echo "usage: $0 [-d]"
    echo -n "    Clean up all CORE Xen domUs, bridges, interfaces, "
    echo "and session\n    directories. Options:"
    echo "        -h    show this help message and exit"
    echo "        -d    also kill the Python daemon"
    exit 0
fi

if [ `id -u` != 0 ]; then
    echo "Permission denied. Re-run this script as root."
    exit 1
fi

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
export PATH

if [ "z$1" = "z-d" ]; then
    pypids=`pidof python python2`
    for p in $pypids; do
	grep -q core-daemon /proc/$p/cmdline
	if [ $? = 0 ]; then
            echo "cleaning up core-daemon process: $p"
	    kill -9 $p
	fi
    done
fi

mount | awk '
    /\/tmp\/pycore\./ { print "umount " $3; system("umount " $3); }
'

domus=`xm list | awk '
    /^c.*-n.*/ { print $1; }'`
for domu in $domus
do
    echo "destroy $domu" 
    xm destroy $domu
done

vgs=`vgs | awk '{ print $1; }'`
for vg in $vgs
do
    if [ ! -x /dev/$vg ]; then
	continue
    fi
    echo "searching volume group: $vg"
    lvs=`ls /dev/$vg/c*-n*- 2> /dev/null`
    for lv in $lvs
    do
	echo "removing volume $lv"
	kpartx -d $lv
	lvchange -an $lv
	lvremove $lv
    done
done

/sbin/ip link show | awk '
    /b\.ctrlnet\.[0-9]+/ {print "removing interface " $2; system("ip link set " $2 " down; brctl delbr " $2); }
'

ls /sys/class/net | awk '
    /^b\.[0-9]+\.[0-9]+$/ {print "removing interface " $1; system("ip link set " $1 " down; brctl delbr " $1); }
'


ebtables -L FORWARD | awk '
    /^-.*b\./ {print "removing ebtables " $0; system("ebtables -D FORWARD " $0); print "removing ebtables chain " $4; system("ebtables -X " $4);}
'

rm -rf /tmp/pycore*