#!/usr/bin/env bash

# Wrapper script for invoking Neo4j backup process
#

set -ex

# Ensure that aws is in the user's path
export PATH=/usr/local/bin:${PATH}
AWS_CLI=$(/usr/bin/which aws)
DOCKER=$(/usr/bin/which docker)
AWS_DEFAULT_REGION='<%= node['neo4j']['backup']['AWS_DEFAULT_REGION'] %>'
ECR_REPOSITORY='<%= node['neo4j']['backup']['ECR_REPOSITORY'] %>'
NEO4J_BACKUP_IMAGE_TAG='<%= node['neo4j']['backup']['NEO4J_BACKUP_IMAGE_TAG'] %>'
Environment='<%= node['neo4j']['backup']['Environment'] %>'

# Logging
LOGGER_DSN='<%= node['neo4j']['backup']['LOGGER_DSN'] %>'

# Neo4j backup variables
HEAP_SIZE='<%= node['neo4j']['backup']['HEAP_SIZE'] %>'
NEO4J_BACKUP_CHECK_CONSISTENCY='<%= node['neo4j']['backup']['NEO4J_BACKUP_CHECK_CONSISTENCY'] %>'
NEO4J_BACKUP_S3_BUCKET='<%= node['neo4j']['backup']['NEO4J_BACKUP_S3_BUCKET'] %>'
NEO4J_BACKUP_KMS_KEY_ID='<%= node['neo4j']['backup']['NEO4J_BACKUP_KMS_KEY_ID'] %>'
NEO4J_BACKUP_S3_PREFIX='<%= node['neo4j']['backup']['NEO4J_BACKUP_S3_PREFIX'] %>'
NEO4J_BACKUP_TIMEOUT=<%= node['neo4j']['backup']['NEO4J_BACKUP_TIMEOUT'] %>

set +x


function download_latest_ecr_image {
  # Pull latest docker image from ECR.

  printf '%s\n' "Pulling latest image from ${ECR_REPOSITORY}:${NEO4J_BACKUP_IMAGE_TAG}"

  if [ -x "${AWS_CLI}" ] &&  [ -x "${DOCKER}" ]; then
    ${AWS_CLI} ecr get-login --no-include-email --region ${AWS_DEFAULT_REGION} | bash
    ${DOCKER} pull "${ECR_REPOSITORY}:${NEO4J_BACKUP_IMAGE_TAG}"
    printf "Successfully pulled latest image"
  else
    printf '%s\n' "awscli or docker not found or executable." && exit 1
  fi
}

function run_docker_container {

  ${DOCKER} run -d \
  -e Environment=${Environment} \
  -e HEAP_SIZE=${HEAP_SIZE} \
  -e LOGGER_DSN=${LOGGER_DSN} \
  -e NEO4J_BACKUP_CHECK_CONSISTENCY=${NEO4J_BACKUP_CHECK_CONSISTENCY} \
  -e NEO4J_BACKUP_S3_BUCKET=${NEO4J_BACKUP_S3_BUCKET} \
  -e NEO4J_BACKUP_KMS_KEY_ID=${NEO4J_BACKUP_KMS_KEY_ID} \
  -e NEO4J_BACKUP_S3_PREFIX=${NEO4J_BACKUP_S3_PREFIX} \
  -e NEO4J_BACKUP_TIMEOUT=${NEO4J_BACKUP_TIMEOUT} \
  "${ECR_REPOSITORY}:${NEO4J_BACKUP_IMAGE_TAG}"
}

download_latest_ecr_image
run_docker_container
