#!/usr/bin/env bash

UAA_DOCKER_IMAGE=${UAA_DOCKER_IMAGE:-cloudfoundry/uaa:75.21.0}

ensure_uaa() {
  if docker ps | grep uaa &> /dev/null; then
     print "uaa already running ..."
 else
   start_uaa
 fi
}
init_uaa() {
  UAA_CONFIG_PATH=${UAA_CONFIG_PATH:-oauth/uaa}
  UAA_CONFIG_DIR=$(realpath ${TEST_DIR}/${UAA_CONFIG_PATH})

  print "> UAA_CONFIG_DIR: ${UAA_CONFIG_DIR}"
  print "> UAA_URL: ${UAA_URL}"
  print "> UAA_DOCKER_IMAGE: ${UAA_DOCKER_IMAGE}"
  
  generate-ca-server-client-kpi uaa $UAA_CONFIG_DIR
  generate-server-keystore-if-required uaa $UAA_CONFIG_DIR
}
start_uaa() {
  begin "Starting UAA ..."

  init_uaa
  kill_container_if_exist uaa 

  MOUNT_UAA_CONF_DIR=$CONF_DIR/uaa

  mkdir -p $MOUNT_UAA_CONF_DIR
  cp ${UAA_CONFIG_DIR}/* $MOUNT_UAA_CONF_DIR
  ${BIN_DIR}/gen-uaa-yml ${UAA_CONFIG_DIR} $ENV_FILE $MOUNT_UAA_CONF_DIR/uaa.yml
  print "> EFFECTIVE UAA_CONFIG_FILE: $MOUNT_UAA_CONF_DIR/uaa.yml"

  docker run \
    --detach \
    --name uaa \
    --net ${DOCKER_NETWORK} \
    --publish 8443:8443 \
    -v ${MOUNT_UAA_CONF_DIR}:/uaa \
    -v ${UAA_CONFIG_DIR}/server.xml:/layers/paketo-buildpacks_apache-tomcat/catalina-base/conf/server.xml \
    --env UAA_CONFIG_PATH="/uaa" \
    --env JAVA_OPTS="-Djava.security.policy=unlimited -Djava.security.egd=file:/dev/./urandom" \
    ${UAA_DOCKER_IMAGE}
   
  wait_for_message uaa "Server startup in" 20 10
  wait_for_oidc_endpoint uaa $UAA_URL $MOUNT_UAA_CONF_DIR/ca_uaa_certificate.pem
  end "UAA is ready"
}
