Add support for migrating to Redis on PaaS

Similarly to https://github.com/alphagov/notifications-api/pull/3508
This commit is contained in:
Ben Thorner
2022-04-12 16:48:38 +01:00
parent 1bed87b67d
commit 339ca93d9b
2 changed files with 30 additions and 2 deletions

View File

@@ -8,6 +8,12 @@ import os
def extract_cloudfoundry_config():
vcap_services = json.loads(os.environ['VCAP_SERVICES'])
# Redis config
if 'redis' in vcap_services:
os.environ['REDIS_URL'] = vcap_services['redis'][0]['credentials']['uri']
vcap_application = json.loads(os.environ.get('VCAP_APPLICATION'))
os.environ['NOTIFY_ENVIRONMENT'] = vcap_application['space_name']
os.environ['NOTIFY_LOG_PATH'] = '/home/vcap/logs/app.log'

View File

@@ -1,3 +1,4 @@
import json
import os
import pytest
@@ -6,12 +7,33 @@ from app.cloudfoundry_config import extract_cloudfoundry_config
@pytest.fixture
def cloudfoundry_environ(os_environ):
def cloudfoundry_config():
return {
'redis': [{
'credentials': {
'uri': 'redis uri'
}
}],
}
@pytest.fixture
def vcap_application(os_environ):
os.environ['VCAP_APPLICATION'] = '{"space_name":"🚀🌌"}'
def test_extract_cloudfoundry_config_populates_other_vars(cloudfoundry_environ):
def test_extract_cloudfoundry_config_populates_other_vars(vcap_application, cloudfoundry_config):
os.environ['VCAP_SERVICES'] = json.dumps(cloudfoundry_config)
extract_cloudfoundry_config()
assert os.environ['REDIS_URL'] == 'redis uri'
assert os.environ['NOTIFY_ENVIRONMENT'] == '🚀🌌'
assert os.environ['NOTIFY_LOG_PATH'] == '/home/vcap/logs/app.log'
def test_set_config_env_vars_copes_if_redis_not_set(vcap_application, cloudfoundry_config):
del cloudfoundry_config['redis']
os.environ['VCAP_SERVICES'] = json.dumps(cloudfoundry_config)
extract_cloudfoundry_config()
assert 'REDIS_URL' not in os.environ