Browse code

Install XenServer tools from the iso on XenServer

Fixes bug 1032122 by ensuring, where possible, we use the tools
shipped with XenServer rather than downloading the tools from
images.ansolabs.com

Change-Id: I4592eca315b4700e73097d678309d00323923c8b

John Garbutt authored on 2012/08/02 20:34:03
Showing 2 changed files
... ...
@@ -18,6 +18,7 @@ set -o xtrace
18 18
 GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
19 19
 STAGING_DIR=${STAGING_DIR:-stage}
20 20
 DO_TGZ=${DO_TGZ:-1}
21
+XS_TOOLS_PATH=${XS_TOOLS_PATH:-"/root/xs-tools.deb"}
21 22
 
22 23
 # Install basics
23 24
 chroot $STAGING_DIR apt-get update
... ...
@@ -26,10 +27,8 @@ chroot $STAGING_DIR apt-get install -y curl wget ssh openssh-server python-pip g
26 26
 chroot $STAGING_DIR pip install xenapi
27 27
 
28 28
 # Install XenServer guest utilities
29
-XEGUEST=xe-guest-utilities_5.6.100-651_amd64.deb
30
-wget http://images.ansolabs.com/xen/$XEGUEST -O $XEGUEST
31
-cp $XEGUEST $STAGING_DIR/root
32
-chroot $STAGING_DIR dpkg -i /root/$XEGUEST
29
+cp $XS_TOOLS_PATH ${STAGING_DIR}${XS_TOOLS_PATH}
30
+chroot $STAGING_DIR dpkg -i $XS_TOOLS_PATH
33 31
 chroot $STAGING_DIR update-rc.d -f xe-linux-distribution remove
34 32
 chroot $STAGING_DIR update-rc.d xe-linux-distribution defaults
35 33
 
... ...
@@ -44,6 +44,28 @@ if [ ! -d $STAGING_DIR/etc ]; then
44 44
     exit 1
45 45
 fi
46 46
 
47
+# Copy XenServer tools deb into the VM
48
+ISO_DIR="/opt/xensource/packages/iso"
49
+XS_TOOLS_FILE_NAME="xs-tools.deb"
50
+XS_TOOLS_PATH="/root/$XS_TOOLS_FILE_NAME"
51
+if [ -e "$ISO_DIR" ]; then
52
+    TOOLS_ISO=$(ls $ISO_DIR/xs-tools-*.iso)
53
+    TMP_DIR=/tmp/temp.$RANDOM
54
+    mkdir -p $TMP_DIR
55
+    mount -o loop $TOOLS_ISO $TMP_DIR
56
+    DEB_FILE=$(ls $TMP_DIR/Linux/*amd64.deb)
57
+    echo "Copying XenServer tools into VM from: $DEB_FILE"
58
+    cp $DEB_FILE "${STAGING_DIR}${XS_TOOLS_PATH}"
59
+    umount $TMP_DIR
60
+    rm -rf $TMP_DIR
61
+else
62
+    echo "WARNING: no XenServer tools found, falling back to 5.6 tools"
63
+    TOOLS_URL="http://images.ansolabs.com/xen/xe-guest-utilities_5.6.100-651_amd64.deb"
64
+    wget $TOOLS_URL -O $XS_TOOLS_FILE_NAME
65
+    cp $XS_TOOLS_FILE_NAME "${STAGING_DIR}${XS_TOOLS_PATH}"
66
+    rm -rf $XS_TOOLS_FILE_NAME
67
+fi
68
+
47 69
 # Copy prepare_guest.sh to VM
48 70
 mkdir -p $STAGING_DIR/opt/stack/
49 71
 cp $TOP_DIR/prepare_guest.sh $STAGING_DIR/opt/stack/prepare_guest.sh
... ...
@@ -53,5 +75,7 @@ cp $STAGING_DIR/etc/rc.local $STAGING_DIR/etc/rc.local.preparebackup
53 53
 
54 54
 # run prepare_guest.sh on boot
55 55
 cat <<EOF >$STAGING_DIR/etc/rc.local
56
-GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ DO_TGZ=0 bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1
56
+GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ \
57
+    DO_TGZ=0 XS_TOOLS_PATH=$XS_TOOLS_PATH \
58
+    bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1
57 59
 EOF