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
... | ... |
@@ -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 |