#!/bin/bash
# corte-leads-1.sh — desliga as 2 VMs do LEADS e converte os LVs para qcow2
set -o pipefail
SENHA='In0v@t3ch'; NODE=192.168.100.12
BASE=/NFS01/migrate
LOG=$BASE/logs/LEADS-corte-$(date +%Y%m%d-%H%M%S).log
mkdir -p "$BASE/logs"
exec > >(tee -a "$LOG") 2>&1
no(){ ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o BatchMode=yes root@$NODE "$@"; }

echo "=== $(date '+%F %H:%M:%S') INICIO corte LEADS (vmid 179 CORE + 180 DATABASE-SQL) ==="
for V in 179 180; do echo "  estado inicial vmid $V: $(no "qm status $V")"; done

echo "--- shutdown gracioso (ACPI) das duas ---"
for V in 179 180; do no "qm shutdown $V --timeout 420" & done
wait
for i in $(seq 1 96); do
  A=$(no "qm status 179" | awk '{print $2}'); B=$(no "qm status 180" | awk '{print $2}')
  echo "  [$i] 179=$A 180=$B"
  [ "$A" = "stopped" ] && [ "$B" = "stopped" ] && break
  sleep 5
done
A=$(no "qm status 179" | awk '{print $2}'); B=$(no "qm status 180" | awk '{print $2}')
if [ "$A" != "stopped" ] || [ "$B" != "stopped" ]; then
  echo "  shutdown gracioso nao completou (179=$A 180=$B) -- forcando stop"
  [ "$A" != "stopped" ] && no "qm stop 179"
  [ "$B" != "stopped" ] && no "qm stop 180"
  sleep 20
fi
echo "=== $(date '+%H:%M:%S') VMs PARADAS: 179=$(no "qm status 179"|awk '{print $2}') 180=$(no "qm status 180"|awk '{print $2}') ==="

conv(){  # conv <vmid> <dest>
  local V=$1 D=$2 LV=/dev/VG_Storage0/vm-$1-disk-0
  local SERVE=$BASE/$D
  mkdir -p "$SERVE"; chmod 777 "$SERVE" 2>/dev/null || echo "$SENHA" | sudo -S chmod 777 "$SERVE"
  no "lvchange -ay $LV 2>/dev/null; ls -l $LV" || { echo "ABORT: LV $LV nao ativou"; return 3; }
  echo "--- [$V] $LV -> $SERVE/$D-disk-0.qcow2 ---"
  no "qemu-img convert -p -O qcow2 $LV /mnt/pve/NFS01/migrate/$D/$D-disk-0.qcow2" || { echo "ABORT conversao $V"; return 3; }
  ls -lh "$SERVE/"; qemu-img info "$SERVE/$D-disk-0.qcow2" | head -6
}

conv 179 IT089947-CORE-INSTANCE01-WCI & P1=$!
conv 180 IT089947-DATABASE-SQL-WCI     & P2=$!
wait $P1; R1=$?
wait $P2; R2=$?
echo "=== $(date '+%H:%M:%S') CONVERSAO rc: 179=$R1 180=$R2 ==="
df -h /NFS01 | tail -1
echo "=== FIM etapa 1 ==="
