#!/bin/bash
set -o pipefail
TS=$(date +%Y%m%d-%H%M%S)
WORK_DIR=/NFS01/migrate/migrate-sante-acessos-$TS
V2V_OUT=/NFS01/migrate/v2v-sante-acessos-$TS
LOG=/NFS01/migrate/logs/sante-acessos-$TS.log
mkdir -p "$WORK_DIR" "$V2V_OUT" /NFS01/migrate/logs

echo "=== $(date) START SANTE-WINT-ACESSOS pipeline ===" | tee -a "$LOG"
echo "WORK_DIR=$WORK_DIR"  | tee -a "$LOG"
echo "V2V_OUT=$V2V_OUT"    | tee -a "$LOG"
echo "LOG=$LOG"            | tee -a "$LOG"
echo                       | tee -a "$LOG"

echo "=== $(date) STAGE 1: ovftool extract vApp=migrate ===" | tee -a "$LOG"
cd ~/ovftool || exit 1
./ovftool --schemaValidate=false --noSSLVerify \
  "vcloud://tarx:A0S6VeOPbLNP%21RKBtpx%2191y2%25IZlF4@vcd-tio.unifique.cloud:443?org=447986_TARX_ORG&vdc=447986_TARX_VDC-DC-SC-TIO-01&vapp=migrate" \
  "$WORK_DIR/" 2>&1 | tee -a "$LOG"
OVFTOOL_RC=${PIPESTATUS[0]}
echo "=== $(date) ovftool exit=$OVFTOOL_RC ===" | tee -a "$LOG"

if [ "$OVFTOOL_RC" -ne 0 ]; then
  echo "ABORT: ovftool failed" | tee -a "$LOG"
  exit "$OVFTOOL_RC"
fi

echo "=== $(date) STAGE 2: virt-v2v inject virtio + convert qcow2 ===" | tee -a "$LOG"
ls -la "$WORK_DIR/" "$WORK_DIR/migrate/" 2>&1 | tee -a "$LOG"
OVF_FILE=$(find "$WORK_DIR" -maxdepth 3 -name "*.ovf" | head -1)
echo "OVF_FILE=$OVF_FILE" | tee -a "$LOG"
if [ -z "$OVF_FILE" ]; then
  echo "ABORT: no .ovf file found under $WORK_DIR" | tee -a "$LOG"
  exit 2
fi

VIRTIO_WIN=/tmp/virtio-win.iso virt-v2v -v -x \
  -i ovf "$OVF_FILE" \
  -o local -of qcow2 -os "$V2V_OUT" \
  --root single \
  -on SANTE-WINT-ACESSOS 2>&1 | tee -a "$LOG"
V2V_RC=${PIPESTATUS[0]}
echo "=== $(date) virt-v2v exit=$V2V_RC ===" | tee -a "$LOG"

if [ "$V2V_RC" -ne 0 ]; then
  echo "ABORT: virt-v2v failed" | tee -a "$LOG"
  exit "$V2V_RC"
fi

echo "=== $(date) DONE — qcow2 in $V2V_OUT ===" | tee -a "$LOG"
ls -lh "$V2V_OUT" | tee -a "$LOG"
