Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > by-pkgid > 54e413082a7f67e7ec1aa1abe74b39fe > files > 7

maui-3.2.6-2mdk.src.rpm

#!/bin/sh 
# v 0.1.3.1
# script to quickly admin maui

NORMAL=`echo -en "\\033[0;32m"`
SUCCESS=`echo -en "\\033[1;32m"`
INFO=`echo -en "\\033[1;34m"`
WARNING=`echo -en "\\033[1;33m"`
WHITE=`echo -en "\\033[1;39m"`

# check user maui
if [ `whoami` != maui ]; then
echo " WARNING" 
    echo " - Must be run by maui user" 1>&2
    exit 1
fi

# usage of $0
usage() {
echo $SUCCESS
echo "----------------------------------------------"
echo "| usage: joborga <options>                   |"
echo "|                                            |"
echo "|    info:  -view (show all Idle job)        |"
echo "|           -chk (check job Idle)            |"
echo "|           -a (node priority job)           |"
echo "|           -res (show reservation)          |"
echo "|                                            |"
echo "| actions:  -sub (submit all Idle job)       |"
echo "|           -rdef (run all possible Idle job)|"
echo "----------------------------------------------"
echo $NORMAL
}

# list all Idle job
LIST_IDLE() {
IDLE_JOB=`diagnose -j | grep Idle | awk '{print $1}'`
JOB_ID=`echo $IDLE_JOB | grep -v DEF`
}


# view all IDLE job
view_idle() {
echo
echo "$INFO - View idle job"
LIST_IDLE
echo "$WHITE $JOB_ID"
echo $NORMAL
}

# release all idle job
sub_idle() {
LIST_IDLE
echo
echo $INFO " - Resubmit all Idle job"
for job in `echo $JOB_ID`
	do 	echo -en "$WHITE  |- Resubmiting jobid: $job"
		releasehold -a $job
done
echo $NORMAL
}

diag_a() {
echo 
echo "$INFO - Show Job"
echo $WHITE ; showq ; sleep 2 ; echo 
echo "$INFO - Diagnose Priority of job"
echo $WHITE ; diagnose -p ; sleep 2 ; echo
echo
echo $INFO " - Diagnose nodes of cluster"
echo $WHITE ; diagnose -n 
echo $NORMAL
}

# check job 
chk_idle() {
LIST_IDLE
echo
echo $WHITE " - Check all Idle job"
for job in `echo $JOB_ID`
        do      echo "   |- Checking Job_id: $job"
echo -ne $WHITE;  checkjob -v $job | grep run ; echo
done
echo $NORMAL
}

# run all possible Idle job
run_idle() {
echo "$INFO - Checking node available"
NB_NODE=`cat /etc/nodes_list | wc -l`
echo "   |- $NB_NODE nodes available"
NB_FREE_NODE=`pbsnodes -a | grep free | wc -l`
echo "   |- $NB_FREE_NODE free node(s)"

while [ $NB_FREE_NODE != 0 ]; do 
	LIST_IDLE
	echo "$WHITE    |- Running all Possible Idle job"
	for job in `echo $JOB_ID`
	        do 
		CHE=`checkjob -v $job | grep "job can run" `
		if [ ! -z "$CHE" ]; then
			echo " Job $job can run, running it"
			runjob $job
		fi
	done
done
echo " No Free node available"
echo $NORMAL

}

show_res() {
echo "$INFO - Show reservation by job and node"
echo -ne $WHITE ; showres ; showres -n
echo $NORMAL
}

##############
# MAIN
##############
case $1 in
	-view|view|v) view_idle;;
	-sub|sub|s) view_idle; sub_idle;;
	-a|a) diag_a ;;
	-res|res|re) show_res;;
	-chk|chk|c) chk_idle;;
	-rdef|rdef|r) run_idle;;
	*) usage
	;;
esac