diskimage-builder/elements/opensuse/root.d/10-opensuse-cloud-image
Ben Nemec 16be6d7ce0 set -u and -o pipefail everywhere
As with the previous similar changes, this is intended to catch
problems as they happen instead of ignoring them and continuing on
to potentially fail later.  Setting this on all existing scripts
will allow us to enforce use via Jenkins.

Change-Id: Iad2d490c86dceab148ea9ab08f457c49a5d5352e
2014-05-06 15:51:07 -05:00

60 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -eu
set -o pipefail
[ -n "$ARCH" ]
[ -n "$TARGET_ROOT" ]
if [ 'amd64' = "$ARCH" ] ; then
ARCH="x86_64"
fi
if [ 'i386' = "$ARCH" ] ; then
ARCH="i586"
fi
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://download.opensuse.org/repositories/Cloud:/Images/images/}
DIB_RELEASE=${DIB_RELEASE:-13.1}
# FIXME: Hard coded build numbers, versions, etc.
BASE_IMAGE_NAME=${BASE_IMAGE_NAME:-openSUSE-$DIB_RELEASE-OpenStack-Guest.$ARCH}
if [ -z "$DIB_OFFLINE" ] ; then
# XXX: Try to extract the filename of the current built from the index
# page. As there is one built available in the repo at a given time, this
# should work. This is a tempoary workaround until the fix for
# https://bugzilla.novell.com/show_bug.cgi?id=853882 is deployed
echo "Looking up current built of Base Image ($BASE_IMAGE_NAME):"
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$(curl $DIB_CLOUD_IMAGES | \
sed -n "s/^.*\<a\ href\=\"\($BASE_IMAGE_NAME.*\.tbz\)\".*$/\1/p")}
if [ -n "$BASE_IMAGE_FILE" ]; then
echo "Using base image: $DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE"
else
echo -e "Failed to extract image file name from $DIB_CLOUD_IMAGES" \
"\nPlease set BASE_IMAGE_FILE manually and retry."
exit 1
fi
else
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$BASE_IMAGE_NAME-0.0.1-Build6.1.tbz}
fi
# FIXME: either check the checksums into git or verify the signature
# on the checksums. We should not be trusting checksums we download
# over HTTP
SHA256SUMS=${SHA256SUMS:-$DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE.sha256}
CACHED_FILE=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
echo "Not checking freshness of cached $CACHED_FILE."
else
echo "Fetching Base Image"
$TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $DIB_IMAGE_CACHE/SHA256SUMS.openSUSE.$DIB_RELEASE.$ARCH
$TMP_HOOKS_PATH/bin/cache-url $DIB_CLOUD_IMAGES/$BASE_IMAGE_FILE $CACHED_FILE
pushd $DIB_IMAGE_CACHE
grep "$BASE_IMAGE_FILE" SHA256SUMS.openSUSE.$DIB_RELEASE.$ARCH | sha256sum --check -
popd
fi
# Extract the base image (use --numeric-owner to avoid possible UID/GID mismatch
# between image tarball and host OS)
sudo tar -C $TARGET_ROOT --numeric-owner -xjf $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE