#!/bin/bash

# Check for redis secret env var
if [ -z "$REDIS_PASSWORD" ]; then
  echo "REDIS_PASSWORD is not set"
  exit 1
fi

eksctl create cluster -f ./eksctl.yaml

kubectl create -f ./nvidia-device-plugin.yml
kubectl create -f ./karpenter.yaml
kubectl create -f ./ingress.yaml
# kubectl create secret generic huggingface-secret --from-literal=HUGGING_FACE_HUB_TOKEN=<your_token>

aws iam create-policy \
    --policy-name AWSLoadBalancerControllerIAMPolicy \
    --policy-document file://iam-policy.json

eksctl create iamserviceaccount \
  --cluster=gpu-autoscaling-cluster7 \
  --namespace=kube-system \
  --name=aws-load-balancer-controller \
  --attach-policy-arn=arn:aws:iam::596381348884:policy/AWSLoadBalancerControllerIAMPolicy \
  --override-existing-serviceaccounts \
  --region us-east-1 \
  --approve

# EFS CSI driver
# Also in the eksctl.yaml file
# eksctl create iamserviceaccount \
#   --name efs-csi-controller-sa \
#   --namespace kube-system \
#   --cluster gpu-autoscaling-cluster7 \
#   --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
#   --approve \
#   --region us-east-1

# eksctl create addon --name aws-efs-csi-driver --cluster gpu-autoscaling-cluster7 --service-account-role-arn arn:aws:iam::596381348884:role/AmazonEKS_EFS_CSI_DriverRole --force

# Still need to create the storage class object and the efs drive

helm repo add eks https://aws.github.io/eks-charts
helm repo update

kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

# Install cert manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.0/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io --force-update
kubectl create ns cert-manager
helm install cert-manager --namespace cert-manager --version v1.16.0 jetstack/cert-manager

helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system -f ingress_values.yaml

# Install Kueue
kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.10.1/manifests.yaml


kubectl create secret generic redis-secret \
  --namespace orign \
  --from-literal=password="${REDIS_PASSWORD}"


export OPENMETER_URL=https://openmeter.cloud
export OPENMETER_TOKEN="change-me"

helm install --wait --create-namespace \
  --namespace openmeter-collector \
  --set preset=kubernetes-pod-exec-time \
  --set openmeter.url=https://openmeter.cloud \
  --set openmeter.token="${OPENMETER_TOKEN}" \
  --set env.SCRAPE_NAMESPACE="orign" \
  --set env.DEBUG="true" \
  openmeter-collector oci://ghcr.io/openmeterio/helm-charts/benthos-openmeter
