Browse code

Merge "Install XenServer tools from the iso on XenServer"

Jenkins authored on 2012/08/17 02:15:08
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