]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Getting image info in scripts/get-rhel-dvd-iso-image
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 30 May 2024 08:52:35 +0000 (10:52 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 30 May 2024 08:52:35 +0000 (10:52 +0200)
scripts/get-rhel-dvd-iso-image

index e25843ca7405baa581c3c07ca53c12187f5b1499..fa9ca4ecdffa407b04ba3a265913dcb092eedb81 100755 (executable)
@@ -56,10 +56,15 @@ SSO_REDHAT_URL='https://sso.redhat.com/auth/realms/redhat-external/protocol/open
 
 IMAGE_DOWNLOAD_URL="https://api.access.redhat.com/management/v1/images/@CHECKSUM@/download"
 
+OUTPUT=
 IMAGE_KEY=
 OUTPUT_FILE=
 ACCESS_TOKEN=
 
+IMAGE_INFO=
+BASE_FILE_NAME=
+DOWNLOAD_URL=
+
 detect_color
 
 DESCRIPTION=$( cat <<-EOF
@@ -137,7 +142,7 @@ get_options() {
         case "${arg}" in
             -O|--output)
                 j=$(( $i + 1 ))
-                output="${REMAINING_OPTS[$j]}"
+                OUTPUT="${REMAINING_OPTS[$j]}"
                 i=$(( $i + 2 ))
                 ;;
             *)  echo -e "Internal error - option '${RED}${arg}${NORMAL}' was wrong!"
@@ -174,11 +179,11 @@ get_options() {
     fi
 
     local output_base="${IMAGE_KEY}.iso"
-    if [[ "${output}" ]] ; then
-        if [[ -d "${output}" ]] ; then
-            OUTPUT_FILE="${output}/${output_base}"
+    if [[ "${OUTPUT}" ]] ; then
+        if [[ -d "${OUTPUT}" ]] ; then
+            OUTPUT_FILE="${OUTPUT}/${output_base}"
         else
-            OUTPUT_FILE="${output}"
+            OUTPUT_FILE="${OUTPUT}"
         fi
     else
         OUTPUT_FILE="${output_base}"
@@ -210,6 +215,44 @@ get_access_token() {
 
 }
 
+#------------------------------------------------------------------------------
+get_image_info() {
+
+    local output_base="${IMAGE_KEY}.iso"
+    local image_download_url=$( echo "${IMAGE_DOWNLOAD_URL}" | sed -e "s/@CHECKSUM@/${IMAGE_CHECKSUM}/" )
+    debug "Image download URL: '${CYAN}${image_download_url}${NORMAL}'."
+
+    local cmd="curl --silent -H 'Authorization: Bearer ${ACCESS_TOKEN}' '${image_download_url}'"
+
+    if [[ "${SIMULATE}" == "y" ]] ; then
+        info "Executing: ${cmd}"
+        IMAGE="fake_image_info"
+        BASE_FILE_NAME="fake-${output_base}"
+        DOWNLOAD_URL="fake_download_url"
+    else
+        debug "Executing: ${cmd}"
+        IMAGE_INFO=$( eval ${cmd} )
+        BASE_FILE_NAME=$( echo "${IMAGE_INFO}" | jq -r .body.filename)
+        DOWNLOAD_URL=$( echo "${IMAGE_INFO}" | jq -r .body.href)
+    fi
+
+    if [[ "${OUTPUT}" ]] ; then
+        if [[ -d "${OUTPUT}" ]] ; then
+            OUTPUT_FILE="${OUTPUT}/${BASE_FILE_NAME}"
+        else
+            OUTPUT_FILE="${OUTPUT}"
+        fi
+    else
+        OUTPUT_FILE="${BASE_FILE_NAME}"
+    fi
+
+    debug "Got image info:\n${CYAN}$( echo "${IMAGE_INFO}" | jq . )${NORMAL}"
+    debug "Got base filename: '${CYAN}${BASE_FILE_NAME}${NORMAL}'."
+    debug "Got download URL: '${CYAN}${DOWNLOAD_URL}${NORMAL}'."
+
+    info "Got output file: '${GREEN}${OUTPUT_FILE}${NORMAL}'."
+}
+
 #------------------------------------------------------------------------------
 main() {
 
@@ -217,6 +260,7 @@ main() {
 
     set_locale "en_US.utf8"
     get_access_token
+    get_image_info
 
 }