#!/usr/bin/env bash

export DEMO_DIR="$( dirname "${BASH_SOURCE[0]}" )"
source "${DEMO_DIR}"/../.setupEnv

source ${DEMOS_DIR}/demo-magic

TYPE_SPEED=30
#PROMPT_AFTER=1
DEMO_PROMPT="ingress-demo $ "

function pause() {
  if [[ -n "${NO_WAIT}" ]]; then
    sleep 5
  else
    if [[ -n "${1-}" ]]; then
      sleep "$1"
    else
      wait
    fi
  fi
}

export KUBECONFIG=${KUBECONFIG:-${KCP_DIR}/.kcp/admin.kubeconfig}
if ! kubectl get namespaces &>/dev/null; then
  echo "kcp server not started, run 'bin/kcp start'"
  exit 1
fi

kubectl config use-context admin  &>/dev/null

kubectl apply -f ${KCP_DIR}/config &> /dev/null
crds=(
  crd/workloadclusters.workload.kcp.io
  crd/negotiatedapiresources.apiresource.kcp.io
  crd/apiresourceimports.apiresource.kcp.io
)
kubectl wait --for condition=established "${crds[@]}" &> /dev/null

pe "kubectl get ingresses --all-namespaces"

pe "kubectl get cluster -o wide"
pe "kubectl apply -f ${CLUSTERS_DIR}/us-west1.yaml"
pe "kubectl wait cluster/us-west1 --for condition=Ready --timeout=60s"

pe "kubectl apply -f ${CLUSTERS_DIR}/us-east1.yaml"
pe "kubectl wait cluster/us-east1 --for condition=Ready --timeout=60s"

pe "kubectl get clusters -o wide"
pause

clear
pe "kubectl create namespace default"
pe "kubectl apply -f ${DEMOS_DIR}/../examples/ingress-demo"

pe "kubectl label --overwrite deployment httpecho workloads.kcp.io/cluster=us-east1"
pe "kubectl label --overwrite service httpecho workloads.kcp.io/cluster=us-east1"
pe "kubectl wait --for=condition=available --timeout=60s deployment/httpecho"
pause
clear

pe "KUBECONFIG=${DEMOS_DIR}/clusters/kind/us-east1.kubeconfig kubectl get deployment/httpecho -o wide"
pe "kubectl get ingresses"
pe "curl -s -o /dev/null -w "%{http_code}" -H 'Host: httpecho.kcp-apps.127.0.0.1.nip.io' http://localhost:8181/"
pause
clear

pe "kubectl label --overwrite deployment httpecho workload.kcp.io/cluster=us-west1"
pe "kubectl label --overwrite service httpecho workloads.kcp.io/cluster=us-west1"
pe "kubectl wait --for=condition=available --timeout=60s deployment/httpecho"
pause
clear
pe "KUBECONFIG=${DEMOS_DIR}/clusters/kind/us-west1.kubeconfig kubectl get deployment/httpecho -o wide"
pe "kubectl get ingresses"
pe "curl -s -o /dev/null -w "%{http_code}" -H 'Host: httpecho.kcp-apps.127.0.0.1.nip.io' http://localhost:8181/"
pause
