From 2d513adb184920e9dc8df9d50a5d2dedd0bdfac3 Mon Sep 17 00:00:00 2001 From: Adam Rozman Date: Tue, 3 Dec 2024 15:34:03 +0200 Subject: [PATCH] make IPA download target fully customizable 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 --- get-resource.sh | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/get-resource.sh b/get-resource.sh index f58319de..6953b43c 100755 --- a/get-resource.sh +++ b/get-resource.sh @@ -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 @@ -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