#!/usr/local/bin/cbsd
#v11.1.11
MYDESC="Collect and store inventory information"
MYARG="nodename"
MYOPTARG=""

. ${subrdir}/nc.subr

init ${1}

collect_info()
{
	local _dmidecode _meminfo _realmem

	. ${subrdir}/initenv.subr
	. ${subrdir}/xen.subr
	update_netinfo

	if is_xen_dom0; then
		_realmem=$( ${XL_CMD} info total_memory 2>/dev/null )	# in MB by default
		[ -n "${_realmem}" ] && _realmem=$(( _realmem * 1024 * 1024 ))		# ->KB -> Bytes
		ncpu=$( ${XL_CMD} info nr_cpus 2>/dev/null )
		cpufreq=$( ${SYSCTL_CMD} -n cpu_mhz 2>/dev/null )
		[ -z "${ncpu}" ] && ncpu=$( ${SYSCTL_CMD} -n hw.ncpu 2>/dev/null )
		[ -z "${cpufreq}" ] && cpufreq=$( ${SYSCTL_CMD} -n dev.cpu.0.freq 2>/dev/null )
	else
		_realmem=$( ${SYSCTL_CMD} -n hw.physmem 2>/dev/null )
		ncpu=$( ${SYSCTL_CMD} -n hw.ncpu 2>/dev/null )
		cpufreq=$( ${SYSCTL_CMD} -n dev.cpu.0.freq 2>/dev/null )
	fi

	if [ -z "${_realmem}" ]; then
		physmem=0
	else
		physmem="${_realmem}"
	fi

	disks=$( ${SYSCTL_CMD} -n kern.disks 2>/dev/null | ${TR_CMD} " " "," )

	_dmidecode=$( which dmidecode )

	if [ -n "${_dmidecode}" ]; then
		memtype=$( ${_dmidecode} -t memory | ${GREP_CMD} -A20 "Memory Device" | ${GREP_CMD} -B20 "^Handle" | ${TR_CMD} -d "\t " | ${EGREP_CMD} "^Type:|^Speed:" | ${CUT_CMD} -d : -f 2 | ${XARGS_CMD} )
	else
		memtype=""
	fi

	hostname=$( ${SYSCTL_CMD} -n kern.hostname 2>/dev/null )
	osrelease=$( ${SYSCTL_CMD} -n kern.osrelease 2>/dev/null )
	cpumodel=$( ${SYSCTL_CMD} -n hw.model 2>/dev/null )

	cpufreq=$( ${SYSCTL_CMD} -n dev.cpu.0.freq 2>/dev/null )
	kernhz=$( ${SYSCTL_CMD} -n kern.hz 2>/dev/null )
	sched=$( ${SYSCTL_CMD} -n kern.sched.name 2>/dev/null )
	eventtimer=$( ${SYSCTL_CMD} -n kern.eventtimer.choice 2>/dev/null )
	disks=$( ${SYSCTL_CMD} -n kern.disks 2>/dev/null )

	cbsdver=${myversion}

	nics=$( ${miscdir}/nics-list -s "lo" )
	[ -n "${nics}" ] && nics=$( echo ${nics} | ${TR_CMD} " " "," )

	platform=$( /usr/bin/uname -s )
	# Overwrite $platform to HardenedBSD if we have /usr/sbin/hbsd-update:
	[ -e "/usr/sbin/hbsd-update" ] && platform="HardenedBSD"
	# Overwrite $platform to TrueOS if we have TrueOS-specific dirs
	[ -d "/usr/local/etc/trueos" -a -d "/usr/local/share/trueos" ] && platform="TrueOS"
}

collect_info
[ -f "${subrdir}/${platform}.subr" ] && . ${distdir}/${platform}.subr

MYDATA="parallel nodename hostname nodeip nodedescr jnameserver nodeippool natip nat_enable fbsdrepo mdtmp repo workdir ipfw_enable fs zfsfeat jail_interface ncpu physmem memtype disks cpumodel cpufreq kernhz sched eventtimer nics node_ip4_active node_ip6_active \
statsd_bhyve_enable statsd_jail_enable statsd_hoster_enable"

for i in ${MYDATA} platform; do
	eval items="\$${i}"
	if [ -n "${items}" ]; then
		${miscdir}/sqlcli ${dbdir}/local.sqlite UPDATE local SET ${i}=\"${items}\"
		${SYSRC_CMD} -qf ${inventory} ${i}="${items}" > /dev/null
	fi
done

# here is place for execute importing SQL data to Ascii file
