167 lines
4.9 KiB
Bash
Executable File
167 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "*** fake-image-create: start"
|
|
|
|
echo "arguments:"
|
|
echo "----"
|
|
echo $*
|
|
echo "----"
|
|
|
|
if [[ "${DIB_RELEASE}" != "21" ]]; then
|
|
echo "DIB_RELEASE not set correctly"
|
|
exit 1
|
|
fi
|
|
|
|
# test passing of real-life env-vars
|
|
if [[ "${TMPDIR}" != "/opt/dib_tmp" ]]; then
|
|
echo "TMPDIR not set"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${DIB_IMAGE_CACHE}" != "/opt/dib_cache" ]]; then
|
|
echo "DIB_IMAGE_CACHE not set"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${DIB_CLOUD_IMAGES}" != "http://download.fedoraproject.org/pub/fedora/linux/releases/test/21-Beta/Cloud/Images/x86_64/" ]]; then
|
|
echo "DIB_CLOUD_IMAGES not set"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${BASE_IMAGE_FILE}" != "Fedora-Cloud-Base-20141029-21_Beta.x86_64.qcow2" ]]; then
|
|
echo "BASE_IMAGE_FILE not set"
|
|
exit 1
|
|
fi
|
|
|
|
outfile=
|
|
outtypes=("qcow2")
|
|
|
|
TEMP=$(getopt -o xo:t: --long qemu-img-options:,no-tmpfs,checksum -- "$@")
|
|
if [ $? -ne 0 ]; then
|
|
echo "Invalid option"
|
|
exit 1
|
|
fi
|
|
eval set -- "$TEMP"
|
|
while true ; do
|
|
case "$1" in
|
|
--checksum)
|
|
echo " -> set --checksum"; shift 1;;
|
|
--no-tmpfs)
|
|
echo " -> set --no-tmpfs"; shift 1;;
|
|
--qemu-img-options)
|
|
echo " -> qemu-img-options: $2"; shift 2;;
|
|
-o) outfile=$2; shift 2;;
|
|
-t) IFS="," read -a outtypes <<< "$2"; shift 2;;
|
|
-x) echo " -> debugging enabled"; shift;;
|
|
--) shift ; break ;;
|
|
*) echo "Unknown option : $1"; exit 1;;
|
|
esac
|
|
done
|
|
|
|
ELEMENTS="$@"
|
|
|
|
if [ -z "$outfile" ]; then
|
|
echo "No output file specified."
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# WTF is this testing? That we merge abstract diskimages correctly
|
|
# into children and append/override variables correctly. The two
|
|
# images in the test config file
|
|
# (/nodepool/tests/fixtures/node_diskimage_parents.yaml) set
|
|
# PARENT_TEST_FLAG which we gate on here so we only run this for that
|
|
# test. The diskimage layout when hitting this path is roughly like
|
|
# this:
|
|
#
|
|
# %%%%% abstract-base %%%%%
|
|
# elements: fedora
|
|
# env: TMPDIR, DIB_IMAGE_... (and so on)
|
|
# PARENT_TEST_ENV_OVERRIDE=abstract-base
|
|
# | |
|
|
# |-------+ +-------|
|
|
# | |
|
|
# | |
|
|
# | %%%%% abstract-intermediate %%%%%
|
|
# | elements: intermediate
|
|
# | env: PARENT_TEST_ENV_INTERMEDIATE=abstract-intermediate
|
|
# | |
|
|
# | |
|
|
# %%%%% parent-image-1 %%%%% %%%%% parent-image-2 %%%%%%
|
|
# elements: vm elements: vm
|
|
# env: PARENT_TEST_FLAG=base env: PARENT_TEST_FLAG=intermediate
|
|
# PARENT_TEST_ENV_OVERRIDE=parent-image-2
|
|
#
|
|
# So for parent-image-1 we want to see elements "fedora vm" and for
|
|
# parent-image-2 we want to see "fedora intermediate vm"; and similar
|
|
# updates/overrides for the env-vars.
|
|
#
|
|
if [[ -n "${PARENT_TEST_FLAG}" ]]; then
|
|
|
|
if [[ "${PARENT_TEST_FLAG}" == "base" ]]; then
|
|
# Note we've already tested the base-defined env-vars like
|
|
# TMPDIR, DIB_*, etc. are merged because they're tested above.
|
|
if [[ "${ELEMENTS}" != "fedora vm" ]]; then
|
|
echo "Elements list did not merge correctly"
|
|
exit 1
|
|
else
|
|
echo " -> Base elements list correctly merged"
|
|
fi
|
|
|
|
elif [[ "${PARENT_TEST_FLAG}" == "intermediate" ]]; then
|
|
|
|
if [[ "${ELEMENTS}" != "fedora intermediate vm" ]]; then
|
|
echo "Elements list did not merge correctly"
|
|
exit 1
|
|
else
|
|
echo " -> Intermediate elements list correctly merged"
|
|
fi
|
|
|
|
if [[ "${PARENT_TEST_ENV_INTERMEDIATE}" != "abstract-intermediate" ]]; then
|
|
echo "Did not see intermediate env value in final job"
|
|
exit 1
|
|
else
|
|
echo " -> Intermediate env value correctly merged"
|
|
fi
|
|
|
|
if [[ "${PARENT_TEST_ENV_OVERRIDE}" != "parent-image-2" ]]; then
|
|
echo "Final job did not override PARENT_TEST_ENV_OVERRIDE correctly"
|
|
exit 1
|
|
else
|
|
echo " -> Env override correct"
|
|
fi
|
|
else
|
|
echo "Invalid PARENT_TEST_IMAGE?"
|
|
exit 1
|
|
fi
|
|
|
|
fi
|
|
|
|
# Tests can pause this script by creating this file before it runs.
|
|
# No dib files should be created yet at the pause point.
|
|
tmpdir=$(dirname $outfile)
|
|
pause_file="$tmpdir/fake-image-create.pause"
|
|
while [ -f "$pause_file" ]
|
|
do
|
|
sleep .1
|
|
done
|
|
|
|
for outtype in ${outtypes[@]} ; do
|
|
echo "fake-data" > $outfile.$outtype
|
|
echo "10da41d43d4bd6d67db763616c18b72f" > $outfile.$outtype.md5
|
|
echo "0033e9d444953d11689b5fa6a6dba32bf901582f62b0825bc35f593190b1f7dc" > $outfile.$outtype.sha256
|
|
done
|
|
|
|
# Emulate manifest creation
|
|
mkdir $outfile.d
|
|
|
|
if [[ "${SHOULD_FAIL}" == 'true' ]]; then
|
|
echo "Should fail is set, exiting with status 127"
|
|
exit 127
|
|
fi
|
|
|
|
echo "*** fake-image-create: done"
|
|
|
|
# Tests might need to know when this process is completed
|
|
touch $tmpdir/fake-image-create.done
|