monitor libvirt for both master and 1.0
[build.git] / vbuild-init-lxc.sh
index f688f24..9e1dd8b 100755 (executable)
@@ -19,7 +19,8 @@ DEFAULT_IFNAME=eth0
 COMMAND_VBUILD="vbuild-init-lxc.sh"
 COMMAND_MYPLC="vtest-init-lxc.sh"
 
-lxc_version="0.8.0-rc2"
+lxc_version="lxc-0.8.0"
+lxc_git_repo="git://lxc.git.sourceforge.net/gitroot/lxc/lxc"
 
 function bridge_init () {
 
@@ -150,17 +151,17 @@ function prepare_host() {
     #retrieve and install lxc from sources 
     raw_version=$(lxc-version ||: )
     lxc_installed_version=$(echo $raw_version | sed -e 's,.*: ,,')
-    if [ "$lxc_installed_version" != "$lxc_version" ] ; then
+    if [ "$lxc_installed_version" != "$(echo $lxc_version | cut -d'-' -f2)" ] ; then
        echo "Expecting version" '['$lxc_version']'
        echo "Found version" '['$lxc_installed_version']'
         echo "Installing lxc ..."
         cd /root
-       [ -d lxc ] || git clone git://lxc.git.sourceforge.net/gitroot/lxc/lxc 
+       [ -d lxc ] || git clone "$lxc_git_repo"
         cd lxc
        git pull
        git checkout $lxc_version
         ./autogen.sh
-        ./configure --prefix=/usr --exec-prefix=/usr
+        ./configure --prefix=/usr --exec-prefix=/usr --disable-apparmor
         make
         make install
         mkdir -p /usr/var/lib/
@@ -207,10 +208,16 @@ MTU=1500
 EOF
 
 # set the hostname
+if [[ "$fcdistro" == "f18" ]] ; then
+    cat <<EOF > ${rootfs_path}/etc/hostname
+$HOSTNAME
+EOF
+else
     cat <<EOF > ${rootfs_path}/etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=$HOSTNAME
 EOF
+fi
 
     # set minimal hosts
 #    cat <<EOF > $rootfs_path/etc/hosts
@@ -254,13 +261,20 @@ function configure_fedora_init() {
 
 
 function configure_fedora_systemd() {
-
     unlink ${rootfs_path}/etc/systemd/system/default.target
+    ln -s /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
     touch ${rootfs_path}/etc/fstab
-    chroot ${rootfs_path} ln -s /dev/null //etc/systemd/system/udev.service
-    chroot ${rootfs_path} ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
-    #dependency on a device unit fails it specially that we disabled udev
-    sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
+    ln -s /dev/null ${rootfs_path}/etc/systemd/system/udev.service
+# Thierry - Feb 2013
+# this was intended for f16 initially, in order to enable getty that otherwise would not start
+# having a getty running is helpful only if ssh won't start though, and we see a correlation between
+# VM's that refuse to lxc-stop and VM's that run crazy getty's
+# so, turning getty off for now instead
+#   #dependency on a device unit fails it specially that we disabled udev
+#    sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
+    ln -s /dev/null ${rootfs_path}/etc/systemd/system/"getty@.service"
+    rm -f ${rootfs_path}/etc/systemd/system/getty.target.wants/*service || :
+# can't seem to handle this one with systemctl
     chroot ${rootfs_path} chkconfig network on
 }
 
@@ -282,9 +296,21 @@ set -x
   
     
     MIRROR_URL=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os
-    RELEASE_URL="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
-    echo "Fetching from $RELEASE_URL"
-    curl -f "$RELEASE_URL" > $INSTALL_ROOT/fedora-release-$release.noarch.rpm
+    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"
+    RELEASE_TARGET=$INSTALL_ROOT/fedora-release-$release.noarch.rpm
+    found=""
+    for attempt in $RELEASE_URL1 $RELEASE_URL2; do
+       if curl -f $attempt -o $RELEASE_TARGET ; then
+           echo "Retrieved $attempt"
+           found=true
+           break
+       else
+           echo "Failed attempt $attempt"
+       fi
+    done
+    [ -n "$found" ] || { echo "Could not retrieve fedora-release rpm - exiting" ; exit 1; }
     
     mkdir -p $INSTALL_ROOT/var/lib/rpm
     rpm --root $INSTALL_ROOT  --initdb
@@ -574,8 +600,7 @@ function setup_lxc() {
     done
 
     [ -z $ssh_up ] && echo "SSHD in container $lxc is not running"
-     
-
+   
     # rpm --rebuilddb
     chroot $rootfs_path rpm --rebuilddb
     #ssh -o "StrictHostKeyChecking no" $IP "rpm --rebuilddb"
@@ -868,7 +893,8 @@ function main () {
     else
         [[ -z "$REPO_URL" ]] && usage
         [[ -z "$IP" ]] && usage
-        NETMASK=$(ifconfig br0 | grep 'inet addr' | awk '{print $4}' | sed -e 's/.*://')
+       
+        NETMASK=$(ifconfig br0 | grep 'inet ' | awk '{print $4}' | sed -e 's/.*://')
         GATEWAY=$(route -n | grep 'UG' | awk '{print $2}')
         [[ -z "$HOSTNAME" ]] && usage
         lxc_network_type=veth