#!/usr/bin/bash
VSTORAGE_NFS_LIB=/usr/libexec/vstorage-nfs/nfs_functions
ROOT=""
SHARE_NAME=""
IP_ADDR=""
VOL_ID=""
ARGS="${@}"

function print_usage {
        exec 1>&2
        echo "Create NFS share on shared storage."
        echo "Usage:"
	echo " vstorage-nfs create -n,--name NAME -V,--volume VOL_ID -a,--address ADDR"
        echo "Options:"
        echo "  -n,--name SHARE_NAME    name for new NFS share"
	echo "  -V,--volume VOLUME_ID   volume ID for new share"
        echo "  -a,--address ADDR       address for new NFS share"

        echo " "
        exit 1
}

function parse_args {

        [ ${#} -eq 1 ] && print_usage

        while [ "${#}" -gt 0 ]; do
                case "${1}" in
                        "-r"|"--root")
                                [ -z "${2}" ] && print_usage
                                ROOT="${2}"
                                shift
                                shift
                                ;;
                       "-n"|"--name")
                                [ -z "${2}" ] && print_usage
                                SHARE_NAME="${2}"
                                shift
                                shift
                                ;;
			"-V"|"--volume")
                                [ -z "${2}" ] && print_usage
                                VOL_ID="${2}"
                                shift
                                shift
                                ;;
                        "-a"|"--address")
                                [ -z "${2}" ] && print_usage
				[ -n "$IP_ADDR" ] && print_usage
				IP_ADDR="${2}"
                                shift
                                shift
                                ;;
                        "-h"|"--help")
                                print_usage
                                ;;
                        *)
                                echo "Unknown option '${1}'." 1>&2
                                print_usage
                                ;;
                esac
        done

        SHARE_NAME=`echo $SHARE_NAME | sed "s#\s##g" 2>/dev/null`

        if [ -z "$SHARE_NAME" ] ; then
                echo "Share name (-n,--name) must be specified." 1>&2
                print_usage
        fi

	if [ -z "$VOL_ID" ] ; then
                echo "Volume id (-V,--volume) must be specified." 1>&2
                print_usage
        fi

        if [ -z "$IP_ADDR" ] ; then
                echo "Network address (-a,--address) must be specified." 1>&2
                print_usage
        fi

        IP_ADDR=`pcs_ha_validate_addr "$IP_ADDR"`
        [ -z "$IP_ADDR" ] && print_usage
}


if [ ! -x $VSTORAGE_NFS_LIB ] ; then
        echo "Unable find executable $VSTORAGE_NFS_LIB" 1>&2
        exit 1
fi

source $VSTORAGE_NFS_LIB
[ -f $NFS_ETC/config ] && source $NFS_ETC/config

parse_args ${ARGS}

NFS_ROOT=`pcs_nfs_get_root "${ROOT}"`
pcs_nfs_check_root yes
pcs_ha_lock_exec pcs_nfs_make_share $SHARE_NAME "$VOL_ID" "$IP_ADDR"

RET=$?
if [ $RET -ne 0 ] ; then
        echo "Unable create share $SHARE_NAME" 1>&2
        exit $RET
fi
exit 0


