#!/bin/bash

# Generate the configmaps used for Prometheus and Thanos.

set -e -x

# Setup.
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
OUT_DIR="${1:-$(pwd)}"
echo "writing output to ${OUT_DIR}"
mkdir -p ${OUT_DIR}/skia-public
mkdir -p ${OUT_DIR}/skia-corp
mkdir -p ${OUT_DIR}/skia-infra-public-dev

# skia-public/thanos-rules.yml
TMP_DIR="$(mktemp -d)"
cp ${SCRIPT_DIR}/prometheus/alerts_*.yml ${TMP_DIR}
cp ${SCRIPT_DIR}/prometheus/absent_alerts_*.yml ${TMP_DIR}
cp ${SCRIPT_DIR}/prometheus/*_rules.yml ${TMP_DIR}
kubectl create configmap thanos-rules --from-file=${TMP_DIR} -o yaml --dry-run=client > ${OUT_DIR}/skia-public/thanos-rules.yml

# skia-public/prometheus-server-conf.yml
TMP_DIR="$(mktemp -d)"
cp ${SCRIPT_DIR}/prometheus/prometheus-public.yml ${TMP_DIR}/prometheus.yml
cp ${SCRIPT_DIR}/prometheus/alerts_thanos.yml ${TMP_DIR}
cp ${SCRIPT_DIR}/prometheus/absent_alerts_thanos.yml ${TMP_DIR}
kubectl create configmap prometheus-server-conf --from-file=${TMP_DIR} -o yaml --dry-run=client > ${OUT_DIR}/skia-public/prometheus-server-conf.yml

# skia-corp/prometheus-server-conf.yml
TMP_DIR="$(mktemp -d)"
cp ${SCRIPT_DIR}/prometheus/prometheus-corp.yml ${TMP_DIR}/prometheus.yml
kubectl create configmap prometheus-server-conf --from-file=${TMP_DIR} -o yaml --dry-run=client > ${OUT_DIR}/skia-corp/prometheus-server-conf.yml

# skia-infra-public-dev/prometheus-server-conf.yml
TMP_DIR="$(mktemp -d)"
cp ${SCRIPT_DIR}/prometheus/prometheus-skia-infra-public-dev.yml ${TMP_DIR}/prometheus.yml
kubectl create configmap prometheus-server-conf --namespace=prometheus --from-file=${TMP_DIR} -o yaml --dry-run=client > ${OUT_DIR}/skia-infra-public-dev/prometheus-server-conf.yml
