#!/bin/bash
set -e
#该脚本实现删除集群及更新代码的功能,需要传2个参数,即./clean.sh <git_username> <git_password>

function logger() {
  TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
  case "$1" in
    debug)
      echo -e "$TIMESTAMP \033[36mDEBUG\033[0m $2"
      ;;
    info)
      echo -e "$TIMESTAMP \033[32mINFO\033[0m $2"
      ;;
    warn)
      echo -e "$TIMESTAMP \033[33mWARN\033[0m $2"
      ;;
    error)
      echo -e "$TIMESTAMP \033[31mERROR\033[0m $2"
      ;;
    *)
      ;;
  esac
}

function usage() {
    echo -e "\033[33mUsage:\033[0m clean.sh COMMAND"
    cat <<EOF
-------------------------------------------------------------------------------------
  all             clean storage and k8s cluster
  storage         clean storage
  k8s             clean k8s cluster
EOF
}

function clean_storage() {
  STORAGE_TYPE=$(grep -r 'STORAGE_TYPE' $BASE/ai.config |grep -v '^#' | cut -d'=' -f2)
  if [[ $STORAGE_TYPE == glusterfs || $STORAGE_TYPE == kadalu ]];then
    if [[ -f /usr/bin/heketi ]];then
      logger debug "正在删除glusterfs服务"
      ansible-playbook -i "clusters/ai/hosts" -e "@clusters/ai/config.yml" "playbooks/42.delglusterfs-8.6.yml"
    else
      logger debug "正在删除glusterfs服务"
      ./ezctl del-glusterfs ai
    fi
  else
    logger debug "正在删除longhorn服务"
    ./ezctl del-longhorn ai
  fi
}

function clean_k8s() {
  logger debug "正在删除k8s集群"
  ./ezctl destroy ai
}


### Main Lines ##################################################
function main() {
  BASE=$(grep -E 'BASE' ./ai.config|cut -d'=' -f2)
  mkdir -p "$BASE/bin" "$BASE/down"
  DEFAULT_BASE=/etc/ai-deployer
  if [[ $BASE != $DEFAULT_BASE ]];then
    logger debug "正在配置工作目录"
    sed -i "s#$DEFAULT_BASE#$BASE#g" `grep -r $DEFAULT_BASE . -rl`
  fi
  #线上MINIO
  MINIO_URL=$(grep -E 'MINIO_URL' $BASE/ai.config|cut -d'=' -f2)

  #线上镜像仓库
  REGISTRY_URL=$(grep -E 'REGISTRY_URL' $BASE/ai.config|cut -d'=' -f2)
  REGISTRY_DOMAIN=${REGISTRY_URL#*//}
  #本地镜像仓库
  HARBOR_IP=$(grep -r 'HARBOR_DOMAIN' $BASE/ai.config |cut -d'=' -f2|awk '{print $1}')
  HARBOR_PORT=$(grep -r 'HARBOR_NODE_PORT' $BASE/ai.config |cut -d'=' -f2|awk '{print $1}')
  REGISTRY_LOCAL="$HARBOR_IP:$HARBOR_PORT"

  DEFAULT_REGISTRY_DOMAIN=registry.mopaas.com
  if [[ $REGISTRY_LOCAL != $DEFAULT_REGISTRY_DOMAIN ]];then
    logger debug "正在配置线上镜像仓库"
    sed -i "s#$DEFAULT_REGISTRY_DOMAIN#$REGISTRY_LOCAL#g" $BASE/install.sh
    sed -i "s#$DEFAULT_REGISTRY_DOMAIN#$REGISTRY_LOCAL#g" $BASE/operate.sh
    sed -i "s#$DEFAULT_REGISTRY_DOMAIN#$REGISTRY_LOCAL#g" $BASE/clean.sh
    sed -i "s#$DEFAULT_REGISTRY_DOMAIN#$REGISTRY_LOCAL#g" `grep -r $DEFAULT_REGISTRY_DOMAIN $BASE/ai/ai-manifests/kubeflow-manifests -rl`
  fi

  [ "$#" -gt 0 ] || { usage >&2; exit 2; }

  case "$1" in
      (all)
          [ "$#" -eq 1 ] || { usage >&2; exit 2; }
          clean_storage
          clean_k8s
          ;;
      (storage)
          [ "$#" -eq 1 ] || { usage >&2; exit 2; }
          clean_storage
          ;;
      (k8s)
          [ "$#" -eq 1 ] || { usage >&2; exit 2; }
          clean_k8s
          ;;
      (*)
          usage
          exit 0
          ;;
  esac
}
main "$@"
