#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/../..; pwd -P)

source $ROOT/hack/lib/vars.sh
source $ROOT/hack/lib/image.sh

PULUMI=${PULUMI:-"$ROOT/bin/pulumi"}
export PATH=$ROOT/bin:$PATH
export PULUMI_CONFIG_PASSPHRASE=

$PULUMI login --local

BASE_KUBECONFIG=${VAR_BASE_KUBECONFIG:-"$HOME/.kube/config"}
BASE_CONTEXT=${VAR_BASE_CONTEXT:-"arn:aws:eks:us-west-2:385595570414:cluster/dev-base-us-west-2"}
FREE_TIER_KUBECONFIG=${VAR_KUBECONFIG:-"$HOME/.kube/config"}
FREE_TIER_CONTEXT=${VAR_CONTEXT:-"arn:aws:eks:us-east-1:385595570414:cluster/dev-us-east-1-f01"}

# up mock base stack
MOCK_BASE_CONFIG=${VAR_CACHE_DIR}/Pulumi.mock-base-eks-e2e.yaml
cat << EOF > ${MOCK_BASE_CONFIG}
config:
  mock-base:kubeconfig: ${BASE_KUBECONFIG}
  mock-base:context: ${BASE_CONTEXT}
EOF

$PULUMI stack select mock-base-eks-e2e \
    --create \
    -C $ROOT/cd/projects/mock/base

$PULUMI up \
    --stack mock-base-eks-e2e \
    --yes \
    --config-file ${MOCK_BASE_CONFIG} \
    -C $ROOT/cd/projects/mock/base

# up mock infra api stack
MOCK_INFRA_API_CONFIG=${VAR_CACHE_DIR}/Pulumi.mock-infra-api-eks-e2e.yaml
cat << EOF > ${MOCK_INFRA_API_CONFIG}
config:
  mock-infra-api:base-stack: mock-base-eks-e2e
  mock-infra-api:namespace: infra
  mock-infra-api:admin-secret-name: api-server-admin
  mock-infra-api:infra-api-server-in-cluster-addr: https://api-server.infra:443
  mock-infra-api:infra-api-server-addr: https://us-west-2.infra.shared.aws.tidbcloud.com:443
EOF

$PULUMI stack select mock-infra-api-eks-e2e \
    --create \
    -C $ROOT/cd/projects/mock/infra-api


$PULUMI up \
    --stack mock-infra-api-eks-e2e \
    --yes \
    --config-file ${MOCK_INFRA_API_CONFIG} \
    -C $ROOT/cd/projects/mock/infra-api

# up mock freetier
FREE_TIER_CONFIG=${VAR_CACHE_DIR}/Pulumi.mock-free-tier-eks-e2e.yaml
cat << EOF > ${FREE_TIER_CONFIG}
config:
  mock-free-tier:kubeconfig: ${FREE_TIER_KUBECONFIG}
  mock-free-tier:context: ${FREE_TIER_CONTEXT}
  # mock-free-tier:context: kind-aws-shared-provider
  mock-free-tier:s3-bucket: dev-us-east-1-f01-backup
  mock-free-tier:role-arn: arn:aws:iam::385595570414:role/dev-us-east-1-f01-S3IRSA
  mock-free-tier:dbaas-proxy-host: a7f4ccef66000470f95961b1f5b186f4-cf132d40619cccc0.elb.us-east-1.amazonaws.com
  mock-free-tier:aws-region: us-east-1
  mock-free-tier:aws-account-id: 385595570414
  mock-free-tier:primary-zone: us-east-1a
  mock-free-tier:standby-zone: us-east-1c
  mock-free-tier:primary-subnet: dev-us-east-1-f01-vpc-public-0
  mock-free-tier:standby-subnet: dev-us-east-1-f01-vpc-public-1
  mock-free-tier:cluster-oidc-provider-url: oidc.eks.us-east-1.amazonaws.com/id/2E8A14B5CE2AFABBE364A65692D4675B
  mock-free-tier:cluster-oidc-provider-arn: arn:aws:iam::385595570414:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/2E8A14B5CE2AFABBE364A65692D4675B
  mock-free-tier:regional-redis-host: vpce-fake.vpce-svc-fake.us-east-1.vpce.amazonaws.com
  mock-free-tier:infra-rds-secret-arn: dev-us-east-1-serverless-infra-rds-secret
  mock-free-tier:rds-secret-arn: dev-us-east-1-serverless-rds-secret
EOF

$PULUMI stack select mock-free-tier-eks-e2e \
    --create \
    -C $ROOT/cd/projects/mock/free-tier

$PULUMI up \
    --stack mock-free-tier-eks-e2e \
    --yes \
    --config-file ${FREE_TIER_CONFIG} \
    -C $ROOT/cd/projects/mock/free-tier
