support for net settings in myplc-init-vserver - reviewed interface to use options...
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Wed, 5 Dec 2007 10:06:20 +0000 (10:06 +0000)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Wed, 5 Dec 2007 10:06:20 +0000 (10:06 +0000)
README-build.txt
vbuild-init-vserver.sh
vbuild-nightly.sh

index b09343f..c738f35 100644 (file)
@@ -14,7 +14,7 @@ devel@planet-lab.org, as all this is not precisely foolproof :)
 * create a local fedora mirror - see vbuild-fedora-mirror.sh
 * create a vserver - see vbuild-init-vserver.sh
 * enter the vserver and svn export this build module into /build 
-* cd /build and ru
+* cd /build and run
 # make stage1=true PLDISTRO=<yourdistro>
 # make help
 # make
index 9587c69..03845f2 100755 (executable)
@@ -7,6 +7,10 @@ DIRNAME=$(dirname $0)
 # lst parsing utilities
 PATH=$(dirname $0):$PATH . build.common
 
+DEFAULT_FCDISTRO=f7
+DEFAULT_PLDISTRO=planetlab
+DEFAULT_PERSONALITY=linux32
+
 function failure () {
     echo "$COMMAND : Bailing out"
     exit 1
@@ -82,7 +86,11 @@ function setup_vserver () {
     fi
 
     # create it
-    $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro
+    options=""
+    [ -n "$IP_ADDR" ] && options="$options --interface $IP_ADDR"
+    [ -n "$HOSTNAME" ] && options="$options --hostname $HOSTNAME"
+    [ -n "$NET_DEV" ] && options="$options --netdev $NET_DEV"
+    $personality vserver $VERBOSE $vserver build $options -m yum -- -d $fcdistro
 
     if [ ! -z "$personality" ] ; then
        registered_personality=$(grep $personality /etc/vservers/$vserver/personality | wc -l)
@@ -245,29 +253,21 @@ COMMAND_VBUILD="vbuild-init-vserver.sh"
 COMMAND_MYPLC="myplc-init-vserver.sh"
 function usage () {
     set +x 
-    echo "Usage: $COMMAND_VBUILD [-s|s|p] [-v] vserver-name distribution pldistro [personality]"
-    echo "Usage: $COMMAND_MYPLC [-s|s|p] [-v] vserver-name distribution pldistro repo-url [personality]"
+    echo "Usage: $COMMAND_VBUILD [-v] vserver-name"
+    echo "Usage: $COMMAND_MYPLC [-v] vserver-name repo-url"
     echo "Requirements: you need to have a vserver-compliant kernel,"
     echo "  as well as the util-vserver RPM installed"
     echo "Description:"
-    echo "  This command creates a fresh vserver instance"
-    echo "  . vserver-name : the vserver's name"
-    echo "  . distribution : for creating the root filesystem, e.g. fc6"
-    echo "  . pldistro: e.g. onelab"
-    echo "  . repo-url: for myplc vserver, used to create a yum repository"
-    echo "  . personality: last, optional, argument defaults to linux32"
-    echo "This is done in three steps"
-    echo " (*) setup phase : vserver creation, yum internalization and config (from /etc/vservers)"
-    echo " (*) tools install the tools required for building are installed"
-    echo "     based on the folowing file for the actual set of packages and groups"
-    echo "     vbuild mode :  <pldistro>-devel.lst"
-    echo "     myplc mode :   <pldistro>-shell.lst"
-    echo " (*) post-install : various tunings required, as well as create a build user (vbuild only)"
-    echo "Options:"
-    echo " -s : skips the setup phase"
-    echo " -t : skips the tools phase"
-    echo " -p : skips the post-install"
+    echo "  This command creates a fresh vserver instance, for building, or running, myplc"
+    echo "Supported options"
+    echo " -f fcdistro - for creating the root filesystem - defaults to $DEFAULT_FCDISTRO"
+    echo " -d pldistro - defaults to $DEFAULT_PLDISTRO"
+    echo " -p personality - defaults to $DEFAULT_PERSONALITY"
     echo " -v : passes -v to calls to vserver"
+    echo "$COMMAND_MYPLC only:"
+    echo " -h hostname: passed as vserver build --hostname"
+    echo " -i ip-address: passed as vserver build --interface"
+    echo " -d dev: passed as vserver build --netdev"
     exit 1
 }
 
@@ -286,42 +286,36 @@ function main () {
            usage ;;
     esac
 
-    DO_SETUP=true
-    DO_TOOLS=true
-    DO_POST=true
     VERBOSE=
-    while getopts "stpvh" opt ; do
+    while getopts "f:d:p:vu:h:i:d:" opt ; do
        case $opt in
-           s) DO_SETUP="" ;;
-           t) DO_TOOLS="" ;;
-           p) DO_POST="" ;;
+           f) fcdistro=$OPTARG;;
+           d) pldistro=$OPTARG;;
+           p) personality=$OPTARG;;
+           i) [ -z "$MYPLC_MODE" ] && usage ; IP_ADDR=$OPTARG;;
+           h) [ -z "$MYPLC_MODE" ] && usage ; HOSTNAME=$OPTARG;;
+           d) [ -z "$MYPLC_MODE" ] && usage ; NET_DEV==$OPTARG;;
            v) VERBOSE="-v" ;;
-           h|*) usage ;;
+           *) usage ;;
        esac
     done
        
     shift $(($OPTIND - 1))
-    
     [[ -z "$@" ]] && usage
     vserver=$1 ; shift
-    [[ -z "$@" ]] && usage
-    fcdistro=$1 ; shift
-    [[ -z "$@" ]] && usage
-    pldistro=$1 ; shift
     if [ -n "$MYPLC_MODE" ] ; then
        [[ -z "$@" ]] && usage
        REPO_URL=$1 ; shift
     fi
-    if [[ -z "$@" ]] ; then
-       personality=linux32
-    else
-       personality=$1; shift
-    fi
     [[ -n "$@" ]] && usage
 
-    [ -n "$DO_SETUP" ] && setup_vserver $vserver $fcdistro $personality 
-    [ -n "$DO_TOOLS" ] && devel_tools $vserver $fcdistro $pldistro $personality
-    [ -n "$DO_POST" ] && post_install $vserver $personality
+    [ -z "$fcdistro" ] && fcdistro=$DEFAULT_FCDISTRO
+    [ -z "$pldistro" ] && pldistro=$DEFAULT_PLDISTRO
+    [ -z "$personality" ] && personality=$DEFAULT_PERSONALITY
+
+    setup_vserver $vserver $fcdistro $personality 
+    devel_tools $vserver $fcdistro $pldistro $personality
+    post_install $vserver $personality
 
 }
 
index 4193045..72b3561 100755 (executable)
@@ -5,7 +5,7 @@ COMMANDPATH=$0
 COMMAND=$(basename $0)
 
 # default values, tunable with command-line options
-DEFAULT_FCDISTRO=fc6
+DEFAULT_FCDISTRO=f7
 DEFAULT_PLDISTRO=planetlab
 DEFAULT_PERSONALITY=linux32
 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@"
@@ -171,17 +171,18 @@ function usage () {
     echo "This is $REVISION"
     echo "Supported options"
     echo " -n dry-run : -n passed to make - vserver gets created though - no mail sent"
-    echo " -f FCDISTRO - defaults to $DEFAULT_FCDISTRO"
-    echo " -d PLDISTRO - defaults to $DEFAULT_PLDISTRO"
-    echo " -b BASE - defaults to $DEFAULT_BASE"
+    echo " -f fcdistro - defaults to $DEFAULT_FCDISTRO"
+    echo " -d pldistro - defaults to $DEFAULT_PLDISTRO"
+    echo " -p personality - defaults to $DEFAULT_PERSONALITY"
+    echo " -b base - defaults to $DEFAULT_BASE"
     echo "    @NAME@ replaced as appropriate"
-    echo " -t PLDISTROTAGS - defaults to \${PLDISTRO}-tags.mk"
-    echo " -r TAGSRELEASE - a release number that refers to PLDISTROTAGS - defaults to HEAD"
-    echo " -s SVNPATH - where to fetch the build module"
+    echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk"
+    echo " -r tagsrelease - a release number that refers to PLDISTROTAGS - defaults to HEAD"
+    echo " -s svnpath - where to fetch the build module"
     echo " -o : overwrite - re-run in base directory, do not create vserver"
-    echo " -m MAILTO"
-    echo " -a MAKEVAR=value - space in values are not supported"
-    echo " -w WEBPATH - defaults to $DEFAULT_WEBPATH"
+    echo " -m mailto"
+    echo " -a makevar=value - space in values are not supported"
+    echo " -w webpath - defaults to $DEFAULT_WEBPATH"
     echo " -B : run build only"
     echo " -T : run test only"
     echo " -v : be verbose"
@@ -201,12 +202,12 @@ function main () {
     MAKEOPTS=()
     DO_BUILD=true
     DO_TEST=true
-    PERSONALITY=$DEFAULT_PERSONALITY
-    while getopts "nf:d:b:t:r:s:om:a:w:BTvhp:" opt ; do
+    while getopts "nf:d:b:p:t:r:s:om:a:w:BTvh" opt ; do
        case $opt in
            n) DRY_RUN="true" ; MAKEOPTS=(${MAKEOPTS[@]} -n) ;;
            f) FCDISTRO=$OPTARG ;;
            d) PLDISTRO=$OPTARG ;;
+           p) PERSONALITY=$OPTARG ;;
            b) BASE=$OPTARG ;;
            t) PLDISTROTAGS=$OPTARG ;;
            r) TAGSRELEASE=$OPTARG ;;
@@ -217,7 +218,6 @@ function main () {
            w) WEBPATH=$OPTARG ;;
            B) DO_TEST= ;;
            T) DO_BUILD= ; USEOLD=true ;;
-           p) PERSONALITY=$OPTARG ;;
            v) set -x ;;
            h|*) usage ;;
        esac
@@ -229,6 +229,7 @@ function main () {
     # set defaults
     [ -z "$FCDISTRO" ] && FCDISTRO=$DEFAULT_FCDISTRO
     [ -z "$PLDISTRO" ] && PLDISTRO=$DEFAULT_PLDISTRO
+    [ -z "$PERSONALITY" ] && PERSONALITY=$DEFAULT_PERSONALITY
     [ -z "$PLDISTROTAGS" ] && PLDISTROTAGS="${PLDISTRO}-tags.mk"
     [ -z "$BASE" ] && BASE="$DEFAULT_BASE"
     [ -z "$WEBPATH" ] && WEBPATH="$DEFAULT_WEBPATH"
@@ -302,7 +303,7 @@ function main () {
            svn export $SVNPATH $tmpdir
             # Create vserver
            cd $tmpdir
-           ./vbuild-init-vserver.sh ${BASE} ${FCDISTRO} ${PLDISTRO} ${PERSONALITY}
+           ./vbuild-init-vserver.sh ${BASE} -f ${FCDISTRO} -d ${PLDISTRO} -p ${PERSONALITY}
            # cleanup
            cd -
            rm -rf $tmpdir