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

pulumi login --cloud-url=s3://dev-eks-provider-pulumi-storage-backend/"${PROJECT}"

# Pulumi up apiserver stack
pulumi stack select "${PULUMI_STACK}"-apiserver -c -C pulumi/apiserver
pulumi config set infra-api:infra-namespace "${NS}" --stack "${PULUMI_STACK}"-apiserver -C pulumi/apiserver
pulumi config set aws:region us-west-2 -C pulumi/apiserver
# cert-manager already installed in base cluster
pulumi config set infra-api:install-cert-manager false --stack "${PULUMI_STACK}"-apiserver -C pulumi/apiserver
aws eks --region us-west-2 update-kubeconfig --name dev-base-us-west-2 --kubeconfig pulumi/apiserver/kubeconfig
pulumi up --stack "${PULUMI_STACK}"-apiserver --yes -C pulumi/apiserver --skip-preview 
pulumi stack output infraPublicKubeconfig --stack "${PULUMI_STACK}"-apiserver --show-secrets > kubeconfig

# Pulumi up crossplane stack
pulumi stack select "${PULUMI_STACK}"-crossplane -c -C pulumi/crossplane
aws eks --region us-west-2 update-kubeconfig --name dev-base-us-west-2 --kubeconfig pulumi/crossplane/kubeconfig
pulumi config set infra-api:provider-aws-tag v0.20.18 --stack "${PULUMI_STACK}"-crossplane -C pulumi/crossplane
pulumi config set infra-api:aws-provider-image gcr.io/pingcap-public/crossplane/provider-aws:v0.20.18 --stack "${PULUMI_STACK}"-crossplane -C pulumi/crossplane
pulumi config set infra-api:AWS_ACCESS_KEY_ID "" --stack "${PULUMI_STACK}"-crossplane -C pulumi/crossplane
pulumi config set infra-api:AWS_SECRET_ACCESS_KEY "" --stack "${PULUMI_STACK}"-crossplane -C pulumi/crossplane
pulumi config set infra-api:apiserver-stack "${PULUMI_STACK}"-apiserver --stack "${PULUMI_STACK}"-crossplane -C pulumi/crossplane
pulumi up --stack "${PULUMI_STACK}"-crossplane --yes -C pulumi/crossplane --skip-preview -p 2

# Setup eks-provider
KUBECONFIG=kubeconfig kubectl apply -f pulumi/eks-provider/bases/
KUBECONFIG=kubeconfig kubectl apply -f pulumi/eks-provider/manifests/crd.yaml
KUBECONFIG=kubeconfig kubectl apply -f pulumi/eks-provider/manifests/
