#!/bin/bash

serial_number() {
  echo `dmidecode -s system-serial-number | awk '{print substr($1,6)}'`
}

SERIAL_NO=`serial_number`

# if this is not an Eleven don't do anything
if [[ ${SERIAL_NO} != 31* ]]; then
  echo "This is not an Eleven device. Exiting."
  exit 0
fi

PCASTER_URL=https://plasmacaster.kaijubox.com
EVENT_URL=${PCASTER_URL}/hosts/r${SERIAL_NO}/event
SSD_DEVICE=nvme0n1
ROOTFS_LABEL=rootfs
ROOTFS_FS_MIN_FS=17

post_info_msg() {
  curl -f -H 'Content-Type: application/json' --data "{\"level\": \"info\", \"name\": \"recovery\",  \"message\": \"$1\"}" -X PUT $EVENT_URL
  sleep 2
}

post_error_msg() {
  curl -f -H 'Content-Type: application/json' --data "{\"level\": \"error\", \"name\": \"recovery\",  \"message\": \"$1\"}" -X PUT $EVENT_URL
  sleep 2
}

# validate the size of the rootfs
ROOTFSPART=`blkid -L ${ROOTFS_LABEL} | grep ${SSD_DEVICE}`
ROOTFS_FS_SZ=`df -h -BG --output=size $ROOTFSPART | tail -1 | sed 's/[^0-9]*//g'`
if [ $ROOTFS_FS_SZ -ge $ROOTFS_FS_MIN_FS ]; then
  echo "ROOTFS [${ROOTFSPART}] size : ${ROOTFS_FS_SZ}GB. Logs will not be remapped to /data"
  exit 0
fi

#validate that the logs are not already remapped
if grep -q "/data/var/log" /etc/fstab; then
  echo "Logs are already remapped. Exiting"
  exit 0
fi

# make sure that testing is not in progress
/usr/bin/in_use --wait

## remap /var/log to /data/var/log ##
echo "Remapping logs from /var/log to /data/var/log. Please wait!"
post_info_msg "[`date`] Remapping logs from /var/log to /data/var/log. Please wait!"
mkdir -p /data/var/log && cp -rfp /var/log/* /data/var/log/ && echo "/data/var/log /var/log none bind 0 0" | tee -a /etc/fstab >/dev/null

#validate that the logs were remapped and reboot to apply the change
if grep -q "/data/var/log" /etc/fstab; then
  echo "Logs were successfully remapped to /data/var/log"
  post_info_msg "[`date`] Logs were successfully remapped from /var/log to /data/var/log"
  reboot
fi

# if we get here something went wrong
post_error_msg "[`date`] Log remapping from /var/log to /data/var/log failed"
exit 1
