when systemslices rpm gets updated, make sure the change makes it to the .vref image
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 11 Mar 2010 17:23:47 +0000 (17:23 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 11 Mar 2010 17:23:47 +0000 (17:23 +0000)
build.sh
cron.d/vserver-reference
initscripts/vserver-reference
vserver-reference.spec

index a5ccb40..aa04382 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -12,7 +12,8 @@
 # Marc E. Fiuczynski <mef@cs.princeton.edu>
 # Copyright (C) 2004-2007 The Trustees of Princeton University
 #
-# $Id: build.sh,v 1.20 2007/09/06 20:41:23 faiyaza Exp $
+# $Id$
+# $URL$
 #
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
@@ -127,6 +128,10 @@ systemvserver_count=$(ls ../build/config.${pldistro}/vserver-*.pkgs 2> /dev/null
     rm -rf ${vdir}
     rm -f  ${vdir}.changes
     mv ${vdir}-tmp ${vdir}
+
+    # cleanup yum remainings
+    rm -rf ${vdir}/build ${vdir}/longbuildroot
+
     echo "--------DONE BUILDING system vserver ${NAME}: $(date)"
 done
 
@@ -138,4 +143,7 @@ postfile=$(pl_locateDistroFile ../build/ ${pldistro} vserver.post)
 # fix sudoers config
 [ -f ${vref}/etc/sudoers ] && echo -e "\nDefaults\tlogfile=/var/log/sudo\n" >> ${vref}/etc/sudoers
 
+# cleanup yum remainings
+rm -rf ${vref}/build ${vref}/longbuildroot
+
 exit 0
index 9bf8643..0917331 100644 (file)
@@ -5,7 +5,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: pl_mom.cron,v 1.1 2006/04/28 19:12:09 mlhuang Exp $
+# $Id$
 #
 
 @M@ @H@ * * *  root    /etc/init.d/vserver-reference start >/dev/null 2>&1
index ab1c42f..0785caa 100755 (executable)
 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 +90,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 +106,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 +125,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
index a701fe8..22b79da 100644 (file)
@@ -108,7 +108,7 @@ sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" %{_sysconfdir}/cron.d/vserver-reference
 %post systemslices-%{slicefamily}
 # need to do this for systemslices, for when a new image shows up
 # we've already the service installed and enabled, as systemslices requires the plain package
-[ "$PL_BOOTCD" = "1" ] || service vserver-reference start
+[ "$PL_BOOTCD" = "1" ] || service vserver-reference force
 
 %changelog
 * Fri Jan 29 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - VserverReference-5.0-1