X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=59ba47ee9f09f45db84e094dcaeb48e008f0353a;hb=57a816ab6f8b0ed57c577b2f7374fdc9f552a7ae;hp=e357a09bffec113d0d1ed11834481211b4553e30;hpb=b9d5bfa94fbd61ddd0fc43004eb2f832f95295b8;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index e357a09b..59ba47ee 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -30,7 +30,7 @@ function lxcroot () { # XXX fixme : when creating a 32bits VM we need to call linux32 as appropriate...s -DEFAULT_FCDISTRO=f33 +DEFAULT_FCDISTRO=f39 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 DEFAULT_MEMORY=3072 @@ -526,8 +526,8 @@ autoconnect-priority=-999 [ipv4] address1=${GUEST_IP}/${MASKLEN},${GATEWAY} -dhcp-hostname=${GUEST_HOSTNAME} -method=auto +#dhcp-hostname=${GUEST_HOSTNAME} +method=manual EOF } @@ -731,9 +731,9 @@ function devel_or_test_tools () { local pkgsfile=$(pl_locateDistroFile $DIRNAME $pldistro $PREINSTALLED) ### install individual packages, then groups - # get target arch - use uname -i here (we want either x86_64 or i386) + # get target arch - (we want either x86_64 or i386) - local lxc_arch=$(chroot ${lxc_root} $personality uname -i) + local lxc_arch=$(chroot ${lxc_root} $personality arch) # on debian systems we get arch through the 'arch' command [ "$lxc_arch" = "unknown" ] && lxc_arch=$(chroot ${lxc_root} $personality arch) @@ -873,12 +873,19 @@ EOF # however this was too fragile, would not work for fedora14 containers # WARNING: this code is duplicated in lbuild-nightly.sh function guest_ipv4() { - local lxc=$1; shift - - local mac=$(virsh -c lxc:/// domiflist $lxc | egrep 'network|bridge' | awk '{print $5;}') - # sanity check - [ -z "$mac" ] && return 0 - arp -en | grep "$mac" | awk '{print $1;}' + lxc=$1; shift + + mac=$(virsh -c lxc:/// domiflist $lxc | grep -E 'network|bridge' | awk '{print $5;}') + [ -z "$mac" ] && { echo 1>&2 guest_ipv4 cannot find mac; return 1; } + ip=$(arp -en | grep "$mac" | awk '{print $1;}') + # if not known: run a ping and try again + if [ -z $ip ]; then + ping -c1 -w1 -W1 $lxc >& /dev/null + ping -c1 -w1 -W1 $lxc.pl.sophia.inria.fr >& /dev/null + ip=$(arp -en | grep "$mac" | awk '{print $1;}') + fi + [ -z "$ip" ] && { echo 1>&2 guest_ipv4 cannot find ip; return 1; } + echo $ip } function wait_for_ssh () { @@ -898,8 +905,8 @@ function wait_for_ssh () { local counter=1 while [ "$current_time" -lt "$stop_time" ] ; do echo "$counter-th attempt to reach sshd in container $lxc ..." - [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4 $lxc) - [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip 'uname -i' && { + [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4 $lxc) || : + [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip arch && { success=true; echo "SSHD in container $lxc is UP on IP $guest_ip"; break ; } || : # some of our boxes have gone through a long upgrade historically, and # so they don't end up with the same gid mapping for the ssh_keys