From 64f0213e305dd7fcd74a93660371c6152ffd8fa1 Mon Sep 17 00:00:00 2001 From: Colin Seymour Date: Thu, 18 Jul 2024 16:20:36 +0100 Subject: [PATCH] Fix database check and creation (#23) * Refactor db check and create * Make exit more accurate --- services/nginx/finish | 13 +++++++++---- services/teslamate/finish | 10 ++++++++-- services/teslamate/run | 23 ++++++++++------------- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/services/nginx/finish b/services/nginx/finish index 546dcbb..0c2a5e3 100644 --- a/services/nginx/finish +++ b/services/nginx/finish @@ -2,8 +2,13 @@ # -*- bash -*- # shellcheck shell=bash if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then - bashio::log.warning "Nginx crashed, halting add-on" + case "${1}" in + 1) + bashio::log.error "Nginx encountered an error, halting add-on" + ;; + *) + bashio::log.error "Nginx crashed, halting add-on" + ;; + esac /run/s6/basedir/bin/halt -fi - -bashio::log.info "Nginx stopped, restarting..." \ No newline at end of file +fi \ No newline at end of file diff --git a/services/teslamate/finish b/services/teslamate/finish index b62c3fc..70844de 100644 --- a/services/teslamate/finish +++ b/services/teslamate/finish @@ -2,8 +2,14 @@ # -*- bash -*- # shellcheck shell=bash if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then - bashio::log.warning "TeslaMate crashed, halting add-on" + case "${1}" in + 1) + bashio::log.error "TeslaMate encountered an error, halting add-on" + ;; + *) + bashio::log.error "TeslaMate crashed, halting add-on" + ;; + esac /run/s6/basedir/bin/halt fi -bashio::log.info "TeslaMate stopped, restarting..." \ No newline at end of file diff --git a/services/teslamate/run b/services/teslamate/run index 6df47ed..e5d9bd0 100644 --- a/services/teslamate/run +++ b/services/teslamate/run @@ -51,23 +51,20 @@ fi # Create the PostgreSQL database if it doesn't exist if pg_isready -h "$DATABASE_HOST" -p "$DATABASE_PORT" > /dev/null 2>&1; then - bashio::log.info "Creating database $DATABASE_NAME on $DATABASE_HOST" + bashio::log.info "Creating database '$DATABASE_NAME' on $DATABASE_HOST" - res=$(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -c "CREATE DATABASE $DATABASE_NAME" 2>&1) || true - case "$res" in - "CREATE DATABASE") + if [[ -n $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "\list $DATABASE_NAME") ]]; then + bashio::log.info "Database $DATABASE_NAME already exists" + else + if PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -qc "CREATE DATABASE \"$DATABASE_NAME\""; then bashio::log.info "Database $DATABASE_NAME created" - ;; - *"already exists"*) - bashio::log.info "Database $DATABASE_NAME already exists" - ;; - *) - bashio::log.error "Failed to create database $DATABASE_NAME: $res" + else + bashio::log.error "Failed to create database $DATABASE_NAME" exit 1 - ;; - esac + fi + fi else - bashio::log.error "PostgreSQL is not ready" + bashio::log.error "PostgreSQL at '$DATABASE_HOST' is not ready or unreachable" exit 1 fi