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

: "${AZURE_SUBSCRIPTION_ID:?}"
: "${VM_ID:?}"
timeout_seconds="${BOOTSTRAP_TIMEOUT:-1800}"
deadline=$((SECONDS + timeout_seconds))

while ((SECONDS < deadline)); do
  status="$(az vm get-instance-view --ids "$VM_ID" \
    --subscription "$AZURE_SUBSCRIPTION_ID" \
    --query "instanceView.statuses[?starts_with(code, 'PowerState/')].code | [0]" \
    --output tsv 2>/dev/null || true)"
  if [[ "$status" == "PowerState/running" ]]; then
    result="$(az vm run-command invoke --ids "$VM_ID" \
      --subscription "$AZURE_SUBSCRIPTION_ID" \
      --command-id RunShellScript \
      --scripts 'systemctl is-active --quiet date-integration.service && echo READY' \
      --query 'value[0].message' --output tsv 2>/dev/null || true)"
    if grep -q 'READY' <<<"$result"; then
      exit 0
    fi
  fi
  sleep 15
done

echo "Timed out waiting for Azure service bootstrap on $VM_ID" >&2
exit 1
