eradicate svn keywords
[vserver-reference.git] / initscripts / vserver-reference
index 410e807..aff0275 100755 (executable)
@@ -9,17 +9,17 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2004 The Trustees of Princeton University
 #
-# $Id$
-#
 
 case "$1" in
     start|restart|reload)
        ;;
+    force)
+       FORCE=true;;
     stop|status)
        exit 0
        ;;
     *)
-       echo $"Usage: $0 {start|stop|restart|status}"
+       echo $"Usage: $0 {start|stop|restart|reload|status|force}"
        exit 1
        ;;
 esac
@@ -88,9 +88,15 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do
     # e.g. VREFNAME=planetflow-f8-i386
     VREFNAME=$(echo $SLICEFAMILY | sed -e "s,^[^-]*-,$NAME-,")
 
+    VREFPATH="$__DEFAULT_VSERVERDIR/.vref/$VREFNAME"
+    
+    # do not redo existing vref's unless force is mentioned
+    [ -z "$FORCE" -a -d "$VREFPATH" ] && continue
+    [ -z "$FORCE" ] && message=Building
+    [ -n "$FORCE" ] && message=Force-building
+    
     # Copy base reference image
-    if [ ! -d "$__DEFAULT_VSERVERDIR/.vref/$VREFNAME" ] ; then
-       echo -n $"Building VServer reference image for $NAME in $VREFNAME: " >&3 2>&4
+       echo -n $"$message VServer reference image for $NAME in $VREFNAME: " >&3 2>&4
 
        # Build in temporary directory
        mkdir -p "$__DEFAULT_VSERVERDIR/.vtmp"
@@ -98,9 +104,9 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do
        mkdir -p "$__DEFAULT_VSERVERDIR/.vref"
 
        # build the systemvserver from the one it was originally cloned from
-       REF="$__DEFAULT_VSERVERDIR/.vref/$SLICEFAMILY"
-       if [ -d "$REF" ] ; then
-           "$_VCLONE" "$REF"/ "$TMP"/
+       FAMILYREF="$__DEFAULT_VSERVERDIR/.vref/$SLICEFAMILY"
+       if [ -d "$FAMILYREF" ] ; then
+           "$_VCLONE" "$FAMILYREF"/ "$TMP"/
            RETVAL=$?
        else
            RETVAL=1
@@ -117,14 +123,15 @@ for systemvserver in "$__DEFAULT_VSERVERDIR/.vstub/"*/*.cloned ; do
 
        # Move it to its permanent location when complete
        if [ $RETVAL -eq 0 ] ; then
-           mv "$TMP" "$__DEFAULT_VSERVERDIR/.vref/$VREFNAME"
+           # if in force mode, cleanup 
+           [ -d "$VREFPATH" ] && rm -rf "$VREFPATH"
+           mv "$TMP" "$VREFPATH"
            success >&3 2>&4
        else
            rm -rf "$TMP"
            failure >&3 2>&4
        fi
        echo >&3 2>&4
-    fi
 done
 
 echo -n $"Updating VServer reference images: " >&3 2>&4
@@ -137,7 +144,7 @@ for file in /etc/hosts /etc/resolv.conf /etc/planetlab/node_id \
             /etc/pki/rpm-gpg/* ; do
     if [ -r $file ] ; then
        for vroot in $VROOTS ; do
-           install -D -m 644 $file $vroot/$file
+           [ -d $vroot ] && install -D -m 644 $file $vroot/$file
        done
     fi
 done
@@ -146,14 +153,16 @@ done
 for vroot in $VROOTS ; do
     # NOTE: without this step, the 'rpm --allmatches' step can hang on boot
     # Remove stale RPM locks from all VROOT dirs
-    rm -f $vroot/var/lib/rpm/__db*
+    [ -d $vroot ] && rm -f $vroot/var/lib/rpm/__db*
 done
 
 # (Re)install GPG signing keys
 if [ -d /etc/pki/rpm-gpg ] ; then
     for vroot in $VROOTS ; do
-       chroot $vroot rpm --allmatches -e gpg-pubkey || :
-       chroot $vroot rpm --import /etc/pki/rpm-gpg/* || :
+       if [ -d $vroot ] ; then
+           chroot $vroot rpm --allmatches -e gpg-pubkey || :
+           chroot $vroot rpm --import /etc/pki/rpm-gpg/* || :
+       fi
     done
 fi
 
@@ -168,13 +177,15 @@ CACERT="/usr/boot/cacert.pem /mnt/cdrom/bootme/cacert/$PLC_BOOT_HOST/cacert.pem"
 for cacert in $CACERT ; do
     if [ -r $cacert ] ; then
        for vroot in $VROOTS ; do
-           # Install boot server certificate
-           install -D -m 644 $cacert $vroot/usr/boot/cacert.pem
-           echo $PLC_BOOT_HOST > $vroot/usr/boot/boot_server
-
-           # Also install in /mnt/cdrom/bootme for backward compatibility
-           install -D -m 644 $cacert $vroot/mnt/cdrom/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
-           echo $PLC_BOOT_HOST > $vroot/mnt/cdrom/bootme/BOOTSERVER
+           if [ -d $vroot ] ; then
+               # Install boot server certificate
+               install -D -m 644 $cacert $vroot/usr/boot/cacert.pem
+               echo $PLC_BOOT_HOST > $vroot/usr/boot/boot_server
+
+               # Also install in /mnt/cdrom/bootme for backward compatibility
+               install -D -m 644 $cacert $vroot/mnt/cdrom/bootme/cacert/$PLC_BOOT_HOST/cacert.pem
+               echo $PLC_BOOT_HOST > $vroot/mnt/cdrom/bootme/BOOTSERVER
+           fi
        done
        break
     fi