From fd29ba38fb2abc39339553f50787dfcba5acb2df Mon Sep 17 00:00:00 2001 From: Mark Vrijlandt Date: Thu, 3 Sep 2026 17:02:05 +0200 Subject: [PATCH] pass target database for postgres --- .env.template | 2 ++ .github/workflows/deploy_optimizer_test.yml | 1 + .github/workflows/publish_container_image.yml | 2 +- src/omotes_optimizer_worker/env.py | 5 ++++ .../prefect_deploy_flow.py | 1 + src/omotes_optimizer_worker/prefect_flow.py | 25 +++++++++++-------- 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/.env.template b/.env.template index b68bc97..534b7f2 100644 --- a/.env.template +++ b/.env.template @@ -5,6 +5,8 @@ DB_HOSTNAME=omotes_postgres DB_PORT=6432 DB_USERNAME=omotes_timeseries_rw DB_PASSWORD=somepass4 +# Required when ESDL_OUTPUT_PROFILES_TYPE=POSTGRESQL +PG_DB_TIMESERIES=omotes_timeseries # ESDL_OUTPUT_PROFILES_TYPE=INFLUXDB # DB_HOSTNAME=omotes_influxdb diff --git a/.github/workflows/deploy_optimizer_test.yml b/.github/workflows/deploy_optimizer_test.yml index efdc08d..e2a5726 100644 --- a/.github/workflows/deploy_optimizer_test.yml +++ b/.github/workflows/deploy_optimizer_test.yml @@ -69,6 +69,7 @@ jobs: -e DB_PORT=6432 \ -e DB_USERNAME=omotes_timeseries_rw \ -e DB_PASSWORD \ + -e PG_DB_TIMESERIES=omotes_timeseries \ -e MINIO_HOST=omotes-minio \ -e MINIO_PORT=9000 \ -e MINIO_EXTERNAL_URL \ diff --git a/.github/workflows/publish_container_image.yml b/.github/workflows/publish_container_image.yml index e5e40b5..2a269ed 100644 --- a/.github/workflows/publish_container_image.yml +++ b/.github/workflows/publish_container_image.yml @@ -1,5 +1,5 @@ name: Publish Container Image -run-name: Releasing next version 🚀 +run-name: Publish Container Image on: push: diff --git a/src/omotes_optimizer_worker/env.py b/src/omotes_optimizer_worker/env.py index ec41c9d..14ec334 100644 --- a/src/omotes_optimizer_worker/env.py +++ b/src/omotes_optimizer_worker/env.py @@ -50,6 +50,11 @@ def db_password() -> str: """Return database password.""" return require_env("DB_PASSWORD") + @staticmethod + def pg_db_timeseries() -> str: + """Return PostgreSQL timeseries database name.""" + return os.getenv("PG_DB_TIMESERIES", "omotes_timeseries") + @staticmethod def prefect_api_url_for_worker() -> str: """Return Prefect API URL to be used inside worker.""" diff --git a/src/omotes_optimizer_worker/prefect_deploy_flow.py b/src/omotes_optimizer_worker/prefect_deploy_flow.py index 56cf556..cc68fab 100644 --- a/src/omotes_optimizer_worker/prefect_deploy_flow.py +++ b/src/omotes_optimizer_worker/prefect_deploy_flow.py @@ -39,6 +39,7 @@ async def _build_docker_image(command: list[str], cwd: Path | None = None) -> No "DB_PORT": EnvSettings.db_port(), "DB_USERNAME": EnvSettings.db_username(), "DB_PASSWORD": EnvSettings.db_password(), + "PG_DB_TIMESERIES": EnvSettings.pg_db_timeseries(), "MINIO_HOST": EnvSettings.minio_host(), "MINIO_PORT": EnvSettings.minio_port(), "MINIO_EXTERNAL_URL": EnvSettings.minio_external_url(), diff --git a/src/omotes_optimizer_worker/prefect_flow.py b/src/omotes_optimizer_worker/prefect_flow.py index d4bbb1b..0effeaf 100644 --- a/src/omotes_optimizer_worker/prefect_flow.py +++ b/src/omotes_optimizer_worker/prefect_flow.py @@ -102,16 +102,11 @@ def optimizer_flow( ) esdl_output_profiles_type = ESDLOutputProfilesType.POSTGRESQL - logging.info( - "Will write result profiles to '%s' database at %s:%s", - esdl_output_profiles_type_str, - db_host, - db_port, - ) - - database_connection = [] + pg_db_timeseries = None + if esdl_output_profiles_type == ESDLOutputProfilesType.POSTGRESQL: + pg_db_timeseries = EnvSettings.pg_db_timeseries() - database_connection.append({ + db_connection = { "access_type": DBAccessType.READ_WRITE, "host": db_host, "port": db_port, @@ -119,7 +114,17 @@ def optimizer_flow( "password": db_password, "ssl": False, "verify_ssl": False, - }) + } + + msg = f"Will write result profiles to '{esdl_output_profiles_type_str}' database at {db_host}:{db_port}" + + if pg_db_timeseries: + db_connection["database"] = pg_db_timeseries + msg += f"/{db_connection['database']}" + + logging.info(msg) + + database_connection = [db_connection] esdl_messages: list[EsdlMessage] = []