#!/bin/bash
#< Check for Netbackup frozen media and expire them

AWK="/usr/local/bin/awk"
ECHO="/usr/bin/echo"
GREP="/usr/bin/grep"
WC="/usr/bin/wc"
YES="/usr/bin/yes"

NETBACKUP_HOME="/usr/openv/netbackup"
NETBACKUP_BIN="${NETBACKUP_HOME}/bin"
NETBACKUP_ADMIN="${NETBACKUP_BIN}/admincmd"
NETBACKUP_GOODIES="${NETBACKUP_BIN}/goodies"

AVAILABLE_MEDIA="${NETBACKUP_GOODIES}/available_media"
BPEXPDATE="${NETBACKUP_ADMIN}/bpexpdate"

function print_error {
   ${ECHO} "Error: $@" >&2
}

function confirm {
   ${ECHO} "$@ [y/n] \c"
   read RESPONSE
   case ${RESPONSE} in 
      y|Y|[Yy][Ee][Ss]) return 0 ;;
      *               ) return 1 ;; 
   esac
}

function expire_frozen_media {
   ${ECHO} "Searching for frozen media - please wait..."
   FROZEN_MEDIA_IDS=$( ${AVAILABLE_MEDIA} | ${GREP} "FROZEN" | ${AWK} '{print $1}' )
   if [ "${FROZEN_MEDIA_IDS}" = "" ]; then
      print_error "No frozen media found" && exit 1
   fi
   ${ECHO} "The following frozen media were found:"
   ${ECHO} "${FROZEN_MEDIA_IDS}"
   confirm "Are you sure you want to exipre all frozen media?"
   if [ "$?" -ne "0" ]; then
      ${ECHO} "Aborting at user request" && exit 0
   fi
   ${ECHO} "${FROZEN_MEDIA_IDS}" | while read MEDIA_ID; do
      ${ECHO} "Expiring media ID ${MEDIA_ID}"
      ${YES} | ${BPEXPDATE} -m ${MEDIA_ID} -d 0
      ${ECHO}
   done
}

expire_frozen_media

exit 0