lxc build to use lxc branch of bootcd
[build.git] / vbuild-init-lxc.sh
index 1608fa7..4f0bdac 100755 (executable)
@@ -381,6 +381,7 @@ lxc.network.link = $lxc_network_link
 lxc.network.name = $IFNAME
 lxc.network.mtu = 1500
 lxc.network.ipv4 = $IP/$CIDR
+lxc.network.veth.pair = $veth_pair
 #cgroups
 #lxc.cgroup.devices.deny = a
 # /dev/null and zero
@@ -555,9 +556,27 @@ function setup_lxc() {
     mkdir $rootfs_path/root/.ssh
     cat /root/.ssh/id_rsa.pub >> $rootfs_path/root/.ssh/authorized_keys
     
+    # start container
     lxc-start -d -n $lxc
 
-    sleep 20
+    lxc-wait -n $lxc -s RUNNING
+
+    echo $IP is up, waiting for ssh...
+
+    # wait max 5 min for sshd to start 
+    ssh_up=""
+    stop_time=$(($(date +%s) + 300))
+    current_time=$(date +%s)
+
+    while [ "$current_time" -lt "$stop_time" ] ; do
+         echo "ssh attempt ..."
+         ssh -o "StrictHostKeyChecking no" $IP 'uname -i' && { ssh_up=true; echo "SSHD in container $lxc is UP"; break ; } || :
+         sleep 10
+         current_time=$(($current_time + 10))
+    done
+
+    [ -z $ssh_up ] && echo "SSHD in container $lxc is not running"
+     
 
     # rpm --rebuilddb
     chroot $rootfs_path rpm --rebuilddb
@@ -846,6 +865,7 @@ function main () {
        
         lxc_network_type=veth
         lxc_network_link=virbr0
+       veth_pair="veth$z"
         echo "the IP address of container $lxc is $IP "
     else
         [[ -z "$REPO_URL" ]] && usage
@@ -855,6 +875,7 @@ function main () {
         [[ -z "$HOSTNAME" ]] && usage
         lxc_network_type=veth
         lxc_network_link=br0
+        veth_pair="i$(echo $HOSTNAME | cut -d. -f1)"
     fi
 
     CIDR=$(cidr_notation $NETMASK)
@@ -865,20 +886,16 @@ function main () {
           exit 1
     fi
 
-
-    if [ ! -z "$(lxc-ls | grep $lxc)" ];then
-        echo "container $lxc exists"
-        exit 1
-    fi
-
-    
     path=/var/lib/lxc
     rootfs_path=$path/$lxc/rootfs
     config_path=$path/$lxc
     cache_base=/var/cache/lxc/fedora/$arch
     cache=$cache_base/$release
     root_password=root
-
+    
+    # check whether the rootfs directory is created to know if the container exists
+    # bacause /var/lib/lxc/$lxc is already created while putting $lxc.timestamp
+    [ -d $rootfs_path ] && { echo "container $lxc already exists - exiting" ; exit 1 ; }
 
     setup_lxc $lxc $fcdistro $pldistro $personality