#!/usr/local/bin/cbsd
#v11.0.0
globalconf="${workdir}/cbsd.conf";
CBSDMODULE="jail"
MYARG="node jname"
MYOPTARG="sharedfs"
MYDESC="Transfer jail as slave jail to remote node"

set -e
. ${globalconf}
set +e

. ${subr}
. ${jfs}
. ${strings}

sharedfs=0

init $*

[ ${sharedfs} -eq 1 ] && exit 0
[ -z "${node}" ] && log_err 1 "${MAGENTA}Give me node${NORMAL}"
[ -z "${jname}" ] && log_err 1 "${MAGENTA}Give me jname${NORMAL}"

. ${jrcconf}
[ $? -eq 1 ] && log_err 1 "${MAGENTA}No such jail: ${GREEN}${jname}${NORMAL}"
[ "${emulator}" = "bhyve" ] && log_err 1 "${MAGENTA}Not for bhyve mode${NORMAL}"

ip=$( cbsdsql nodes select ip from nodelist where nodename=\"${node}\" )

[ -z "${ip}" ] && err 1 "${MAGENTA}No such nodedata: ${GREEN}${node}${NORMAL}"

#test for zfs mounted & mount if not
case ${zfsfeat} in
	1)
		. ${zfstool}
		zfsmnt ${data}
		[ $? -eq 2 ] && /sbin/zfs mount "${ZPOOL}"
		;;
esac

[ ! -d "${data}" ] && log_err 1 "${MAGENTA}No such jaildir${NORMAL}"
cbsdlogger NOTICE ${CBSD_APP}: rsync ${jname} data, port: 1873, secrets: ${etcdir}/${jname}.secrets
/usr/local/bin/rsync --port=1873 -arvPzz --devices --numeric-ids --delete --recursive --partial --password-file=${etcdir}/${jname}.secrets ${data}/ rsync://${jname}@${ip}/${jname}/ > $DEBLOG 2>&1

_err=$?

case ${_err} in
	0|6|24|25)
		cbsdlogger NOTICE ${CBSD_APP}: rsync ${jname} data, port: 1873, secrets: ${etcdir}/${jname}.secrets success
		exit 0
		;;
	*)
		cbsdlogger NOTICE ${CBSD_APP}: rsync ${jname} data, port: 1873, secrets: ${etcdir}/${jname}.secrets failed, see ${DEBLOG}
		/bin/cat ${DEBLOG}
		exit 1
		;;
esac
