#!/bin/sh
VERSION=251218
SCRIPT=$(readlink -f $0)
SCRIPTNAME=$(basename $SCRIPT)
SCRIPTDIR=$(dirname $SCRIPT)
if [ "$1" = "-v" ] ; then echo "$VERSION $SCRIPTNAME $SCRIPTDIR";exit 0; fi
if [ -e "$SCRIPTDIR/esc.sh" ] ; then . "$SCRIPTDIR/esc.sh"; fi
LOG=$LOGDIR/log-$SCRIPTNAME.log

# defined in settings.local , included by esc.sh 
# a pipe separated list of vm names or partial names, pay attention to matching then
#excludes=""

if [ -z "$1" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
        echo "show	- show filtered list"
        echo "showall	- show unfiltered list"
        echo "ex	- show exclusion filter"
        echo "gen	- generate VMs list (saved: list.vms)"
        echo "genall	- generate unfiltered VMs list (saved: list.all.vms)"
	echo "-c	- count selected VMs (filtered)"
        echo "-ca	- count all existing VMs"
        exit
fi

if [ "$1" == "ex" ] ; then
        echo "excluding this names: $excludes"
        exit
fi

if [ "$1" == "gen" ] ; then
        if [ -e "list.vms" ] ; then
                cp list.vms list.vms.bkp
                rm list.vms
        fi
	#esxcli vm process list
	# MUCH FASTER , but only active vms 
	#esxcli vm process list | grep "Display Name:" | awk {'print $3'}
	#
        #with IDs
        #vim-cmd vmsvc/getallvms | sed -e '1d' -e 's/ \[.*$//' | awk '$1 ~ /^[0-9]+$/ {print $1":"substr($0,8,80)}'
        # without IDS
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}' | grep -vEw "$excludes" | tee -a list.vms
        #vim-cmd vmsvc/getallvms | sed -e '1d' -e 's/ \[.*$//' | awk '$1 ~ /^[0-9]+$/ {print substr($0,8,80)}'
        #vim-cmd vmsvc/getallvms | awk {'print $2'} | grep -vE "/|Vmid|Name" | grep -v -e '^$' | grep -vEw "$ex" | tee -a vm.list
        #vim-cmd vmsvc/getallvms | grep -vE "root|debian|Vmid" | awk {'print $2'} | grep -v -e '^[[:space:]]*$'| grep -vEw "$ex" | tee -a vm.list
	echo -e "\t[OK] created vm list (excluded:$excluded count:$(cat $SCRIPTDIR/list.vms|wc -l))"
        exit
fi

if [ "$1" == "genall" ] ; then
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}' | tee -a list.all.vms
        exit
fi

if [ "$1" == "-ca" ] ; then
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}' | wc -l
        exit
fi

if [ "$1" == "-c" ] ; then
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}' | grep -vEw "$excludes" | wc -l
        exit
fi

if [ "$1" == "showall" ] ; then
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}'
        exit
fi

if [ "$1" == "show" ] ; then
        vim-cmd vmsvc/getallvms | awk '$3 ~ /^\[/ {print $2}' | grep -vEw "$excludes"
        exit
fi

echo "unknown action: $1"

exit


