mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-11 06:56:58 +02:00
76 lines
1.8 KiB
Bash
Executable File
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}"
|