xenapi: Exit immediately if zipball download fails
If install_os_domU.sh fails to download the Xapi plugins zipball
correctly it ignores the error and continues the installation.
This could damage the hypervisor's filesystem, as it may delete
files or overwrite them with garbage.
Change-Id: I9f6dc31b977592e2818e37b2d310c2a5dc477364
Fixes: bug #1195640
diff --git a/tools/xen/functions b/tools/xen/functions
index 4e37554..e5a7531 100644
--- a/tools/xen/functions
+++ b/tools/xen/functions
@@ -40,11 +40,11 @@
local LOCAL_ZIPBALL=$(mktemp)
local EXTRACTED_FILES=$(mktemp -d)
- (
+ {
wget -nv $ZIPBALL_URL -O $LOCAL_ZIPBALL --no-check-certificate
unzip -q -o $LOCAL_ZIPBALL -d $EXTRACTED_FILES
rm -f $LOCAL_ZIPBALL
- ) >&2
+ } >&2
echo "$EXTRACTED_FILES"
}
diff --git a/tools/xen/mocks b/tools/xen/mocks
index 6da6acb..94b0ca4 100644
--- a/tools/xen/mocks
+++ b/tools/xen/mocks
@@ -34,6 +34,9 @@
}
function wget {
+ if [[ $@ =~ "failurl" ]]; then
+ exit 1
+ fi
echo "wget $@" >> $LIST_OF_ACTIONS
}
diff --git a/tools/xen/test_functions.sh b/tools/xen/test_functions.sh
index 410df5f..5347238 100755
--- a/tools/xen/test_functions.sh
+++ b/tools/xen/test_functions.sh
@@ -173,6 +173,15 @@
[ "$RESULT" = "tempdir" ]
}
+function test_extract_remote_zipball_wget_fail {
+ set +e
+
+ local IGNORE
+ IGNORE=$(. mocks && extract_remote_zipball "failurl")
+
+ assert_previous_command_failed
+}
+
function test_find_nova_plugins {
local tmpdir=$(mktemp -d)