option to not start created VM
[build.git] / lbuild-initvm.sh
index f224e9f..0dca2a5 100755 (executable)
@@ -32,6 +32,8 @@ PUBLIC_BRIDGE=br0
 VIF_GUEST=eth0
 
 ##########
+FEDORA_MIRROR_BASE="http://mirror.onelab.eu/fedora/"
+FEDORA_MIRROR_KEYS="http://mirror.onelab.eu/keys/"
 FEDORA_PREINSTALLED="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
 DEBIAN_PREINSTALLED="openssh-server openssh-client"
 
@@ -158,7 +160,7 @@ function fedora_download() {
       sed -i "s/\$basearch/$arch/g; s/\$releasever/$release/g;" $f
     done 
 
-    MIRROR_URL=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os
+    MIRROR_URL=$FEDORA_MIRROR_BASE/releases/$release/Everything/$arch/os
     RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
     # with fedora18 the rpms are scattered by first name
     RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-$release-1.noarch.rpm"
@@ -315,22 +317,22 @@ function fedora_configure_yum () {
 
     cat > $lxc_root/etc/yum.repos.d/building.repo <<EOF
 [fedora]
-name=Fedora $release - $arch
-baseurl=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os/
+name=Fedora \$releasever - \$basearch
+baseurl=$FEDORA_MIRROR_BASE/releases/\$releasever/Everything/\$basearch/os/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
-gpgkey=http://mirror.onelab.eu/keys/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
 
 [updates]
-name=Fedora $release - $arch - Updates
-baseurl=http://mirror.onelab.eu/fedora/updates/$release/$arch/
+name=Fedora \$releasever - \$basearch - Updates
+baseurl=$FEDORA_MIRROR_BASE/updates/\$releasever/\$basearch/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
-gpgkey=http://mirror.onelab.eu/keys/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
 EOF
-    
+
     # for using vtest-init-lxc.sh as a general-purpose lxc creation wrapper
     # just mention 'none' as the repo url
     if [ -n "$REPO_URL" ] ; then
@@ -631,21 +633,25 @@ function devel_or_vtest_tools () {
 function post_install () {
     lxc=$1; shift 
     personality=$1; shift
+    # setup localtime from the host
+    cp /etc/localtime $lxc_root/etc/localtime
     if [ -n "$BUILD_MODE" ] ; then
        post_install_build $lxc $personality
-       virsh -c lxc:/// start $lxc
-       # manually run dhclient in guest - somehow this network won't start on its own
-       virsh -c lxc:/// lxc-enter-namespace $lxc /bin/bash -c "dhclient $VIF_GUEST"
+       if [ -n "$START_VM" ] ; then
+           virsh -c lxc:/// start $lxc
+           # manually run dhclient in guest - somehow this network won't start on its own
+            virsh -c lxc:/// lxc-enter-namespace $lxc /bin/bash -c "dhclient $VIF_GUEST"
+       fi
     else
        post_install_myplc $lxc $personality
-       virsh -c lxc:/// start $lxc
-# it sounds like we don't need ssh per se any more
-# it still makes sense to wait for network readiness though
-# some day maybe...
-       wait_for_ssh $lxc
+       if [ -n "$START_VM" ] ; then
+           virsh -c lxc:/// start $lxc
+           # it sounds like we don't need ssh per se any more
+           # it still makes sense to wait for network readiness though
+           # some day maybe...
+           wait_for_ssh $lxc
+       fi
     fi
-    # setup localtime from the host
-    cp /etc/localtime $lxc_root/etc/localtime
 }
 
 function post_install_build () {
@@ -748,6 +754,7 @@ function usage () {
     echo "    by default we use devel.pkgs (build mode) or runtime.pkgs (test mode)"
     echo " -i image - the location of the rootfs"
     echo " -m memory - the amount of allocated memory in MB - defaults to $DEFAULT_MEMORY MB"
+    echo " -s do not start VM"
     echo " -v be verbose"
     exit 1
 }
@@ -763,7 +770,8 @@ function main () {
           exit 1
     fi
 
-    while getopts "n:f:d:p:r:P:i:m:v" opt ; do
+    START_VM=true
+    while getopts "n:f:d:p:r:P:i:m:sv" opt ; do
        case $opt in
            n) GUEST_HOSTNAME=$OPTARG;;
            f) fcdistro=$OPTARG;;
@@ -773,6 +781,7 @@ function main () {
            P) PREINSTALLED=$OPTARG;;
             i) IMAGE=$OPTARG;;
             m) MEMORY=$OPTARG;;
+           s) START_VM= ;;
            v) VERBOSE=true; set -x;;
            *) usage ;;
        esac