#! /bin/bash
# Afrihost - script to cross check attached disks to lvm physcially attached disks
# Author: littlep
# 20220129


Bla="\e[30m"
Red="\e[31m"
Gre="\e[32m"
Yel="\e[33m"
Blu="\e[34m"
Mag="\e[35m"
Cya="\e[36m"
EC="\e[0m"

if !   [[ $(egrep 'Msft|microsoft'  < /proc/scsi/scsi) ]]  ; then 
	echo "==> [ physical server - auto-allocating not applicable ]"
	exit
fi

echo -e "\n${Red}=== Cross Checking physically attached to LVM physcially added ===${EC}\n"
PVSDISKTOTAL="$(pvs | grep sd | awk '{print $1}' | sed s/'[0-9]//'  | sort | uniq  | wc -l)"
PVSDISKS="$(pvs | grep sd | awk '{print $1}' | sed s/'[0-9]//'  | sort | uniq )"
FDISKTOTAL="$(fdisk -l 2>/dev/null  | grep sd | awk '{print $2}' | sed 's/://g'| grep dev | wc -l)"
FDISKDISK="$(fdisk -l 2>/dev/null  | grep sd | awk '{print $2}' | grep sd | sed 's/://g'| grep dev )"
declare -a PVSDISKTOTALar=( $(pvs | grep sd | awk '{print $1}' | sed s/'[0-9]//'  | sort | uniq | sort -h  ) )
declare -a FDISKTOTALar=( $(fdisk -l 2>/dev/null  | grep sd | awk '{print $2}' | sed 's/://g' | grep dev| sort -h)  )
arraycount="${#FDISKTOTALar[@]}"

if  [ "$PVSDISKTOTAL" -lt "$FDISKTOTAL" ] ; then
        echo -e "${Gre}[ FreeDisks Available ]${EC}"
         echo -e "${Bla}== These disks not part of LVM yet ==${EC}\n$(echo "$FDISKDISK" | grep -v "$PVSDISKS" | sort -h)"
        echo -e "\n${Bla}== Run this to extend next available disk ==${EC}"
        echo "/usr/local/afribin/configs/gpt_autoincrease_diskBYname $(echo "$FDISKDISK" | grep -v "$PVSDISKS" |sort -h|  head -n1 | sed "s#/dev/##" ) "
        echo -e "\n${Red}===== END =====${EC}\n"
      else 
        echo -e "${Red}[ ALL_USED ]${EC}"
        echo "SysDisks LVM_PVs'"
        for ii in `seq 0 "$(echo ${arraycount[@]})"` ; do
        echo -e "`echo ${FDISKTOTALar[$ii]}` `echo ${PVSDISKTOTALar[$ii]}`"
        done
fi
