#!/bin/bash

set -eux

FLEET_COMMAND_TAG=${FLEET_COMMAND_TAG:-v64}
POD_NAME="helm-mapkubeapis"

kubectl delete po --ignore-not-found=true "$POD_NAME"

kubectl create secret \
  docker-registry \
  -o yaml --dry-run=client \
  --docker-server=quay.io \
  --docker-username="$QUAY_USERNAME" \
  --docker-password="$QUAY_PASSWORD" \
  --docker-email=. domino-quay-repos | kubectl apply -f -

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin
  namespace: default
---
apiVersion: v1
kind: Pod
metadata:
  name: $POD_NAME
spec:
  serviceAccountName: admin
  imagePullSecrets:
    - name: domino-quay-repos
  restartPolicy: Never
  containers:
  - name: $POD_NAME
    image: quay.io/domino/fleetcommand-agent:$FLEET_COMMAND_TAG
    command: 
      - /bin/bash
      - -ec
      - |
        mapkubeapis() {
          label=\$1
          ns=\$(kubectl get ns -l "\$label" --no-headers -o custom-columns=':metadata.name')
          for r in \$(helm list --all --short -n "\$ns"); do
            helm mapkubeapis -n "\$ns" "\$r"
          done
        }

        mapkubeapis "domino-compute=true"
        mapkubeapis "domino-platform=true"
    imagePullPolicy: Always
EOF

set +e
while true; do
  sleep 5
  if kubectl logs -f $POD_NAME; then
    break
  fi
done
