#!/bin/bash

# Modeled closely after flask portion of amazon/aws-eb-python:3.4.2-onbuild-3.5.1 entrypoint script

DATADOG_CONFIG_FILE='/etc/datadog-agent/datadog.yaml'
DATADOG_PATCH_MODULES=requests:true
DATADOG_AWS_REGION='us-east-1'

DD_API_KEY=$(aws secretsmanager get-secret-value --secret-id ${Environment}/datadog/DD_API_KEY --region ${DATADOG_AWS_REGION} --query 'SecretString' --output text)

 # Check for Datadog API key, and run agents if present
if [ -n "${DD_API_KEY}" ]; then
  sed 's/api_key:.*/api_key: '"${DD_API_KEY}"'/' /etc/datadog-agent/datadog.yaml.example > "${DATADOG_CONFIG_FILE}"
  AGENT=$(find /opt -type f -name "agent")
  nohup "${AGENT}" start -c "${DATADOG_CONFIG_FILE}" &
  TRACE_AGENT=$(find /opt -type f -name "trace-agent")
  nohup "${TRACE_AGENT}" -config "${DATADOG_CONFIG_FILE}"&
  DD_TRACE_COMMAND='ddtrace-run'
else
  # Run without Datadog if API key cannot be obtained
  DD_TRACE_COMMAND=''
fi

UWSGI_NUM_PROCESSES='1'
UWSGI_NUM_THREADS='15'
UWSGI_UID='uwsgi'
UWSGI_GID='uwsgi'
UWSGI_LOG_FILE='/var/log/uwsgi/uwsgi.log'
UWSGI_BUFFER_SIZE='12288'

cd /var/app

# Flask support
if cat Pipfile.lock | grep -q -i Flask && [ -z "${WSGI_MODULE}" ]; then
  UWSGI_MODULE='--module application:app'
fi

# defaulting to application.py if not explicitly set
[ -z "${WSGI_PATH}" ] && WSGI_PATH=application.py

${DD_TRACE_COMMAND} pipenv run uwsgi --http :8080 --chdir /var/app --wsgi-file ${WSGI_PATH} ${UWSGI_MODULE} --master --processes ${UWSGI_NUM_PROCESSES} --threads ${UWSGI_NUM_THREADS} --uid ${UWSGI_UID} --gid ${UWSGI_GID} --logto2 ${UWSGI_LOG_FILE} --http-keepalive --buffer-size ${UWSGI_BUFFER_SIZE}
