#!/bin/bash
# Fecha o corte do Global Aco. Roda NO CLOUDADMIN01, destacado.
set -eu
CS=/mnt/nfs01/migrate/corte-3clientes/cs
ZONE=0a91b8da-efe9-4673-8ff0-db97ab212290
NET=ab8297dd-738d-439d-a2ea-84c64c6c4ec7
IPID=92d0d410-5c7c-460f-8768-d727483249c3
BOOT=7e29bb35-e469-4443-aa2e-129f6b9edf69
DISCO_B=cfda4bad-0056-4fbd-9de5-6e7247b812eb
DISCO_F=2aa26bcd-efc4-417a-833d-4d5fe2b96178
RESERVA=7ff2be19-6a67-4381-aad2-39368d6700f4
OFF=8468fb15-5aea-4abf-8e47-01994ae29c04      # wci.g1.medium 4c/16G (origem 2c/16G)
OSTYPE=2bb22aee-19a0-11f1-8872-52540098a0e8   # Windows Server 2016

echo "=== 1) createTemplate"
T=$(bash $CS createTemplate name=IT421010-boot displaytext=IT421010-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 "=== 2) liberando o 192.168.122.5"
bash $CS destroyVirtualMachine id=$RESERVA expunge=true >/dev/null; sleep 50

echo "=== 3) deploy"
VM=$(bash $CS deployVirtualMachine zoneid=$ZONE templateid=$T serviceofferingid=$OFF networkids=$NET \
      name=IT421010-CORE-INSTANCE01-WCI displayname=IT421010-CORE-INSTANCE01-WCI ipaddress=192.168.122.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 "=== 4) discos de dados (detach do helper ANTES)"
for v in $DISCO_B $DISCO_F; 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 %-22s %4dG %s" % (v.get("deviceid"), v["name"], round(v["size"]/2**30), v["type"]))'

echo "=== 5) reboot (a licao do CHPL: disco a quente derruba o SQL com 823)"
bash $CS rebootVirtualMachine id=$VM >/dev/null; sleep 200

echo "=== 6) port-forward udp/1195"
bash $CS createPortForwardingRule ipaddressid=$IPID virtualmachineid=$VM protocol=udp \
     publicport=1195 publicendport=1195 privateport=1195 privateendport=1195 | head -c 140
echo
echo "VM_GLOBALACO=$VM"
echo "TEMPLATE=$T"
echo "=== FIM FECHAMENTO"
