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

# TODO . /etc/spock/rhn-clone-errata.conf
# TODO . /etc/spock/sp_bootstrap_create
# TODO test -z ...

EXE=$0

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

test -z "${SPCMD_USER}" && SPCMD_USER="admin"
SPCMD_PASS=${2}

# KEY without "1-"
KEY=${3:-"rhel6264"}
OUT=${4:-"bootrhel6264.sh"}
CHN="rhel62-server-x86_64"

KEY_OPT="provisioning_entitled"
KEY_PKG="rhncfg-actions rhncfg rhncfg-client osad"
KEY_CHN="rhel62-server-updates-x86_64 rhel62-rhntools-x86_64"
BOOT_OPT="-v --allow-config-actions --allow-remote-commands --no-up2date"

BPAT="ORG_CA_CERT ORG_CA_CERT_IS_RPM_YN ORG_GPG_KEY ACTIVATION_KEYS"
PDIR=/srv/www/htdocs/pub
BDIR=$PDIR/bootstrap
OUTBAK=$BDIR/$OUT.BAK
KEYBAK=$PDIR/$KEY.BAK
IDIR=/var/spacewalk/install
SPCMD=/usr/bin/spacecmd
BTCMD=/usr/bin/mgr-bootstrap


function gen_akey() {
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y -- activationkey_create -n $KEY -b $CHN -e $KEY_OPT
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y -- activationkey_addchildchannels 1-$KEY $KEY_CHN
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y -- activationkey_addpackages 1-$KEY $KEY_PKG 
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y -- activationkey_enableconfigdeployment 1-$KEY
}


function gen_bstrap() {
 $BTCMD --activation-keys=1-$KEY --script=$OUT $BOOT_OPT
 # TODO ORG_GPG_KEY, better copy, backup ...
 cp -a $BDIR/$OUT $OUTBAK
 sed -e s/"^ORG_GPG_KEY="/ORG_GPG_KEY=$KEY\.key/ < $OUTBAK > $BDIR/$OUT
 cp -a $PDIR/$KEY.key $KEYBAK &&\
 cp -a $IDIR/$KEY/RPM-GPG-KEY-redhat-release $PDIR/$KEY.key
}


function show() {
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y activationkey_list
 $SPCMD -u $SPCMD_USER -p $SPCMD_PASS -y activationkey_details 1-$KEY

 echo
 ls -l $BDIR/$OUT
 for f in $BPAT ; do
 	grep "^${f}=" $BDIR/$OUT
 done 
}


function help() {
	echo "usage:    $(basename $0) OPTION"
	echo "usage:    $(basename $0) --activationkey <passw> <actkey>"
	echo "usage:    $(basename $0) --bootstrapscript <passw> <actkey>"
	echo
	echo " --activationkey"
	echo " --bootstrapscript"
	echo " --version        show version"
	echo " --help           show help"
	echo
	echo "activation key has to be given without leading 1-"
}


# main()
case $1 in
 -a|--acticvationkey)
	gen_akey
 ;;
 -b|--bootstrapscript)
	gen_bstrap
 ;;
 -s|--show)	
	show
 ;;
 -v|--version)
	echo -n "$(basename $EXE) "
	head -11 $EXE | grep "^# Version: "
 ;;
 *)
	help
 ;;
esac
#
