#!/usr/local/bin/cbsd
#v10.1.6
MYARG=""
MYOPTARG="alljails shownode display node header mode jname"
MYDESC="Operate with bhyve disk images and databse"
CBSDMODULE="bhyve"
EXTHELP="wf_bhyve"
ADDHELP="alljails=1 - get jaillist from remote node\n\
shownode=1 - show nodename for jails\n\
node= only for current node\n\
header=0 don't print header\n\
display= list by comma for column. Default: id,vhid,advskew,pass,peer,peer6,interface,state\n\
mode=rescan - rescan vhd and sync info in sql base\n"

. ${subrdir}/nc.subr

. ${cbsdinit}

. ${system}

. ${subrdir}/carp.subr

[ -z "${display}" ] && display="id,vhid,advskew,pass,peer,peer6,interface,state"

#remove commas for loop action on header
mydisplay=$( echo ${display} | ${TR_CMD} ',' '  ' )

# upper for header
myheader=$( echo ${mydisplay} | ${TR_CMD} '[:lower:]' '[:upper:]' )

show_header()
{
	local _header="${BOLD}${myheader}${N0_COLOR}"
	[ ${header} -eq 1 ] && $ECHO ${_header}
}

# if $1 = "Unregister" then overwrite status to "Unregister"
populate_output_data()
{
	local _i _val

	_status=

	printf "${N0_COLOR}" # for column sort

	#populate values for in output string
	for _i in ${mydisplay}; do
		_val=""
		eval _val=\$$_i
		[ -z "${_val}" ] && _val="-"

		printf "${_val} "
	done

	printf "\n"
}


# $1 - which file from. Eg: local
show_jaildata_from_sql()
{
	local _i

	_sql="SELECT id,vhid,advskew,pass,peer,peer6,interface,state FROM carp"
	cbsdsqlro local ${_sql}| while read id vhid advskew pass peer peer6 interface state; do
#		populate_output_data
#		${ECHO} ${_status}
		IFS=" "
		populate_output_data
		IFS="|"
	done

	IFS=" "
}


show_local()
{
	local _errcode _status

	show_header
	show_jaildata_from_sql local
}

show_vhid()
{
	show_local
}

#### MAIN
[ -z "${header}" ] && header=1
sqldelimer=" "

show_local | ${COLUMN_CMD} -t

exit 0
