#!/usr/local/bin/cbsd
#v11.0.9
MYARG=""
MYOPTARG="cbsd_queue_name id cmd status data_status ip4_addr node astart protected jname host_hostname vm_ram vm_cpus vm_os_type vm_vnc_port interface hidden vnc_port msg impsize data_msg"
MYDESC="Send message to CBSD queue"
ADDHELP="\
 cbsd_queue_name - queue name, e.g: cbsd_queue_name=/clonos/jailscontainers/\n\
 cmd=refresh,update,jcreate,jclone,jrename...\n\
"
CBSDMODULE="jail"

. ${subrdir}/nc.subr
. ${system}
. ${strings}
. ${tools}
. ${workdir}/universe.subr

# for msg-type, notes:
# timeout:1000   - show 1 seconds before hide
# timeout:0 (or absent timeout) - show forever
# + bgcolor:
#  type:alert
#  type:warning
#  type:error
#  type: information
#  type:success

cbsd_queue_name=
id=
cmd=
status=
data_status=
ip4_addr=
node=
astart=
protected=
hidden=
jname=
host_hostname=
vm_os_type=
vm_cpus=
vm_vnc_port=
vnc_port=
interface=
impsize=
data_msg=

. ${cbsdinit}

[ -z "${cbsd_queue_name}" ] && exit 0

case "${cmd}" in
	refresh)
		message="{\"cmd\":\"refresh\"}"
		${distdir}/modules/cbsd_queue.d/cbsd-plugin-wsqueue -ws_url=ws://127.0.0.1:8023${cbsd_queue_name} -message="${message}" > /dev/null 2>&1
		;;
	message)
		message=$( echo ${msg} | ${TR_CMD} '#' ' ' )
		${distdir}/modules/cbsd_queue.d/cbsd-plugin-wsqueue -ws_url=ws://127.0.0.1:8023${cbsd_queue_name} -message="${message}" > /dev/null 2>&1
		;;
	*)
		[ -z "${node}" ] && node="local"

		[ -z "${jname}" ] && jname="${id}"

		# start data field, open {
		data="{\"node\":\"${node}\""

		[ -n "${protected}" ] && data="${data},\"protected\":\"${protected}\""
		[ -n "${hidden}" ] && data="${data},\"hidden\":\"${hidden}\""
		if [ "${jname}" != "0" ]; then
			[ -n "${jname}" ] && data="${data},\"jname\":\"${jname}\""
		fi
		[ -n "${ip4_addr}" ] && data="${data},\"ip4_addr\":\"${ip4_addr}\""
		[ -n "${host_hostname}" ] && data="${data},\"host_hostname\":\"${host_hostname}\""
		[ -n "${astart}" ] && data="${data},\"astart\":\"${astart}\""
		[ -n "${data_status}" ] && data="${data},\"status\":\"${data_status}\""
		[ -n "${vm_ram}" ] && data="${data},\"vm_ram\":\"${vm_ram}\""
		[ -n "${vm_os_type}" ] && data="${data},\"vm_os_type\":\"${vm_os_type}\""
		[ -n "${vm_cpus}" ] && data="${data},\"vm_cpus\":\"${vm_cpus}\""
		[ -n "${impsize}" ] && data="${data},\"impsize\":\"${impsize}\""
		[ -n "${data_msg}" ] && data="${data},\"message\":\"${data_msg}\""

		if [ -n "${vm_vnc_port}" ]; then
			if [ "${vm_vnc_port}" = "0" ]; then
				data="${data},\"vm_vnc_port\":\" \""
			else
				data="${data},\"vm_vnc_port\":\"${vm_vnc_port}\""
			fi
		fi

		if [ -n "${vnc_port}" ]; then
			if [ "${vnc_port}" = "0" ]; then
				data="${data},\"vnc_port\":\" \""
			else
				data="${data},\"vnc_port\":\"${vnc_port}\""
			fi
		fi

		[ -n "${interface}" ] && data="${data},\"interface\":\"${interface}\""

		# end data field, close }
		data="${data}}"

		# correct string sample:
		# publish $cbsd_queue_name "{\"id\":\"${id}\",\"cmd\":\"${cmd}\",\"status\":\"${status}\",\"data\":{\"ip4_addr\":\"${ip4_addr}\",\"node\":\"${node}\",\"jname\":\"${jname}\",\"astart\":\"${astart}\",\"protected\":\"${protected}\",\"runasap\":\"${runasap}\"}}"

		message="{\"id\":\"${id}\",\"cmd\":\"${cmd}\",\"status\":\"${status}\",\"data\":${data}}"
		${distdir}/modules/cbsd_queue.d/cbsd-plugin-wsqueue -ws_url=ws://127.0.0.1:8023${cbsd_queue_name} -message="${message}" > /dev/null 2>&1

#		/usr/local/bin/redis-cli -h 127.0.0.1 <<EOF
#publish $cbsd_queue_name "{\"id\":\"${id}\",\"cmd\":\"${cmd}\",\"status\":\"${status}\",\"data\":${data}}"
#EOF

	;;
esac

exit 0
