#!/bin/bash
# Idempotent: just POST uploadVolume + poll. Files must already be in /NFS01/migrate/<vm>/
set -o pipefail
VM_NAME="${1:-SANTE-WINT-ACESSOS}"
SERVE_DIR=/NFS01/migrate/$VM_NAME
LOG=/NFS01/migrate/logs/upload-only-$VM_NAME-$(date +%Y%m%d-%H%M%S).log
source /etc/wevy/sante-creds.env

echo "=== $(date) Upload POST + poll for $VM_NAME ===" | tee -a "$LOG"
ls -lh "$SERVE_DIR/" | tee -a "$LOG"

for D in disk-0 disk-1; do
  VOL_NAME="$VM_NAME-$D"
  URL="$TRANSFER_BASE/$VM_NAME/$VOL_NAME.qcow2"
  echo "POST $VOL_NAME from $URL" | tee -a "$LOG"
  curl -s -X POST "$WEVY_API_URL/restapi/volume/uploadVolume" \
    -H "apikey: $WEVY_API_KEY" \
    -H "secretkey: $WEVY_SECRET_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"name\":\"$VOL_NAME\",\"format\":\"QCOW2\",\"url\":\"$URL\",\"zoneUuid\":\"$WEVY_ZONE_UUID\"}" \
    | tee -a "$LOG"
  echo | tee -a "$LOG"
done

echo "=== $(date) Polling until Ready ===" | tee -a "$LOG"
for i in $(seq 1 240); do
  RESP=$(curl -s "$WEVY_API_URL/restapi/volume/volumeList?zoneUuid=$WEVY_ZONE_UUID" \
    -H "apikey: $WEVY_API_KEY" -H "secretkey: $WEVY_SECRET_KEY")
  SB=$(echo "$RESP" | python3 -c "import sys,json; r=json.load(sys.stdin); print(next((v.get(\"status\",\"?\") for v in r.get(\"listVolumeResponse\",[]) if v.get(\"name\")==\"$VM_NAME-disk-0\"), \"NOT_FOUND\"))")
  SD=$(echo "$RESP" | python3 -c "import sys,json; r=json.load(sys.stdin); print(next((v.get(\"status\",\"?\") for v in r.get(\"listVolumeResponse\",[]) if v.get(\"name\")==\"$VM_NAME-disk-1\"), \"NOT_FOUND\"))")
  echo "$(date) try=$i boot=$SB data=$SD" | tee -a "$LOG"
  if [ "$SB" = "Ready" ] && [ "$SD" = "Ready" ]; then
    echo "=== $(date) BOTH READY ===" | tee -a "$LOG"; break
  fi
  sleep 30
done

# Final state
echo "=== final ===" | tee -a "$LOG"
curl -s "$WEVY_API_URL/restapi/volume/volumeList?zoneUuid=$WEVY_ZONE_UUID" \
  -H "apikey: $WEVY_API_KEY" -H "secretkey: $WEVY_SECRET_KEY" \
  | python3 -c "import sys,json; r=json.load(sys.stdin); [print(v.get(\"name\"),v.get(\"status\"),v.get(\"uuid\")) for v in r.get(\"listVolumeResponse\",[]) if \"$VM_NAME\" in v.get(\"name\",\"\")]" | tee -a "$LOG"
