X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=59ba47ee9f09f45db84e094dcaeb48e008f0353a;hb=57a816ab6f8b0ed57c577b2f7374fdc9f552a7ae;hp=14cb32506e95fbf49e973118da737b2218d41573;hpb=672ad567d30d1d9232d7b3bd5050c6c8168e0475;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index 14cb3250..59ba47ee 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -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,7 +905,7 @@ 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) + [ -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