From 3df90ba4ee6043f62577692f0daa7cd37b440ebb Mon Sep 17 00:00:00 2001 From: build Date: Tue, 13 Feb 2007 14:56:28 +0000 Subject: [PATCH 1/1] craetion --- build/nightly.sh | 150 ++++++++++++++++++++++++++ build/onelab.xml | 230 ++++++++++++++++++++++++++++++++++++++++ scripts/auto-update.sh | 8 ++ scripts/dump-db-svn.sh | 129 ++++++++++++++++++++++ scripts/functions.sh | 32 ++++++ scripts/refresh-peer.py | 34 ++++++ 6 files changed, 583 insertions(+) create mode 100755 build/nightly.sh create mode 100644 build/onelab.xml create mode 100644 scripts/auto-update.sh create mode 100755 scripts/dump-db-svn.sh create mode 100644 scripts/functions.sh create mode 100755 scripts/refresh-peer.py diff --git a/build/nightly.sh b/build/nightly.sh new file mode 100755 index 0000000..20deed3 --- /dev/null +++ b/build/nightly.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +COMMAND=$(basename $0) +ROOT=/build +CVSROOT=":pserver:anon@cvs.planet-lab.org:/cvs" +DISTRO=onelab +MAILTO="thierry.parmentelat@sophia.inria.fr" +TAG=HEAD + +# plc chroot runs in UTC +date=$(date -u +'%Y.%m.%d') + +### in the root context +function do_chroot () { + cd /build/custom + (date ; svn update) >> update.log 2>&1 + chroot /plc/devel/root su - build </dev/null ; do + [ -z ${i} ] && BASE=${BASE}. + i=$((${i}+1)) + if [ $i -gt 100 ] ; then + echo "$0: Failed to create release directory `pwd`/${BASE}${i}" + exit 1 + fi + done + BASE=${BASE}${i} +} + +function use_base () { + [ ! -d $BASE ] && mkdir $BASE + if [ ! -d $BASE ] ; then + echo $COMMAND failed to create base $BASE + exit 1 + fi +} + +function manage_distro () { + +# DISTROFILE=$BUILD/$DISTRO.mk +# +# if [ -f $DISTROFILE ] ; then +# echo Using $DISTROFILE +# elif [ -f $ROOT/$DISTRO.mk ] ; then +# echo Using $ROOT/$DISTRO.mk +# ln -s $ROOT/$DISTRO.mk $DISTROFILE +# else +# echo Could not locate $DISTRO.mk +# exit 1 +# fi +# + DISTROFILE=$BUILD/$DISTRO.xml + + if [ -f $DISTROFILE ] ; then + echo Using $DISTROFILE + elif [ -f $ROOT/$DISTRO.xml ] ; then + echo Using $ROOT/$DISTRO.xml + ln -s $ROOT/$DISTRO.xml $DISTROFILE + else + echo Could not locate $DISTRO.xml + exit 1 + fi + +} + +function build () { + trap failure ERR INT + set -x + + echo -n "============================== Starting $COMMAND on " + date + + show_env + + cd $ROOT + cvs -d $CVSROOT co -d $BASE build + + manage_distro + + echo "Running make IN build $(pwd)" + make TAG=${TAG} PLDISTRO=${DISTRO} -C $BASE + + # only if successful + rm -f latest + ln -s $BASE latest + + success +} + +function show_env () { + echo ROOT=$ROOT + echo BASE=$BASE + echo TAG=$TAG + echo DISTRO=$DISTRO +} + +function main () { + + if [ -d /plc/devel/data ] ; then + do_chroot "$@" + else + while getopts "d:r:m:f:b:h" opt ; do + case $opt in + d) CVSROOT=$OPTARG ;; + r) TAG=$OPTARG ;; + m) MAILTO=$OPTARG ;; + f) DISTRO=$OPTARG ;; + b) BASE=$OPTARG ;; + h) usage ;; + esac + done + shift $(($OPTIND - 1)) + + cd $ROOT + ### determine BASE + # if specified, use it, otherwise create from date + if [ -z "$BASE" ] ; then + create_base + else + use_base $BASE + fi + BUILD=$ROOT/$BASE + + build >> ${BUILD}/log-build.txt 2>&1 + fi +} + +########## +main "$@" diff --git a/build/onelab.xml b/build/onelab.xml new file mode 100644 index 0000000..e47e2d2 --- /dev/null +++ b/build/onelab.xml @@ -0,0 +1,230 @@ + + + + + + planetlab + PlanetLab + true + PlanetLab Node Packages + false + + basesystem + bash + coreutils + cpio + e2fsprogs + ed + file + filesystem + glibc + hdparm + initscripts + iproute + iputils + kbd + kernel + libtermcap + passwd + procps + readline + fedora-release + rootfiles + rpm + setserial + setup + sysklogd + SysVinit + termcap + util-linux + vim-minimal + + authconfig + shadow-utils + + anacron + at + authconfig + autofs + bc + bind-utils + bzip2 + crontabs + dhclient + diffutils + ethtool + kernel-utils + logrotate + lsof + logwatch + mailcap + nano + nc + netdump + openssh-clients + parted + pciutils + psacct + quota + rsh + rsync + sendmail + sudo + telnet + traceroute + time + tmpwatch + tcpdump + openssh-server + vixie-cron + wget + yum + + curl + gzip + iptables + lvm + mkinitrd + ntp + perl + python + tar + expect + + portmap + nfs-utils + + schedutils + + vconfig + + util-vserver + util-vserver-build + util-vserver-lib + util-vserver-core + util-vserver-sysv + util-vserver-legacy + util-vserver-python + util-python + NodeManager + NodeUpdate + PLBootServerRequest + PlanetLabAccounts + PlanetLabConf + pycurl + vnet + hotplug + pcmcia-cs + madwifi + wireless-tools + + PlanetLabID + autofs + planetlab_sudo + pl_sshd + ipod + vserver-reference + vserver-system-packages + proper + pl_mom + PlanetLabAuth + netflow-utils + PLCAPI + + + + + vserver + VServer + true + VServer Reference Image + + bash + coreutils + iputils + kernel-vserver + + bzip2 + crontabs + diffutils + logrotate + openssh-clients + passwd + rsh + rsync + sudo + tcpdump + telnet + traceroute + time + vixie-cron + wget + yum + + curl + gzip + perl + python + tar + + + + + bootcd + BootCD + true + BootCD Image + + dhclient + bash + coreutils + iputils + kernel + hotplug + pcmcia-cs + madwifi + wireless-tools + + bzip2 + crontabs + diffutils + logrotate + openssh-clients + passwd + rsh + rsync + sudo + tcpdump + telnet + traceroute + time + vixie-cron + wget + yum + curl + gzip + perl + python + tar + pciutils + kbd + authconfig + hdparm + lvm + lvm2 + kexec-tools + gnupg + nano + parted + pyparted + openssh-server + openssh-clients + ncftp + dosfstools + dos2unix + bind-utils + sharutils + + + + diff --git a/scripts/auto-update.sh b/scripts/auto-update.sh new file mode 100644 index 0000000..b38c00b --- /dev/null +++ b/scripts/auto-update.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +DIRNAME=$(dirname $0) +DIRNAME=$(cd $DIRNAME; pwd -P) + +cd $DIRNAME +svn update &> .auto-update.log + diff --git a/scripts/dump-db-svn.sh b/scripts/dump-db-svn.sh new file mode 100755 index 0000000..3e198e7 --- /dev/null +++ b/scripts/dump-db-svn.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +# we're getting called by cron, so just in case +PATH=/bin:/usr/bin:$PATH + +COMMAND=$(basename $0) +COMMANDDIR=$(dirname $0) +COMMANDDIR=$(cd $COMMANDDIR; pwd -P) +DATADIR=/backups +DATE=$(date +%y-%m-%d-%H-%M-%S) + +LOGDIR=$DATADIR/aa-dumplog +LOG=$LOGDIR/${DATE}.log +LATESTLOG=latest.log + +REVISION="$Revision$" + +source $COMMANDDIR/functions.sh + +### + +case $(hostname) in + *build*) + DEFAULTS="subversion" ;; + *plc*|*private*) + DEFAULTS="planetlab4" ;; + *) + echo "$COMMAND: WARNING: no known defaults for hostname $(hostname)" + DEFAULTS="" + ;; +esac + +DB_KEEPTIME=14 +DB_USER=pgsqluser + +SUBVERSION_KEEPTIME=7 +SUBVERSION_REPO=/svn + +function usage () { + echo "This is $COMMAND, $REVISION" + echo "Usage: $COMMAND [subversion]" + echo -e "\tkeyword 'subversion' : $SUBVERSION_REPO/ is dumped" +# echo -e "\tkeyword 'apache' : $APACHE_ROOT/ is tared" +# echo -e "\tkeyword 'env' : $ENV_ROOT/ is tared" +# echo -e "\totherwise performs a dump of the given database" + echo -e "default arguments are $DEFAULTS" + exit 1 +} + +function dumpdb () { + database=$1; shift + output=$DATADIR/$database-$DATE.sql + latest=$database-latest.sql + echo "Dumping $database into $output (drop-mode)" + mysqldump --add-drop-table --user=$DB_USER $database > $output + manage_link $output $latest +} + +function dumpsubversion () { + output=$DATADIR/subversion-$DATE.dump + latest=subversion-latest.dump + echo "Creating subversion archive in $output" + svnadmin dump $SUBVERSION_REPO/ > $output + manage_link $output $latest +} + +function dumpregulardir () { + name=$1; shift + dumpdir=$1; shift + output=$DATADIR/$name-$DATE.tar + latest=$name-latest.tar + echo "Creating tar archive of $dumpdir into $output" + tar cf $output $dumpdir + manage_link $output $latest +} + +function main () { + + # give one or more target names on the command-line + args="" + if [[ -z "$@" ]] ; then + args="$DEFAULTS" + else + args="$@" + fi + + [ -n "$DEBUG" ] && set -x + + for arg in $args; do + case "$arg" in + -*) + usage ;; + subversion) + dumpsubversion + clean $DATADIR $SUBVERSION_KEEPTIME -name "$arg\*" + ;; +# apache) +# dumpregulardir $arg $APACHE_ROOT +# clean $DATADIR $APACHE_KEEPTIME -name "$arg\*" +# ;; +# env) +# dumpregulardir $arg $ENV_ROOT +# clean $DATADIR $ENV_KEEPTIME -name "$arg\*" +# ;; + *) + dumpdb $arg + clean $DATADIR $DB_KEEPTIME -name "$arg\*" + ;; + esac + done + + clean $LOGDIR 14 + + manage_link $LOG $LATESTLOG +} + +############################## +# create log area +mkdir -p $LOGDIR +chmod g+w $LOGDIR + +for i in "$@" ; do + case "$i" in + -*) + usage ;; + esac +done + +main "$@" > $LOG 2>&1 diff --git a/scripts/functions.sh b/scripts/functions.sh new file mode 100644 index 0000000..8815389 --- /dev/null +++ b/scripts/functions.sh @@ -0,0 +1,32 @@ +### -*-sh-*- + + + +### create a symlink in same dir +# arguments +# actual : full path of the actual file +# link : the link name, only basename is used, will be created in same dir +function manage_link () { + actual=$1; shift + latest=$1; shift + # go in the right directory + cd $(dirname $actual) + actualbase=$(basename $actual) + # just in case + latest=$(basename $latest) + echo "In $(pwd) : linking $actualbase to $latest" + rm -f $latest ; ln -s $actualbase $latest + # go back to current dir + cd - +} + +# usage +# clean [... find arguments] +function clean () { + where=$1; shift + keeptime=$1; shift + echo "== In $where" + echo "Cleaning $@ - older than $keeptime days" + find $where "$@" -atime +$keeptime | xargs rm +} + diff --git a/scripts/refresh-peer.py b/scripts/refresh-peer.py new file mode 100755 index 0000000..355c257 --- /dev/null +++ b/scripts/refresh-peer.py @@ -0,0 +1,34 @@ +#!/usr/bin/env plcsh + +import sys,os,time + +def Run (peername): + timestring=time.strftime("%Y-%m-%d-%H-%M-%S") + print 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' + print 'RefreshPeer on %s - starting on %s'%(peername,timestring) + start=time.time() + result=RefreshPeer(peername) + finish=time.time() + + print 'Total duration',finish-start + print 'xxxxxxxxxx timers:' + keys=result.keys() + keys.sort() + for key in keys: + print key,result[key] + +def RunInLog (peername): + logname="/var/log/refreshpeer.log" + sys.stdout=open(logname,'a') + sys.stderr=sys.stdout + Run(peername) + sys.stderr.close() + sys.stdout.close() + +if __name__ == "__main__": + + for peername in sys.argv[1:]: + RunInLog (peername) + + + -- 2.47.0