#!/bin/bash
SENHA='In0v@t3ch'; BASE=/NFS01/migrate
sudo_(){ echo "$SENHA" | sudo -S "$@"; }
limpa(){ # limpa <DEST> <nbdN>
  local D=$1 N=$2 Q=$BASE/$1/$1-disk-0.qcow2
  echo "--- ntfsfix em $D (/dev/nbd$N) ---"
  sudo_ modprobe nbd max_part=16
  sudo_ qemu-nbd -d /dev/nbd$N >/dev/null 2>&1
  sudo_ qemu-nbd -c /dev/nbd$N "$Q" || return 2
  sleep 4; sudo_ partprobe /dev/nbd$N 2>/dev/null; sleep 2
  for P in /dev/nbd${N}p*; do
    T=$(sudo_ blkid -o value -s TYPE "$P" 2>/dev/null)
    echo "   $P tipo=$T"
    [ "$T" = "ntfs" ] && sudo_ ntfsfix -d "$P"
  done
  sudo_ qemu-nbd -d /dev/nbd$N
  sleep 2
}
run(){ # run <DEST> <nbdN> <fixboot>
  local D=$1 N=$2 FIX=$3 L=$BASE/logs/$1-v2v2.log
  {
  echo "=== $(date '+%F %H:%M:%S') RETRY $D ==="
  limpa "$D" "$N" || { echo "ABORT-NTFSFIX $D"; exit 2; }
  local V2V=$BASE/v2v-$D; rm -rf "$V2V"; mkdir -p "$V2V"; sudo_ chmod 777 "$V2V"
  sudo_ env VIRTIO_WIN=/tmp/virtio-win.iso LIBGUESTFS_CACHEDIR=$BASE/tmpv2v TMPDIR=$BASE/tmpv2v \
    virt-v2v -v -x -i disk "$BASE/$D/$D-disk-0.qcow2" -o local -of qcow2 -os "$V2V" -on "$D-boot"
  RC=$?; echo "=== virt-v2v rc=$RC ==="
  [ "$RC" != "0" ] && { echo "ABORT-V2V $D"; exit 3; }
  ls -lh "$V2V"/
  if [ "$FIX" = "1" ]; then
    echo "=== fix-boot GPT->MBR em $D ==="
    sudo_ bash $BASE/fix-boot-windows.sh "$V2V/$D-boot-sda"; RCF=$?
    echo "=== fix-boot rc=$RCF ==="
    [ "$RCF" != "0" ] && { echo "ABORT-FIXBOOT $D"; exit 4; }
  fi
  sudo_ mv "$V2V/$D-boot-sda" "$BASE/$D/$D-disk-0.qcow2"
  sudo_ chmod 644 "$BASE/$D/$D-disk-0.qcow2"
  qemu-img info "$BASE/$D/$D-disk-0.qcow2" | head -4
  echo "=== $(date '+%H:%M:%S') PRONTO $D ==="
  } >> "$L" 2>&1
}
rm -f $BASE/logs/leads-v2v-done.log
run IT089947-CORE-INSTANCE01-WCI 0 0 &
run IT089947-DATABASE-SQL-WCI    2 1 &
wait
echo "AMBOS-TERMINARAM" >> $BASE/logs/leads-v2v-done.log
