devstack/tools/image_list.sh
Monty Taylor d8bb220606 Make list_images.sh emit the etcd3 tarball
We need this for every devstack run now, so downloading it from github
every time isn't the most awesome thing in the world.

Add an extra variable EXTRA_CACHE_URLS which will be appended to the
output of tools/image_list.sh.  This way, these files will be
downloaded during the daily nodepool build, but they will not be in
the IMAGE_LIST and hence be considered as images to upload.

Add a function get_extra_file which echos the path to a file given the
URL.  It will first check the cache at $FILES, and if not present
download it.

Update the documentation in image_list.sh to reflect what's happening.

Move the defaults for etcd variables into stackrc, since it is a base
service now.

Change-Id: I86104824a29d973a6288df1f24b7891feb86267c
2017-09-05 09:40:40 +10:00

60 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Print out a list of image and other files to download for caching.
# This is mostly used by the OpenStack infrasturucture during daily
# image builds to save the large images to /opt/cache/files (see [1])
#
# The two lists of URL's downloaded are the IMAGE_URLS and
# EXTRA_CACHE_URLS, which are setup in stackrc
#
# [1] project-config:nodepool/elements/cache-devstack/extra-data.d/55-cache-devstack-repos
# Keep track of the DevStack directory
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
# The following "source" implicitly calls get_default_host_ip() in
# stackrc and will die if the selected default IP happens to lie
# in the default ranges for FIXED_RANGE or FLOATING_RANGE. Since we
# do not really need HOST_IP to be properly set in the remainder of
# this script, just set it to some dummy value and make stackrc happy.
HOST_IP=SKIP
source $TOP_DIR/functions
# Possible virt drivers, if we have more, add them here. Always keep
# dummy in the end position to trigger the fall through case.
DRIVERS="openvz ironic libvirt vsphere xenserver dummy"
# Extra variables to trigger getting additional images.
export ENABLED_SERVICES="h-api,tr-api"
HEAT_FETCHED_TEST_IMAGE="Fedora-i386-20-20131211.1-sda"
PRECACHE_IMAGES=True
# Loop over all the virt drivers and collect all the possible images
ALL_IMAGES=""
for driver in $DRIVERS; do
VIRT_DRIVER=$driver
URLS=$(source $TOP_DIR/stackrc && echo $IMAGE_URLS)
if [[ ! -z "$ALL_IMAGES" ]]; then
ALL_IMAGES+=,
fi
ALL_IMAGES+=$URLS
done
# Sanity check - ensure we have a minimum number of images
num=$(echo $ALL_IMAGES | tr ',' '\n' | sort | uniq | wc -l)
if [[ "$num" -lt 4 ]]; then
echo "ERROR: We only found $num images in $ALL_IMAGES, which can't be right."
exit 1
fi
# This is extra non-image files that we want pre-cached. This is kept
# in a separate list because devstack loops over the IMAGE_LIST to
# upload files glance and these aren't images. (This was a bit of an
# after-thought which is why the naming around this is very
# image-centric)
URLS=$(source $TOP_DIR/stackrc && echo $EXTRA_CACHE_URLS)
ALL_IMAGES+=$URLS
# Make a nice combined list
echo $ALL_IMAGES | tr ',' '\n' | sort | uniq