#!/bin/bash
#
# description: extension SSD migration script
#
# This script is written as a bash script that will be called from CLI command 
# to migrate extensions from flash drive to SSD.
# It will move all extensions to /mnt/drive/.extensions directory 
# and bind mount to /mnt/flash/.extensions

FLASH_DRIVE=/mnt/flash
flashExtDir=${FLASH_DRIVE}/.extensions
SSD_MIGRATION=${flashExtDir}/EXTENSION_DIR_MIGRATED_TO_SSD
SSD_DRIVE=/mnt/drive
ssdExtDir=${SSD_DRIVE}/.extensions

# check filesystem /mnt/flash is actually mount to disk
flashMountOn=$(df ${FLASH_DRIVE} | tail -n +2 | awk '{print $6}')
[ ${flashMountOn} == ${FLASH_DRIVE} ] || { echo "Flash is not mounted"; exit 1; }

# check filesystem /mnt/drive is actually mount to disk
ssdMountOn=$(df ${SSD_DRIVE} | tail -n +2 | awk '{print $6}')
[ ${ssdMountOn} == ${SSD_DRIVE} ] || { echo "SSD is not mounted"; exit 1; }

if [ ! -f ${SSD_MIGRATION} ]; then
   if cp -ar ${flashExtDir} ${SSD_DRIVE} >/dev/null 2>&1; then
      find ${ssdExtDir} -type f -exec /usr/bin/SyncFile {} +
      touch ${SSD_MIGRATION}
   else
      rm -rf ${ssdExtDir}
      echo "Fail to copy all extensions from flash drive to SSD"
      exit 1
   fi
fi

if [ -f ${SSD_MIGRATION} ]; then
   find ${flashExtDir} ! -wholename ${SSD_MIGRATION} -type f -exec rm -f {} +
   mount --bind ${ssdExtDir} ${flashExtDir}
fi
