#!/bin/bash
#
# sccl_list_packages_on_node listet aktive Paket im Script-Cluster eines Nodes auf
#
# Aufruf:
#
# sccl_list_packages_on_node [-a] [-u|-U] [-L] [<node>]
#
# Die Pakete des Knoten <node> werden ausgegeben.
# Ist <node> nicht angegeben, dann des aufrufenden Nodes
#
########################################################################################
#
# ist [<node>] angegeben? wenn ja, dann sccl_list_packages_on_node auf $1 ausfuehren
#
. `dirname $0`/globals.functions
#
if [[ ! -f $PACKAGES ]]
 then
  exit 1
fi
#
unset LOCALFLAG ALLFLAG UFLAG
ALL=0
OUTFILTER="sort -u"
#
while getopts LauU? op
 do
  case "$op" in
    L) LOCALFLAG=1;;
    a) ALLFLAG=-a
       ALL=1;;
    u) UFLGA="-u"
       OUTFILTER="cat";;
    U) UFLGA="-U"
       OUTFILTER="tac";;
    ?) echo "usage: `basename $0` [-a] [-u|-U] [-L] [<node>]"
       exit 1;;
  esac
done
shift $(( $OPTIND - 1))
#
if [[ $# -gt 1 ]]
 then
  echo "usage: $0 [<node>]"
  exit 1
fi
#
NODE=${1:-$THISHOSTNAME}
#
if [[ ($NODE = $THISHOSTNAME || $NODE = $THISFQDN) && $ADMINFLG = 1 || "$LOCALFLAG" = "1" ]]
 then
  if [[ "$ALL" = "1" ]]
   then
    grep -v "^ *#" $PACKAGES | egrep "[[:blank:]]$THISHOSTNAME[[:blank:]]|[[:blank:]]$THISHOSTNAME\$|[[:blank:]]$THISFQDN[[:blank:]]|[[:blank:]]$THISFQDN\$" | awk '{print $1}' | $OUTFILTER
  else
    grep -v "^ *#" $PACKAGES | egrep "[[:blank:]]$THISHOSTNAME[[:blank:]]|[[:blank:]]$THISHOSTNAME\$|[[:blank:]]$THISFQDN[[:blank:]]|[[:blank:]]$THISFQDN\$" | awk '{print $1}' | while read p
     do
      if grep -q $PAKETHEADER $LOCKDIR/$p$LOCKEXTENSION 2>/dev/null
       then
        echo $p
      fi
    done | $OUTFILTER
  fi
elif ! readnode $NODE "sccl_list_packages_on_node.s3w?allflag=$ALLFLAG&UFLAG=$UFLAG"
 then
  if ! readnode $NODE "sccl_list_pakete_on_node.s3w?allflag=$ALLFLAG&UFLAG=$UFLAG"
   then
    if [[ "$HBNODES" = *"$NODE$HBNODE_EXT"* ]]
     then
      if ! readnode $NODE$HBNODE_EXT "sccl_list_packages_on_node.s3w?allflag=$ALLFLAG&UFLAG=$UFLAG"
       then
        readnode $NODE$HBNODE_EXT "sccl_list_pakete_on_node.s3w?allflag=$ALLFLAG&UFLAG=$UFLAG"
      fi
    else
      exit 1
    fi
  fi
fi
