#!/bin/bash

FILE="migrate.list"

clear
echo "Welcome to the DartNode VM Storage Migrator"
lvs

if [[ -e ".oldvg" ]]; then
  oldvg=$(cat ".oldvg")
else
  read -rp 'Old VG Name (Ex: VPS): ' oldvg
  echo "${oldvg}" >.oldvg
fi

if [[ -e ".newvg" ]]; then
  newvg=$(cat ".newvg")
else
  read -rp 'New VG Name (Ex: SSD1): ' newvg
  echo "${newvg}" >.newvg
fi

if [[ -e ".newpool" ]]; then
  newpool=$(cat ".newpool")
else
  read -rp 'New Pool Name (Ex: ssd_pool): ' newpool
  echo "${newpool}" >.newpool
fi

echo "Old VG: ${oldvg}"
echo "New VG: ${newvg}"
echo "Pool: ${newpool}"

if [ -f "$FILE" ]; then
  # Read each line from the file
  while IFS=, read -r vmid sizegb; do

    echo "+ Migrating VM #${vmid}: /dev/$oldvg/$vmid => /dev/$newvg/$vmid of size $sizegb GB"

    echo "Creating LV."
    lvcreate -V ${sizegb}g -n $vmid -T $newvg/$newpool

    echo "Copying Files."
    time dd if=/dev/$oldvg/${vmid} of=/dev/$newvg/${vmid} bs=4194304 conv=sparse

    echo "Complete VM ${vmid}"

  done <"$FILE"
else
  echo "Error: $FILE does not exist."
fi