#!/bin/bash
# Fecha o corte do CHPL: template -> deploy -> discos -> NAT. Roda NO CLOUDADMIN01.
# Pre-requisito: bcdboot JA feito no volume CHPL-boot-raw.
set -eu
CS="$(dirname "$0")/cs"
ZONE=0a91b8da-efe9-4673-8ff0-db97ab212290
NET=4c48d3ee-53a5-4c05-8293-3d370e17872c
BOOT=249d89fc-7403-4473-a358-8790b38477e3     # CHPL-boot-raw
DISCO_F=c39e8251-3718-4b87-9806-3b0cc87c68cf  # F: DADOS
DISCO_B=bc9fc3cc-d0a2-4fcd-95fb-d896ec09e341  # B: DB
OFF=dd531aac-a594-48a0-828b-3c1fb180c66a      # wci.m1.2xlarge 16c/128G = igual a origem
OSTYPE=2c54d0b7-19a0-11f1-8872-52540098a0e8   # Windows Server 2019
RESERVA=36304421-6d7a-4b84-a5c6-1181e90be3d4  # IT590768-RESERVA-IP (segura o .5)

echo "=== 1) detach do boot do helper"
bash "$CS" detachVolume id=$BOOT >/dev/null; sleep 30

echo "=== 2) createTemplate"
T=$(bash "$CS" createTemplate name=IT590768-boot displaytext=IT590768-boot ostypeid=$OSTYPE volumeid=$BOOT \
     | python3 -c 'import sys,json;print(json.load(sys.stdin)["createtemplateresponse"]["id"])')
echo "   template=$T"
for i in $(seq 1 16); do
  R=$(bash "$CS" listTemplates templatefilter=self id=$T | python3 -c 'import sys,json;t=json.load(sys.stdin)["listtemplatesresponse"].get("template",[]);print(t[0]["isready"] if t else "x")')
  echo "   [$i] ready=$R"; [ "$R" = "True" ] && break; sleep 45
done

echo "=== 3) liberando o 192.168.127.5"
bash "$CS" destroyVirtualMachine id=$RESERVA expunge=true >/dev/null; sleep 50

echo "=== 4) deploy"
VM=$(bash "$CS" deployVirtualMachine zoneid=$ZONE templateid=$T serviceofferingid=$OFF networkids=$NET \
      name=IT590768-CORE-INSTANCE01-WCI displayname=IT590768-CORE-INSTANCE01-WCI ipaddress=192.168.127.5 \
      | python3 -c 'import sys,json;print(json.load(sys.stdin)["deployvirtualmachineresponse"]["id"])')
echo "   vm=$VM"
for i in $(seq 1 14); do
  S=$(bash "$CS" listVirtualMachines id=$VM | python3 -c 'import sys,json;v=json.load(sys.stdin)["listvirtualmachinesresponse"].get("virtualmachine",[]);print(v[0]["state"] if v else "?")')
  echo "   [$i] $S"; [ "$S" = "Running" ] && break; sleep 30
done

echo "=== 5) discos de dados (detach do helper ANTES - lição do KAMELL)"
for v in $DISCO_F $DISCO_B; do
  bash "$CS" detachVolume id=$v >/dev/null; sleep 30
  bash "$CS" attachVolume id=$v virtualmachineid=$VM >/dev/null; sleep 35
  echo "   movido $v"
done
bash "$CS" listVolumes virtualmachineid=$VM | python3 -c '
import sys,json
for v in sorted(json.load(sys.stdin)["listvolumesresponse"].get("volume",[]),key=lambda x:x.get("deviceid",0)):
    print("   dev%s %-20s %4dG %s" % (v.get("deviceid"), v["name"], round(v["size"]/2**30), v["type"]))'

echo "=== 6) port-forwards"
bash "$(dirname "$0")/nat-IT590768.sh" "$VM"
echo
echo "VM_CHPL=$VM"
echo "TEMPLATE=$T"
