91 lines
3.6 KiB
Shell
91 lines
3.6 KiB
Shell
target_endpoint() {
|
|
case "$1" in
|
|
garage) printf 'http://garage:3900\n' ;;
|
|
versitygw) printf 'http://versitygw:10000\n' ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
target_loopback_endpoint() {
|
|
case "$1" in
|
|
garage) printf 'http://127.0.0.1:3900\n' ;;
|
|
versitygw) printf 'http://127.0.0.1:10000\n' ;;
|
|
*) return 1 ;;
|
|
esac
|
|
}
|
|
|
|
ensure_target_scope_canary() {
|
|
local provider="$1"
|
|
local endpoint
|
|
endpoint="$(target_loopback_endpoint "$provider")" || return
|
|
if ! kube --namespace "$FIXTURE_NAMESPACE" exec "deployment/$provider" --container s3-readiness -- \
|
|
aws --endpoint-url "$endpoint" s3api create-bucket --bucket nuthatch-fixture >&2; then
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec "deployment/$provider" --container s3-readiness -- \
|
|
aws --endpoint-url "$endpoint" s3api head-bucket --bucket nuthatch-fixture >/dev/null || return
|
|
fi
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec "deployment/$provider" --container s3-readiness -- \
|
|
sh -ec 'printf scope-canary >/tmp/scope-canary && aws --endpoint-url "$1" s3api put-object --bucket nuthatch-fixture --key scope-canary --body /tmp/scope-canary >/dev/null' \
|
|
sh "$endpoint"
|
|
}
|
|
|
|
provision_lane_target_principal() {
|
|
local provider="$1"
|
|
local lane="$2"
|
|
local bucket="$3"
|
|
local access_key_var="$4"
|
|
local secret_key_var="$5"
|
|
local endpoint
|
|
local access_key
|
|
local secret_key
|
|
endpoint="$(target_loopback_endpoint "$provider")" || return
|
|
case "$provider" in
|
|
garage)
|
|
printf -v access_key 'GKNUTHATCH%024d' "$((10#$lane))"
|
|
printf -v secret_key '%064d' "$((10#$lane))"
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/garage --container garage -- \
|
|
/garage bucket create "$bucket" >/dev/null || return
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/garage --container garage -- \
|
|
/garage bucket allow \
|
|
--read \
|
|
--write \
|
|
--owner \
|
|
"$bucket" \
|
|
--key GK00000000000000000000000000000000 >/dev/null || return
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/garage --container garage -- \
|
|
/garage key import --yes -n "nuthatch-$lane" "$access_key" "$secret_key" >/dev/null || return
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/garage --container garage -- \
|
|
/garage bucket allow --read --write "$bucket" --key "$access_key" >/dev/null || return
|
|
;;
|
|
versitygw)
|
|
access_key="nuthatch-lane-$lane"
|
|
printf -v secret_key 'synthetic-lane-%049d' "$((10#$lane))"
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/versitygw --container versitygw -- \
|
|
/usr/local/bin/versitygw admin \
|
|
--endpoint-url http://127.0.0.1:10001 \
|
|
create-user \
|
|
--access "$access_key" \
|
|
--secret "$secret_key" \
|
|
--role user \
|
|
--user-id "$((10#$lane))" \
|
|
--group-id "$((10#$lane))" >/dev/null || return
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec deployment/versitygw --container versitygw -- \
|
|
/usr/local/bin/versitygw admin \
|
|
--endpoint-url http://127.0.0.1:10001 \
|
|
create-bucket \
|
|
--bucket "$bucket" \
|
|
--owner "$access_key" >/dev/null || return
|
|
;;
|
|
*) return 1 ;;
|
|
esac
|
|
printf -v "$access_key_var" '%s' "$access_key"
|
|
printf -v "$secret_key_var" '%s' "$secret_key"
|
|
}
|
|
|
|
cleanup_lane_target_store() {
|
|
local provider="$1"
|
|
local bucket="$2"
|
|
local endpoint
|
|
endpoint="$(target_loopback_endpoint "$provider")" || return
|
|
kube --namespace "$FIXTURE_NAMESPACE" exec "deployment/$provider" --container s3-readiness -- \
|
|
aws --endpoint-url "$endpoint" s3 rb "s3://$bucket" --force >/dev/null
|
|
}
|