#!/bin/bash

DOCKER=docker
SCRIPT_PATH=$(readlink -f $0)
GRAFYAML_DIR=$(dirname $SCRIPT_PATH)
SECRETS_DIR=${GRAFYAML_DIR}/grafana-secrets

if [ ! -d ${SECRETS_DIR} ]; then
    mkdir -p ${SECRETS_DIR}
    echo "password" > ${SECRETS_DIR}/admin_password
    echo "admin" > ${SECRETS_DIR}/admin_user
    echo "key" > ${SECRETS_DIR}/secret_key

fi

if [[ $(${DOCKER} ps -f "name=grafana-opendev_test" --format '{{.Names}}') \
        != 'grafana-opendev_test' ]]; then

    echo "Running Grafana"

    ${DOCKER} run -d --rm \
            --name grafana-opendev_test \
            -p 3000:3000 \
            -v ${SECRETS_DIR}:/etc/grafana/secrets \
            -e GF_AUTH_ANONYMOUS_ENABLED=true \
            -e GF_USER_ALLOW_SIGN_UP=false \
            -e GF_SECURITY_ADMIN_PASSWORD__FILE=/etc/grafana/secrets/admin_password \
            -e GF_SECURITY_ADMIN_USER__FILE=/etc/grafana/secrets/admin_user \
            -e GF_SECURITY_SECRET_KEY__FILE=/etc/grafana/secrets/secret_key \
            docker.io/grafana/grafana-oss

    echo "Grafana listening on :3000"
    echo -n "Waiting for startup ."
    until $(curl --output /dev/null --silent --head --fail http://localhost:3000); do
        echo -n '.'
        sleep 2
    done
    echo ". done"
fi

echo "Pulling grafyaml"
${DOCKER} pull docker.io/opendevorg/grafyaml

echo "Reloading dashboards"

${DOCKER} run --rm --network=host \
          -e 'GRAFANA_URL=http://admin:password@localhost:3000' \
          -v ${GRAFYAML_DIR}:/grafana:ro \
          docker.io/opendevorg/grafyaml