#!/bin/bash
#
# sp_channel_treedelete
#
# (c) 2013 SUSE Linux GmbH, Germany.
# GNU Public License. No warranty.
#
# Version: 2013-09-09
#

EXE=$0

CFG="/etc/sysconfig/spock"
test -s $CFG && source $CFG

test -z "${TEMP}" && TEMP="/dev/shm/spk.$RANDOM"
test -z "${SPCMD_USER}" && SPCMD_USER="admin"
test -z "${SPCMD_PASS}" && SPCMD_PASS="suse1234"

CHANNEL=$2


function help() {
	echo "usage:    $(basename $0) --delete PARENTCHANNEL"
	echo "usage:    $(basename $0) --help | --version"
	echo
	echo "example:    $(basename $0) --delete sles11-sp3-pool-x86_64"
	echo
}


function check_cred() {
	if [ -z $SPCMD_USER ] || [ -z $SPCMD_PASS ] ; then
		echo "Please set SPCMD_USER and SPCMD_PASS in $CFG"
		exit 1
	fi
}


function check_parent() {
	spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels >$TEMP 2>/dev/null
	grep $CHANNEL $TEMP >/dev/null 2>&1
        if [ $(echo $?) -gt 0 ] ; then
		echo "Parent channel does not exist. The following channels are available:"
		spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listbasechannels
		rm $TEMP
		exit 1
	fi
	rm $TEMP
}


#main()
case $1 in
 -d|--delete)
	check_cred
	if [ -z $CHANNEL ] ; then
		help
		exit 1
	fi
	check_parent
	BC=$(spacecmd -u $SPCMD_USER -p $SPCMD_PASS -q -- softwarechannel_listchildchannels $CHANNEL)
	for C in $BC; do
		echo "Delete chidchannel $C: "
		/usr/bin/spacewalk-remove-channel -c $C
	done
	echo "Delete parentchannel $CHANNEL: "
	/usr/bin/spacewalk-remove-channel -c $CHANNEL
	if [ $(echo $?) -gt 0 ] ; then
		echo "Something did not work as expected."
		echo
		help
		exit 2
	fi
 	echo "Success"
 ;;
 -v|--version)
	echo -n "$(basename $EXE) "
	head -11 $EXE | grep "^# Version: "
 ;;
 *)	
	help
 ;;
esac
#
