#!/usr/bin/env bash
set -euo pipefail

if [ "$#" -ne 4 ]; then
  echo "usage: $0 <host-kubeconfig> <host-context> <admin-kubeconfig> <host-manifest>" >&2
  exit 2
fi

host_kubectl=(kubectl --kubeconfig "$1" --context "$2")
dedicated_kubectl=(kubectl --kubeconfig "$3" --context cp9-dedicated)
host_manifest=$4

"${host_kubectl[@]}" apply --server-side --force-conflicts -f "$host_manifest"
"${host_kubectl[@]}" -n cp9-system rollout status statefulset/dedicated-etcd --timeout=180s
"${host_kubectl[@]}" -n cp9-system rollout status deployment/dedicated-kube-apiserver --timeout=180s

for _ in $(seq 1 120); do
  if "${dedicated_kubectl[@]}" get --raw=/readyz >/dev/null 2>&1; then
    exit 0
  fi
  sleep 2
done
echo "Dedicated API did not pass authenticated /readyz within 240s" >&2
exit 1
