export SSH_CIP=ed25519
export PRIKEY_FILE="/unas/etc/dualcontroller/id_$SSH_CIP"
export PUBKEY_FILE="/unas/etc/dualcontroller/id_$SSH_CIP.pub"
export SSH_PARAM="-i $PRIKEY_FILE -o StrictHostKeyChecking=no -o UserKnownHostsFile=/unas/etc/dualcontroller/known_hosts"
export SSH="ssh $SSH_PARAM"
export SCP="scp $SSH_PARAM"
export RSYNC="rsync -a --acls --xattrs --delete --ignore-errors --no-specials --no-devices"
export PROXY_PORT=63211
export pubkeydir="/unas/etc/dualcontroller/pubkeys"

export PROCESS_CHECK=0
export PROCESS_AUTH=1
export PROCESS_CLUSTER_SETUP=2
export PROCESS_SERVICE=3
export PROCESS_EFFECT=4
export PROCESS_IPMI=5

export STATUS_START=1
export STATUS_SUCCESS=2
export STATUS_FAILED=3

export IPMI_CIP=

export PING="ping -c 1 -W 1"

export NQN_BASE=nqn.2010-06.com.u-nas

IPMI_CIP() {
    if [ -n "$IPMI_CIP" ];then
        echo $IPMI_CIP
        return
    fi
    # Get IPMI Cipher Suites
    IPMI_CIP=`ipmitool lan print | grep "RMCP+ Cipher Suites" | awk -F": " '{print $2}'`
    if [ -n "$IPMI_CIP" ];then
        if echo "$IPMI_CIP" | grep -q ,;then
            IPMI_CIP=`echo "$IPMI_CIP" | awk -F, '{print $2}'`
            if [ -z "$IPMI_CIP" ];then
                IPMI_CIP=`echo "$IPMI_CIP" | awk -F, '{print $1}'`
            fi
        fi
    else
        IPMI_CIP=1
    fi
    export IPMI_CIP
    echo $IPMI_CIP
}

wait_resource() {
    local resource="$1"
    local timeout=${2:-300}
    local interval=1
    local start now

    if [ -z "$resource" ]; then
        echo "wait_resource: resource name required" >&2
        return 2
    fi

    start=$(date +%s)
    echo "Waiting for pcs resource '$resource' to start (timeout ${timeout}s)..."
    while true; do
        # * Started: [ U-NAS7NR2BIS0P U-NAS7S2BIS1L ]
        # 至少保证自己节点已经启动了
        if pcs resource status "$resource" 2>/dev/null | grep -E "\* Started: \[" -A1 | grep -wq $(hostname); then
            echo "Resource '$resource' is started (status output)."
            return 0
        fi

        now=$(date +%s)
        if [ $((now - start)) -ge "$timeout" ]; then
            echo "Timeout waiting for resource '$resource' to start" >&2
            return 1
        fi

        sleep "$interval"
    done
}
