flatcar-scripts/oem/oracle/upload-image
Benjamin Gilbert 68a163ac52 oem/oracle: Update for oraclebmc-cli 2.4.6
bmcs compute image create --image-source-details is deprecated.
2017-08-10 23:22:53 -07:00

76 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -e -o pipefail
. common.sh
compartment=$(get_tenancy_id)
display_name=
path=
namespace=$(get_namespace_id)
bucket="image-upload"
# Parse args
usage="Usage: $0 [args] -n name -f file
Options:
-c COMPARTMENT Compartment ID (default: ${compartment})
-n DISPLAY-NAME Image display name
-f PATH Image file
-N NAMESPACE Object storage namespace (default: ${namespace})
-B BUCKET Bucket name (default: ${bucket})
-h This ;-)
"
while getopts "c:n:f:N:B:h" OPTION
do
case "${OPTION}" in
c) compartment="${OPTARG}" ;;
n) display_name="${OPTARG}" ;;
f) path="${OPTARG}" ;;
N) namespace="${OPTARG}" ;;
B) bucket="${OPTARG}" ;;
h) echo "${usage}"; exit 2 ;;
*) exit 2 ;;
esac
done
if [[ -z "${display_name}" ]]; then
echo "Display name is required." >&2
exit 2
fi
if [[ -z "${path}" ]]; then
echo "Image file is required." >&2
exit 2
fi
object=$(mktemp -u XXXXXXXXXXXXXXXX)
# Upload object
bmcs os object put \
--namespace "${namespace}" \
--bucket-name "${bucket}" \
--file "${path}" \
--name "${object}"
trap 'bmcs os object delete \
--namespace "${namespace}" \
--bucket-name "${bucket}" \
--name "${object}" \
--force' EXIT
# Initiate import
image_id=$(bmcs compute image import from-object \
--compartment-id "${compartment}" \
--display-name "${display_name}" \
--namespace "${namespace}" \
--bucket-name "${bucket}" \
--name "${object}" | jq -r .data.id)
# Wait for import
echo "Waiting for import..."
state=IMPORTING
while [[ "$state" = IMPORTING ]]; do
sleep 10
state=$(bmcs compute image get --image-id "${image_id}" | jq -r '.data["lifecycle-state"]')
done
echo "${state} ${image_id}"