#!/bin/bash OS_CODENAME=focal OS_VERSION=20.04 function get_streams() { if [ -e "$streams" ]; then return 0 fi streams="$(mktemp)" wget -qO "$streams" https://images.maas.io/ephemeral-v3/stable/streams/v1/com.ubuntu.maas:stable:v3:download.json } function get_latest_maas_id() { if [ ! -f "$streams" ]; then return 1 fi release_version=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'")|.versions|keys|max' \ "$streams") } function get_checksum() { local release_version="$1" local filename="$2" if [ ! -f "$streams" ]; then return 1 fi checksum=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'").versions."'"$release_version"'".items."'"$filename"'".sha256' \ "$streams") } function file_url() { local release_version="$1" local filename="$2" local baseurl="https://images.maas.io/ephemeral-v3/stable" if [ ! -f "$streams" ]; then return 1 fi url=$(jq -r '.products[]|select(.version=="'"$OS_VERSION"'" and .arch=="amd64" and .kflavor=="generic" and .subarch=="ga-'"$OS_VERSION"'").versions."'"$release_version"'".items."'"$filename"'".path' \ "$streams") if [ -n "$MAAS_DOWNLOAD_URL" ]; then baseurl="$MAAS_DOWNLOAD_URL" fi url="$baseurl/$url" } function verify_only() { local release_version="$1" local fname="$2" get_checksum "$release_version" "$fname" sha256sum=$(sha256sum "$fname"|cut -d\ -f1) if [ "$sha256sum" == "$checksum" ]; then return 0 fi return 1 } function download_and_verify() { local release_version="$1" local fname="$2" file_url "$release_version" "$fname" if [ -f "$fname" ]; then if verify_only "$release_version" "$fname"; then echo "$fname already downloaded, skipping" return 0 fi echo "Deleting $fname" rm -f "$fname" fi wget "$url" -O "$fname" if verify_only "$release_version" "$fname"; then return 0 fi echo "Checksum fail" rm -f "$fname" return 1 } function cleanup_temp() { if [ -f "$streams" ]; then rm -f "$streams" fi } # vim: set ft=sh: