#!/usr/bin/env bash

source .utils

NAMESPACE="$(kubectl config view --minify --output 'jsonpath={..namespace}' &>/dev/null)"
set -e
NAMESPACE=${NAMESPACE:-default}
DEPLOYMENT=""

print_usage() {
  blue "kube-schedule-anywhere - modify a deployment to schedule on any node"
  echo " "
  underline "Usage:"
  echo "kube-schedule-anywhere [options]"
  echo " "
  underline "Options:"
  echo "-h, --help            show this help text"
  echo "-n, --namespace       the namespace the pod is in"
  echo "-d, --deployment      the name of the deployment to modify"
}

while test $# -gt 0; do
  case "$1" in
    -n|--namespace)
      shift
      NAMESPACE=$1
      shift
      ;;
    -d|--deployment)
      shift
      DEPLOYMENT=$1
      shift
      ;;
    -h|--help)
      print_usage
      exit 0
      ;;
    *)
      break
      ;;
  esac
done


if [[ "$DEPLOYMENT" == "" ]]; then
  which fzf &>/dev/null || (
    echo "If no deployment provided, fzf is required to select deployments"
    echo ""
    print_usage
    exit 1
  )

  deployment=($(kubectl get deployments --all-namespaces -o wide | _fzf | awk '{print $1, $2}'))
  DEPLOYMENT=${deployment[1]}
  NAMESPACE=${deployment[0]}
fi

kubectl patch deployment -n ${NAMESPACE} ${DEPLOYMENT} -p '{"spec": { "template": { "spec": { "tolerations": [ { "operator": "Exists" } ] } } } }' 1>/dev/null
