apiVersion: v1
kind: ConfigMap
metadata:
  name: mongo-init
data:
  init.sh: |
    #!/bin/bash

    # Trzeba poczekać na przejście kontroli działania, żeby rozwiązane zostały
    # nazwy mongo. To nie jest najlepsze rozwiązanie.
    until ping -c 1 ${HOSTNAME}.mongo; do
      echo "czekanie na DNS (${HOSTNAME}.mongo)..."
      sleep 2
    done

    until /usr/bin/mongo --eval 'printjson(db.serverStatus())'; do
      echo "łączenie z lokalnym mongo..."
      sleep 2
    done
    echo "połączono z local."

    HOST=mongo-0.mongo:27017

    until /usr/bin/mongo --host=${HOST} --eval 'printjson(db.serverStatus())'; do
      echo "łączenie ze zdalnym mongo..."
      sleep 2
    done
    echo "połączono z remote."

    if [[ "${HOSTNAME}" != 'mongo-0' ]]; then
      until /usr/bin/mongo --host=${HOST} --eval="printjson(rs.status())" \
            | grep -v "nie otrzymano konfiguracji replset"; do
        echo "oczekiwanie, że replikacja ustawi inicjowanie"
        sleep 2
      done
      echo "dodawanie siebie do mongo-0"
      /usr/bin/mongo --host=${HOST} \
         --eval="printjson(rs.add('${HOSTNAME}.mongo'))"
    fi

    if [[ "${HOSTNAME}" == 'mongo-0' ]]; then
      echo "inicjowanie zestawu replik"
      /usr/bin/mongo --eval="printjson(rs.initiate(\
          {'_id': 'rs0', 'members': [{'_id': 0, \
           'host': 'mongo-0.mongo:27017'}]}))"
    fi
    echo "zainicjowano"

    while true; do
      sleep 3600
    done
