From 590f29b28a62bda332e6814b0051d957a1696667 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Thu, 29 Apr 2021 13:49:37 +0100 Subject: [PATCH] SQLAlchemy 1.4 requires SQLALCHEMY_DATABASE_URI to use `postgresql` rather than `postgres` for the connection uri to the database. When deploying to paas the database postgres environment variables are set using VCAP_SERVICES provided by PaaS. When we start up the app and set the properties we need to replace the postgres string with postgresql for the app to start up properly. This wasn't caught locally or with the unit tests because we were setting this property with postgresql. --- app/cloudfoundry_config.py | 3 ++- tests/app/test_cloudfoundry_config.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/cloudfoundry_config.py b/app/cloudfoundry_config.py index 9ddc1059d..84af68c74 100644 --- a/app/cloudfoundry_config.py +++ b/app/cloudfoundry_config.py @@ -14,7 +14,8 @@ def extract_cloudfoundry_config(): def set_config_env_vars(vcap_services): # Postgres config - os.environ['SQLALCHEMY_DATABASE_URI'] = vcap_services['postgres'][0]['credentials']['uri'] + os.environ['SQLALCHEMY_DATABASE_URI'] = vcap_services['postgres'][0]['credentials']['uri'].replace('postgres', + 'postgresql') vcap_application = json.loads(os.environ['VCAP_APPLICATION']) os.environ['NOTIFY_ENVIRONMENT'] = vcap_application['space_name'] diff --git a/tests/app/test_cloudfoundry_config.py b/tests/app/test_cloudfoundry_config.py index 2c8b5a71a..6a8a128e4 100644 --- a/tests/app/test_cloudfoundry_config.py +++ b/tests/app/test_cloudfoundry_config.py @@ -37,7 +37,7 @@ def cloudfoundry_environ(os_environ, cloudfoundry_config): def test_extract_cloudfoundry_config_populates_other_vars(cloudfoundry_environ): extract_cloudfoundry_config() - assert os.environ['SQLALCHEMY_DATABASE_URI'] == 'postgres uri' + assert os.environ['SQLALCHEMY_DATABASE_URI'] == 'postgresql uri' assert os.environ['NOTIFY_ENVIRONMENT'] == '🚀🌌' assert os.environ['NOTIFY_LOG_PATH'] == '/home/vcap/logs/app.log'