Skip to content

Instantly share code, notes, and snippets.

@jameswnl
Last active February 2, 2023 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jameswnl/b6e6038aafef2dc3ae67e59b20180599 to your computer and use it in GitHub Desktop.
Save jameswnl/b6e6038aafef2dc3ae67e59b20180599 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -o errexit
set -o pipefail
######### postgres_ready #########
postgres_ready() {
python << END
import logging
import os
import sys
import psycopg2
from app.configurator import APP_CONFIG
try:
check_db = 'tenants'
if os.getenv('APP') == 'migrations':
check_db = APP_CONFIG['POSTGRESQL_DATABASE']
print(f'Checking for database {check_db}')
psycopg2.connect(
dbname=check_db,
user=APP_CONFIG['POSTGRESQL_USER'],
password=APP_CONFIG['POSTGRESQL_PASSWORD'],
host=APP_CONFIG['POSTGRESQL_HOST'],
port=APP_CONFIG['POSTGRESQL_PORT'],
)
sys.exit(0)
except psycopg2.OperationalError:
logging.getLogger().exception(f"Failed connecting to db {check_db}")
sys.exit(-1)
END
}
######### kafka_ready #########
kafka_ready() {
python << END
import logging
import sys
from kafka import KafkaConsumer
from tower_analytics_report.configurator import APP_CONFIG
try:
kafka_url = f"{APP_CONFIG['KAFKA_HOST']}:{APP_CONFIG['KAFKA_PORT']}"
configs = dict(bootstrap_servers=[kafka_url], api_version=APP_CONFIG['KAFKA_API_VERSION'])
c = KafkaConsumer(**configs)
c.close()
except Exception:
logging.getLogger().exception(f"Failed connecting to kafka {kafka_url}")
sys.exit(-1)
sys.exit(0)
END
}
##################################
if [ -n "${POSTGRESQL_HOST}" ] || [ -n "$ACG_CONFIG" ]; then
until postgres_ready; do
>&2 echo 'Waiting for PostgreSQL to become available...'
sleep 1
done
>&2 echo 'PostgreSQL is available'
fi
if [ -n "${KAFKA_HOST}" ] || [ -n "$ACG_CONFIG" ]; then
until kafka_ready; do
>&2 echo 'Waiting for Kafka to become available...'
sleep 1
done
>&2 echo 'Kafka is available'
fi
export PYTHONPATH="${PYTHONPATH}:/app"
exec "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment