X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=initscripts%2Fvserver-reference;h=aff0275ad5ca65cf0b79721362835dbd2b4e36bb;hb=e7c0f23f7397d786c528d8c578867a8147891dd5;hp=ab1c42f04bfcbcbf7e54328f079228cc9610bf46;hpb=e6972eec3490fe74d886bd2899ff24b5392365d1;p=vserver-reference.git diff --git a/initscripts/vserver-reference b/initscripts/vserver-reference index ab1c42f..aff0275 100755 --- a/initscripts/vserver-reference +++ b/initscripts/vserver-reference @@ -9,17 +9,17 @@ # Mark Huang # 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