#!/bin/bash
# 
# cs_show_xfs_patterns
#
# (c) 2011-2017 SUSE Linux GmbH, Germany.
# (c) 2018-2019 SUSE LLC
# Author: L.Pinne.
# GNU General Public License v2. No warranty.
# http://www.gnu.org/licenses/gpl.html
#
# Version: 2019-11-28 20:20 SLES12
#
# TODO /etc/ClusterTools2/cs_show_xfs_patterns
# TODO  --help
# TODO  -g and -f like cs_show_supportconfig
#

D=$(date +"%F")
DATE=${1:-"$D"}
LOGS="messages*"

# TODO enable run in live system
FIL_MPT="mpio.txt"
FIL_LVM="lvm.txt"

VG_LOG=".*vg.*log"
VG_DAT=".*vg.*dat"


function cut_line() {
     	awk -F" " '{print $1}' |\
	awk -F":" '{print $2":"$3":"$4}' |\
	awk -F"." '{print $1}' | sort -u
}

function show_info() {
        while read -r; do echo "${REPLY}"" - ""${1}" ; done
}

function show_xfs_mnt() {
	# shellcheck disable=SC2086
	grep "${DATE}.*XFS.*${1}.*clean.mount" $LOGS |\
	cut_line
}

function show_xfs_umnt() {
	# shellcheck disable=SC2086
	grep "${DATE}.*XFS.*${1}.*Unmounting.Filesystem" $LOGS |\
	cut_line
}

function show_xfs_recv() {
	# shellcheck disable=SC2086
	grep "${DATE}.*XFS.*${1}.*Ending.recovery" $LOGS |\
	cut_line
}

function show_xfs_shut() {
	# shellcheck disable=SC2086
	grep "${DATE}.*XFS.*${1}.*Shutting.down.filesystem" $LOGS |\
	cut_line
}

function get_luns() {
 LOG_LUNS=$(grep "cache.*cache:./dev/.*/by-id/.*now.in.VG.${VG_LOG}" $FIL_LVM |\
	 awk -F" " 'NF==11 {print $3}' | sort -u | tr -d ":" | colrm 1 24)

 # shellcheck disable=SC2046,SC2005
 LOG_DM=$(echo $(grep "dm-name-${VG_LOG}" ${FIL_MPT}) |\
	awk -F" " '{print $10}' | awk -F"/" '{print $3}')

 DAT_LUNS=$(grep "cache.*cache:./dev/.*/by-id/.*now.in.VG.${VG_DAT}" $FIL_LVM |\
	 awk -F" " 'NF==11 {print $3}' | sort -u | tr -d ":" | colrm 1 24)

 # shellcheck disable=SC2046,SC2005
 DAT_DM=$(echo $(grep "dm-name-${VG_DAT}" ${FIL_MPT}) |\
	awk -F" " '{print $10}' | awk -F"/" '{print $3}')
}


# main

get_luns
echo "# log_luns: $LOG_LUNS" #| tr -s " " "\n"
echo "# log_dm: $LOG_DM"
echo "# dat_luns: $DAT_LUNS" #| tr -s " " "\n"
echo "# dat_dm: $DAT_DM"
echo

(
 test -n "${LOG_DM}" && show_xfs_mnt "${LOG_DM}" | show_info "${LOG_DM} log xfs_mnt"
 test -n "${LOG_DM}" && show_xfs_umnt "${LOG_DM}" | show_info "${LOG_DM} log xfs_umnt"
 test -n "${LOG_DM}" && show_xfs_recv "${LOG_DM}" | show_info "${LOG_DM} log xfs_recv"
 test -n "${LOG_DM}" && show_xfs_shut "${LOG_DM}" | show_info "${LOG_DM} log xfs_shut !!!"
 test -n "${DAT_DM}" && show_xfs_mnt "${DAT_DM}" | show_info "${DAT_DM} dat xfs_mnt"
 test -n "${DAT_DM}" && show_xfs_umnt "${DAT_DM}" | show_info "${DAT_DM} dat xfs_umnt"
 test -n "${DAT_DM}" && show_xfs_recv "${DAT_DM}" | show_info "${DAT_DM} dat xfs_recv"
 test -n "${DAT_DM}" && show_xfs_shut "${DAT_DM}" | show_info "${DAT_DM} dat xfs_shut !!!"

) | sort
#
