#!/bin/bash
Action=$1
shift 1

set -o nounset
set -o errexit
set -o pipefail
#set -o xtrace

BASE=$(cd `dirname $0`; cd ./; pwd)
DEFAULT_CLS=${CLUSTER:-cluster01}

function print_help() {
    echo "Example:"
    echo ""
    echo "Install cluster: "
    echo "./morecli install --masters 192.168.1.3,192.168.1.4 \\"
    echo "                  --etcd 192.168.1.3,192.168.1.4 \\"
    echo "                  --workers 192.168.1.5,192.168.1.6"
    echo " Options:"
    echo "   m|masters, required:  cluster master nodes"
    echo "   e|etcds, required:    cluster etcd nodes"
    echo "   w|workers:            cluster worker nodes"
    echo "   service-cidr:         service cidr, default: 10.68.0.0/16"
    echo "   cluster-cidr:         cluster cidr, default: 172.20.0.0/16"
    echo "   password:             password for all nodes"
    echo "   ssh-user:             ssh user for all nodes, default root"
    echo "   ssh-port:             ssh port for all nodes, default 22"
    echo "   ntp-server:           ntp server for cluster"
    echo "   p|port-range:         node port range, default: 30000-32767"
    echo "   max-pods:             max ports per node, default: 110"
    echo "   exter-eip:            external eip for k8s cluster"
    echo "   d|dns-domain:         cluster dns domain, default: cluster.local"
    echo "   xpu-mode:             GPU/DPU mode, available mode [nvidia|ascend910|enflame|biren|hygon], "
    echo "                         only set to worker node"
    echo "   xpu-type:             GPU/DPU type, available type, "
    echo "                         for nvidia: [nvidia-v10032g|nvidia-v10016g|nvidia-t416g|"
    echo "                                      nvidia-a10040g|nvidia-a10080g|nvidia-h200141g],"
    echo "                         for ascend910: [ascend-ascend910a32g|ascend-ascend910b64g]"
    echo "                         for enflame: [enflame-s6032g]"
    echo "                         for biren: [biren-106m32g]"
    echo "                         for hygon: [hygon-bw20064g]"
    echo "                         only set to worker node"
    echo ""
    echo "Add new nodes(master nodes, etcd nodes, worker nodes): "
    echo "./morecli add --masters 192.168.1.3,192.168.1.4 \\"
    echo "              --etcds 192.168.1.3,192.168.1.4 \\"
    echo "              --workers 192.168.1.3,192.168.1.4"
    echo ""
    echo "Delete nodes: "
    echo "./morecli del --masters 192.168.1.5,192.168.1.6 \\"
    echo "              --etcds 192.168.1.3,192.168.1.4 \\"
    echo "              --workers 192.168.1.3,192.168.1.4"
    echo ""
    echo "Activate k8s device plugin: "
    echo "./morecli activate-kdp [ascend910|nvidia|hami|enflame|hygon]"
    echo ""
    echo "Activate k8s rdma network: "
    echo "./morecli activate-rdma [roce|ib]"
    echo ""
    echo "Activate object storage csi: "
    echo "./morecli activate-osc"
    echo ""
    echo "Activate monitor service: "
    echo "./morecli activate-monitor --xpu-mode [ascend910|nvidia|enflame|hygon] \\"
    echo "                           --db-influx-conn http://localhost:8086 \\"
    echo "                           --db-influx-token XXXXXXXX====="
    echo ""
    echo "Activate monitor service: "
    echo "./morecli activate-k8s-monitor"
    echo ""
    echo "Activate jupyterlab proxy: "
    echo "./morecli activate-jupy-proxy"
    echo ""
    echo "Install kubedb: "
    echo "./morecli install-kubedb"
    echo ""
    echo "Check Images: "
    echo "./morecli check-images <image registry>"
    echo ""
    echo "Install kubestore: "
    echo "./morecli install-kubestore <node01> <node02> <node03> <node04>"
    echo ""
    echo "Activate tools: "
    echo "./morecli activate-tools"
    echo ""
    echo "Destroy cluster: "
    echo "./morecli destroy"
    echo ""
    echo "See detail: "
    echo "    ./morecli [sub-command] --help"
}

case "${Action}" in
install)
  export CLUSTER=${DEFAULT_CLS}
  bash ${BASE}/utils/install $@
  ;;
destroy)
  export CLUSTER=${DEFAULT_CLS}
  bash ${BASE}/utils/destroy $@
  ;;
add)
  export CLUSTER=${DEFAULT_CLS}
  bash ${BASE}/utils/add $@
  ;;
del)
  export CLUSTER=${DEFAULT_CLS}
  bash ${BASE}/utils/del $@
  ;;
activate-rdma)
  bash ${BASE}/utils/activate-rdma $@
  ;;
activate-kdp)
  bash ${BASE}/utils/activate-kdp $@
  ;;
activate-osc)
  bash ${BASE}/utils/activate-osc $@
  ;;
activate-monitor)
  bash ${BASE}/utils/activate-monitor $@
  ;;
activate-jupy-proxy)
  bash ${BASE}/utils/activate-jupy-proxy $@
  ;;
activate-k8s-monitor)
  bash ${BASE}/utils/activate-k8s-monitor
  ;;
install-kubedb)
  bash ${BASE}/utils/install-kubedb $@
  ;;
install-kubestore)
  bash ${BASE}/utils/install-kubestore $@
  ;;
activate-tools)
  bash ${BASE}/utils/activate-tools
  ;;
check-images)
  bash ${BASE}/utils/check-images $@
  ;;
*)
  print_help
  exit 0
  ;;
esac
