Skip to content

Commit

Permalink
make IPA download target fully customizable
Browse files Browse the repository at this point in the history
This commit:
- Makes the IPA archive's file name fully customizable
- Makes the IPA archive's file extension fully customizable

The reason for these changes is to help users who download IPA images from
servers that don't follow the upstream naming conventions.

Signed-off-by: Adam Rozman <adam.rozman@est.tech>
  • Loading branch information
Rozzii committed Dec 23, 2024
1 parent 9261591 commit 2d513ad
Showing 1 changed file with 18 additions and 19 deletions.
37 changes: 18 additions & 19 deletions get-resource.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,8 @@ IPA_BASEURI="${IPA_BASEURI:-https://tarballs.opendev.org/openstack/ironic-python
IPA_BRANCH="$(echo "${IPA_BRANCH:-master}" | tr / -)"
IPA_FLAVOR="${IPA_FLAVOR:-centos9}"

FILENAME="ipa-${IPA_FLAVOR}-${IPA_BRANCH}"
FILENAME_EXT=".tar.gz"
FFILENAME="${FILENAME}${FILENAME_EXT}"
FILENAME="${FILENAME:-ipa-${IPA_FLAVOR}-${IPA_BRANCH}.tar.gz}"
FILENAME_NO_EXT="${FILENAME%%.*}"
DESTNAME="ironic-python-agent"

mkdir -p "${SHARED_DIR}"/html/images "${SHARED_DIR}"/tmp
Expand All @@ -39,41 +38,41 @@ TMPDIR="$(mktemp -d -p "${SHARED_DIR}"/tmp)"
# If we have a CACHEURL and nothing has yet been downloaded
# get header info from the cache

if [ -n "${CACHEURL:-}" ] && [ ! -e "${FFILENAME}.headers" ]; then
curl_with_flags -g --fail -O "${CACHEURL}/${FFILENAME}.headers" || true
if [ -n "${CACHEURL:-}" ] && [ ! -e "${FILENAME}.headers" ]; then
curl_with_flags -g --fail -O "${CACHEURL}/${FILENAME}.headers" || true
fi

# Download the most recent version of IPA
if [ -r "${DESTNAME}.headers" ] ; then
ETAG="$(awk '/ETag:/ {print $2}' "${DESTNAME}.headers" | tr -d "\r")"
cd "${TMPDIR}"
curl_with_flags -g --dump-header "${FFILENAME}.headers" \
-O "${IPA_BASEURI}/${FFILENAME}" \
--header "If-None-Match: ${ETAG}" || cp "${SHARED_DIR}/html/images/${FFILENAME}.headers" .
curl_with_flags -g --dump-header "${FILENAME}.headers" \
-O "${IPA_BASEURI}/${FILENAME}" \
--header "If-None-Match: ${ETAG}" || cp "${SHARED_DIR}/html/images/${FILENAME}.headers" .

# curl didn't download anything because we have the ETag already
# but we don't have it in the images directory
# Its in the cache, go get it
ETAG="$(awk '/ETag:/ {print $2}' "${FFILENAME}.headers" | tr -d "\"\r")"
if [ ! -s "${FFILENAME}" ] && [ ! -e "${SHARED_DIR}/html/images/${FILENAME}-${ETAG}/${FFILENAME}" ]; then
mv "${SHARED_DIR}/html/images/${FFILENAME}.headers" .
curl_with_flags -g -O "${CACHEURL}/${FILENAME}-${ETAG}/${FFILENAME}"
ETAG="$(awk '/ETag:/ {print $2}' "${FILENAME}.headers" | tr -d "\"\r")"
if [ ! -s "${FILENAME}" ] && [ ! -e "${SHARED_DIR}/html/images/${FILENAME_NO_EXT}-${ETAG}/${FILENAME}" ]; then
mv "${SHARED_DIR}/html/images/${FILENAME}.headers" .
curl_with_flags -g -O "${CACHEURL}/${FILENAME_NO_EXT}-${ETAG}/${FILENAME}"
fi
else
cd "${TMPDIR}"
curl_with_flags -g --dump-header "${FFILENAME}.headers" -O "${IPA_BASEURI}/${FFILENAME}"
curl_with_flags -g --dump-header "${FILENAME}.headers" -O "${IPA_BASEURI}/${FILENAME}"
fi

if [ -s "${FFILENAME}" ]; then
tar -xaf "${FFILENAME}"
if [ -s "${FILENAME}" ]; then
tar -xaf "${FILENAME}"

ETAG="$(awk '/ETag:/ {print $2}' "${FFILENAME}.headers" | tr -d "\"\r")"
ETAG="$(awk '/ETag:/ {print $2}' "${FILENAME}.headers" | tr -d "\"\r")"
cd -
chmod 755 "${TMPDIR}"
mv "${TMPDIR}" "${FILENAME}-${ETAG}"
ln -sf "${FILENAME}-${ETAG}/${FFILENAME}.headers" "${DESTNAME}.headers"
ln -sf "${FILENAME}-${ETAG}/${FILENAME}.initramfs" "${DESTNAME}.initramfs"
ln -sf "${FILENAME}-${ETAG}/${FILENAME}.kernel" "${DESTNAME}.kernel"
ln -sf "${FILENAME}-${ETAG}/${FILENAME}.headers" "${DESTNAME}.headers"
ln -sf "${FILENAME}-${ETAG}/${FILENAME_NO_EXT}.initramfs" "${DESTNAME}.initramfs"
ln -sf "${FILENAME}-${ETAG}/${FILENAME_NO_EXT}.kernel" "${DESTNAME}.kernel"
else
rm -rf "${TMPDIR}"
fi

0 comments on commit 2d513ad

Please sign in to comment.