#!/usr/bin/env bash
set -e

COMPONENTS=${COMPONENTS:-"all"}
NEED_BUILD=${NEED_BUILD:-"true"}
NEED_DEPLOY=${NEED_DEPLOY:-"true"}
IMAGE_TAG=${IMAGE_TAG:-`date +%Y-%m-%d-%H-%M-%S`}
NAMESPACE=${NAMESPACE:-"nightly-ms"}
CTX=${CTX:-"nightly"}

if [ "$CTX" = "nightly" ]; then
  FULL_CTX_="arn:aws:eks:us-west-2:385595570414:cluster/dev-base-us-west-2"
elif [ "$CTX" = "staging" ]; then
  FULL_CTX_="arn:aws:eks:us-west-2:385595570414:cluster/staging-base-us-west-2"
else
  echo "invalid CTX: ${CTX}"
  exit 1
fi

FULL_CTX=${FULL_CTX:-"${FULL_CTX_}"}
echo "FULL_CTX: ${FULL_CTX}"

echo "deploy image with tag: ${IMAGE_TAG}, ctx: ${CTX}, namespace: ${NAMESPACE}"

function build() {
  IMAGE_TAG=`echo ${IMAGE_TAG}`
  aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 385595570414.dkr.ecr.us-west-2.amazonaws.com

  if [[ "$COMPONENTS" == "core-svc" || "$COMPONENTS" == "all"  ]] ; then
    pushd ./local

    ./build.sh
    docker build --network host --platform linux/amd64 . -t core-svc:local
    IMAGE_URL="385595570414.dkr.ecr.us-west-2.amazonaws.com/dbaas/${CTX}/core-svc:${IMAGE_TAG}"
    docker tag core-svc:local $IMAGE_URL
    docker push $IMAGE_URL

    popd
  fi
  if [[ "$COMPONENTS" == "core-portal" || "$COMPONENTS" == "all"  ]] ; then
    pushd ./local

    ./build.sh
    docker build --network host --platform linux/amd64 . -t core-portal:local
    IMAGE_URL="385595570414.dkr.ecr.us-west-2.amazonaws.com/dbaas/${CTX}/core-portal:${IMAGE_TAG}"
    docker tag core-portal:local $IMAGE_URL
    docker push $IMAGE_URL

    popd
  fi
}

function deploy() {
  kubectl ctx ${FULL_CTX}

  if [[ "$COMPONENTS" == "core-svc" || "$COMPONENTS" == "all" ]] ; then
      SERVER_DEPLOYMENT=`kubectl -n ${NAMESPACE} get deployment | grep dbaas-core-svc-server | awk '{print $1}'`
      WORKER_DEPLOYMENT=`kubectl -n ${NAMESPACE} get deployment | grep dbaas-core-svc-worker | awk '{print $1}'`
      IMAGE_URL="385595570414.dkr.ecr.us-west-2.amazonaws.com/dbaas/${CTX}/core-svc:${IMAGE_TAG}"

      kubectl -n "${NAMESPACE}" set image deployment "$SERVER_DEPLOYMENT" core-svc-server=$IMAGE_URL
      kubectl -n "${NAMESPACE}" set image deployment "$WORKER_DEPLOYMENT" core-svc-worker=$IMAGE_URL
    fi

  if [[ "$COMPONENTS" == "core-portal" || "$COMPONENTS" == "all" ]] ; then
    SERVER_DEPLOYMENT=`kubectl -n ${NAMESPACE} get deployment | grep dbaas-core-portal-server | awk '{print $1}'`
    WORKER_DEPLOYMENT=`kubectl -n ${NAMESPACE} get deployment | grep dbaas-core-portal-worker | awk '{print $1}'`
    IMAGE_URL="385595570414.dkr.ecr.us-west-2.amazonaws.com/dbaas/${CTX}/core-portal:${IMAGE_TAG}"

    kubectl -n "${NAMESPACE}" set image deployment "$SERVER_DEPLOYMENT" core-portal-server=$IMAGE_URL
    kubectl -n "${NAMESPACE}" set image deployment "$WORKER_DEPLOYMENT" core-portal-worker=$IMAGE_URL
  fi
}


if [[ $NEED_BUILD == "true" ]] ; then
  build
fi

if [[ $NEED_DEPLOY == "true" ]] ; then
  deploy
fi

