need to compute ifname as eth0 is no longer taken for granted
[build.git] / vbuild-init-lxc.sh
index 561be5e..96f3d8c 100755 (executable)
@@ -14,12 +14,37 @@ PATH=$(dirname $0):$PATH export PATH
 DEFAULT_FCDISTRO=f16
 DEFAULT_PLDISTRO=planetlab
 DEFAULT_PERSONALITY=linux64
-DEFAULT_IFNAME=eth0
 
 COMMAND_VBUILD="vbuild-init-lxc.sh"
 COMMAND_MYPLC="vtest-init-lxc.sh"
 
 libvirt_version="1.0.4"
+
+## stolen from tests/system/template-qemu/qemu-bridge-init
+#################### compute INTERFACE_LAN
+# use /proc/net/dev instead of a hard-wired list
+function gather_interfaces () {
+    python <<EOF
+for line in file("/proc/net/dev"):
+    if ':' not in line: continue
+    ifname=line.replace(" ","").split(":")[0]
+    if ifname.find("lo")==0: continue
+    if ifname.find("br")==0: continue
+    if ifname.find("virbr")==0: continue
+    if ifname.find("tap")==0: continue
+    print ifname
+EOF
+}
+    
+function discover_interface () {
+    for ifname in $(gather_interfaces); do
+       ip link show $ifname | grep -qi 'state UP' && { echo $ifname; return; }
+    done
+    # still not found ? that's bad
+    echo unknown
+}
+DEFAULT_IFNAME=$(discover_interface)
+
 function bridge_init () {
 
     # turn on verbosity
@@ -139,26 +164,10 @@ function check_yumgroup_installed () {
 
 function prepare_host() {
    
-    host_fcdistro="$(cat /etc/fedora-release | cut -d' ' -f3)"    
-    ## check if libvirt_version is installed
-    virsh -v | grep -e $libvirt_version || { echo "$libvirt_version needs to be installed!!!" ; exit 1 ; }
-#    host_fcdistro="$(cat /etc/fedora-release | cut -d' ' -f3)"
-#    if [ ! -f /etc/yum.repos.d/libvirt.repo ] ; then
-#       touch /etc/yum.repos.d/libvirt.repo
-#       cat <<EOF > /etc/yum.repos.d/libvirt.repo
-#[libvirt]
-#name=libvirt-1.0.2-1
-#baseurl=http://build.onelab.eu/lxc/2013.02.25--lxc$host_fcdistro/RPMS/
-#enabled=1
-#gpgcheck=0
-#EOF
-#
-#       yum --assumeno update
-#       check_yumgroup_installed "Development Tools"
-#       check_yum_installed libcap-devel
-#       check_yum_installed libvirt
-#       systemctl start libvirtd
-#    fi
+### Thierry - jan 14 - turning off this check as our boxes now meet this req.
+### and I'm trying out f20's stock libvirt instead    
+#    ## check if libvirt_version is installed
+#    virsh -v | grep -e $libvirt_version || { echo "$libvirt_version needs to be installed!!!" ; exit 1 ; }
 
     #################### bride initialization
     check_yum_installed bridge-utils
@@ -195,21 +204,24 @@ TYPE=Ethernet
 MTU=1500
 EOF
 
-# set the hostname
-if [[ "$fcdistro" == "f18" ]] ; then
-    cat <<EOF > ${rootfs_path}/etc/hostname
+    # set the hostname
+    case "$fcdistro" in 
+       f18|f2?)
+           cat <<EOF > ${rootfs_path}/etc/hostname
 $HOSTNAME
 EOF
-else
-    cat <<EOF > ${rootfs_path}/etc/sysconfig/network
+           echo ;;
+       *)
+            cat <<EOF > ${rootfs_path}/etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=$HOSTNAME
 EOF
-    # set minimal hosts
-    cat <<EOF > $rootfs_path/etc/hosts
+            # set minimal hosts
+           cat <<EOF > $rootfs_path/etc/hosts
 127.0.0.1 localhost $HOSTNAME
 EOF
-fi
+           echo ;;
+    esac
 
     dev_path="${rootfs_path}/dev"
     rm -rf $dev_path
@@ -254,10 +266,9 @@ function configure_fedora_systemd() {
     # so ignore if we can't find /etc/systemd at all 
     [ -d ${rootfs_path}/etc/systemd ] || return 0
     # otherwise let's proceed
-    unlink ${rootfs_path}/etc/systemd/system/default.target
-    ln -s /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
+    ln -sf /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
     touch ${rootfs_path}/etc/fstab
-    ln -s /dev/null ${rootfs_path}/etc/systemd/system/udev.service
+    ln -sf /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
@@ -265,7 +276,7 @@ function configure_fedora_systemd() {
 # 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"
+    ln -sf /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} /sbin/chkconfig network on