Simplified the config. Aim is to get the actual secrets in credstash to be env specific, and not the random collection of things we have at the moment.

Secret definition also includes env specific things such as URLs / Queue prefixes / URLs for providers and so on.
This commit is contained in:
Martyn Inglis
2016-09-07 09:35:31 +01:00
parent 727c00af21
commit c1b00a5f0c
5 changed files with 91 additions and 71 deletions

View File

@@ -20,31 +20,19 @@ Create a local environment.sh file containing the following:
```
echo "
export NOTIFY_ENVIRONMENT='development'
export ADMIN_BASE_URL='http://localhost:6012'
export ADMIN_CLIENT_USER_NAME='dev-notify-admin'
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
export API_HOST_NAME='http://localhost:6011'
export AWS_REGION='eu-west-1'
export AWS_ACCESS_KEY_ID=[MY ACCESS KEY]
export AWS_SECRET_ACCESS_KEY=[MY SECRET]
export DANGEROUS_SALT='dev-notify-salt'
export FIRETEXT_API_KEY=[contact team member for api key]
export FROM_NUMBER='40605'
export INVITATION_EMAIL_FROM='invites'
export INVITATION_EXPIRATION_DAYS=2
export MMG_API_KEY=mmg=secret-key
export MMG_URL="https://api.mmg.co.uk/json/api.php"
export NOTIFICATION_QUEUE_PREFIX='[unique-to-environment]' #
export NOTIFY_EMAIL_DOMAIN='notify.tools'
export SECRET_KEY='dev-notify-secret-key'
export SQLALCHEMY_DATABASE_URI='postgresql://localhost/notification_api'
export STATSD_ENABLED=True
export STATSD_HOST="localhost"
export STATSD_PORT=1000
export STATSD_PREFIX="stats-prefix"
export SECRET_KEY='secret-key'
export DANGEROUS_SALT='dangerous-salt'
export NOTIFY_ENVIRONMENT="development"
export ADMIN_CLIENT_SECRET='notify-secret-key'
export ADMIN_BASE_URL='http://localhost:6012'
export FROM_NUMBER='development'
export MMG_URL="https://api.mmg.co.uk/json/api.php"
export MMG_API_KEY='MMG_API_KEY'
export LOADTESTING_API_KEY="FIRETEXT_SIMULATION_KEY"
export FIRETEXT_API_KEY="FIRETEXT_ACTUAL_KEY"
export STATSD_PREFIX="FAKE_PREFIX"
export NOTIFICATION_QUEUE_PREFIX="PREFIX-TO-IDENTIFY-SQS-QUEUE"
"> environment.sh
```

View File

@@ -41,7 +41,6 @@ def create_app(app_name=None):
from config import configs
application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])
if app_name:
application.config['NOTIFY_APP_NAME'] = app_name

View File

@@ -5,27 +5,61 @@ import os
class Config(object):
DEBUG = False
########################################
# Secrets that are held in credstash ###
########################################
# URL of admin app
ADMIN_BASE_URL = os.environ['ADMIN_BASE_URL']
ADMIN_CLIENT_USER_NAME = os.environ['ADMIN_CLIENT_USER_NAME']
# admin app api key
ADMIN_CLIENT_SECRET = os.environ['ADMIN_CLIENT_SECRET']
AWS_REGION = os.environ['AWS_REGION']
# encyption secret/salt
SECRET_KEY = os.environ['SECRET_KEY']
DANGEROUS_SALT = os.environ['DANGEROUS_SALT']
INVITATION_EXPIRATION_DAYS = int(os.environ['INVITATION_EXPIRATION_DAYS'])
INVITATION_EMAIL_FROM = os.environ['INVITATION_EMAIL_FROM']
# DB conection string
SQLALCHEMY_DATABASE_URI = os.environ['SQLALCHEMY_DATABASE_URI']
# MMG API Url
MMG_URL = os.environ['MMG_URL']
# MMG API Key
MMG_API_KEY = os.environ['MMG_API_KEY']
# Firetext API Key
FIRETEXT_API_KEY = os.getenv("FIRETEXT_API_KEY")
# Firetext simluation key
LOADTESTING_API_KEY = os.getenv("LOADTESTING_API_KEY")
# Hosted graphite statsd prefix
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
# Prefix to identify queues in SQS
NOTIFICATION_QUEUE_PREFIX = os.getenv('NOTIFICATION_QUEUE_PREFIX')
###########################
# Default config values ###
###########################
DEBUG = False
NOTIFY_ENVIRONMENT = 'development'
ADMIN_CLIENT_USER_NAME = 'notify-admin'
AWS_REGION = 'eu-west-1'
INVITATION_EXPIRATION_DAYS = 2
INVITATION_EMAIL_FROM = 'no-reply'
NOTIFY_APP_NAME = 'api'
NOTIFY_LOG_PATH = '/var/log/notify/application.log'
# Notification Queue names are a combination of a prefix plus a name
NOTIFICATION_QUEUE_PREFIX = os.environ['NOTIFICATION_QUEUE_PREFIX']
SECRET_KEY = os.environ['SECRET_KEY']
NOTIFICATION_QUEUE_PREFIX = 'development'
SQLALCHEMY_COMMIT_ON_TEARDOWN = False
SQLALCHEMY_DATABASE_URI = os.environ['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_RECORD_QUERIES = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
NOTIFY_EMAIL_DOMAIN = os.environ['NOTIFY_EMAIL_DOMAIN']
NOTIFY_EMAIL_DOMAIN = 'notify.tools'
PAGE_SIZE = 50
SMS_CHAR_COUNT_LIMIT = 495
MMG_URL = os.environ['MMG_URL']
BRANDING_PATH = '/static/images/email-template/crests/'
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
@@ -37,10 +71,10 @@ class Config(object):
BROKER_URL = 'sqs://'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
'region': AWS_REGION,
'polling_interval': 1, # 1 second
'visibility_timeout': 14410, # 4 hours 10 seconds. 10 seconds longer than max retry
'queue_name_prefix': os.environ['NOTIFICATION_QUEUE_PREFIX'] + '-'
'queue_name_prefix': NOTIFICATION_QUEUE_PREFIX
}
CELERY_ENABLE_UTC = True,
CELERY_TIMEZONE = 'Europe/London'
@@ -96,26 +130,26 @@ class Config(object):
Queue('retry', Exchange('default'), routing_key='retry'),
Queue('email-already-registered', Exchange('default'), routing_key='email-already-registered')
]
API_HOST_NAME = os.environ['API_HOST_NAME']
MMG_API_KEY = os.environ['MMG_API_KEY']
FIRETEXT_API_KEY = os.getenv("FIRETEXT_API_KEY")
LOADTESTING_NUMBER = os.getenv('LOADTESTING_NUMBER')
LOADTESTING_API_KEY = os.getenv("LOADTESTING_API_KEY")
CSV_UPLOAD_BUCKET_NAME = os.getenv("CSV_UPLOAD_BUCKET_NAME")
API_HOST_NAME = "http://localhost:6011"
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
NOTIFICATIONS_ALERT = 5 # five mins
FROM_NUMBER = os.getenv('FROM_NUMBER')
FROM_NUMBER = 'development'
STATSD_ENABLED = False
STATSD_HOST = "statsd.hostedgraphite.com"
STATSD_PORT = 8125
STATSD_PREFIX = None
SENDING_NOTIFICATIONS_TIMEOUT_PERIOD = 259200
######################
# Config overrides ###
######################
class Development(Config):
NOTIFY_ENVIRONMENT = 'development'
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
NOTIFICATION_QUEUE_PREFIX = 'development'
DEBUG = True
SQLALCHEMY_ECHO = False
CELERY_QUEUES = Config.CELERY_QUEUES + [
@@ -127,10 +161,14 @@ class Development(Config):
class Test(Config):
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
FROM_NUMBER = 'testing'
NOTIFY_ENVIRONMENT = 'test'
DEBUG = True
CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload'
STATSD_PREFIX = "test"
STATSD_ENABLED = True
STATSD_HOST = "localhost"
STATSD_PORT = 1000
CELERY_QUEUES = Config.CELERY_QUEUES + [
Queue('db-sms', Exchange('default'), routing_key='db-sms'),
Queue('send-sms', Exchange('default'), routing_key='send-sms'),
@@ -140,23 +178,29 @@ class Test(Config):
class Preview(Config):
NOTIFY_EMAIL_DOMAIN = 'notify.works'
NOTIFY_ENVIRONMENT = 'preview'
CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload'
STATSD_PREFIX = "preview"
API_HOST_NAME = 'http://admin-api.internal'
FROM_NUMBER = 'NotifyPreview'
class Staging(Config):
NOTIFY_EMAIL_DOMAIN = 'staging-notify.works'
NOTIFY_ENVIRONMENT = 'staging'
CSV_UPLOAD_BUCKET_NAME = 'staging-notify-csv-upload'
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
STATSD_ENABLED = True
API_HOST_NAME = 'http://admin-api.internal'
FROM_NUMBER = 'NotifyStage'
class Live(Config):
NOTIFY_EMAIL_DOMAIN = 'notifications.service.gov.uk'
NOTIFY_ENVIRONMENT = 'live'
CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload'
STATSD_PREFIX = os.getenv('STATSD_PREFIX')
STATSD_ENABLED = True
API_HOST_NAME = 'http://admin-api.internal'
FROM_NUMBER = '40604'
configs = {

View File

@@ -1,24 +1,13 @@
#!/bin/bash
export NOTIFY_ENVIRONMENT='test'
export ADMIN_BASE_URL='http://localhost:6012'
export ADMIN_CLIENT_USER_NAME='dev-notify-admin'
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
export AWS_REGION='eu-west-1'
export DANGEROUS_SALT='dangerous-salt'
export INVITATION_EMAIL_FROM='invites'
export INVITATION_EXPIRATION_DAYS=2
export NOTIFICATION_QUEUE_PREFIX='test-env-not-used'
export SECRET_KEY='secret-key'
export SQLALCHEMY_DATABASE_URI=${TEST_DATABASE:='postgresql://localhost/test_notification_api'}
export FIRETEXT_API_KEY="Firetext"
export NOTIFY_EMAIL_DOMAIN="test.notify.com"
export MMG_API_KEY='mmg-secret-key'
export LOADTESTING_API_KEY="loadtesting"
export LOADTESTING_NUMBER="loadtesting"
export STATSD_ENABLED=True
export STATSD_HOST="localhost"
export STATSD_PORT=1000
export STATSD_PREFIX="stats-prefix"
export API_HOST_NAME="http://localhost:6011"
export SECRET_KEY='secret-key'
export DANGEROUS_SALT='dangerous-salt'
export NOTIFY_ENVIRONMENT='test'
export ADMIN_CLIENT_SECRET='dev-notify-secret-key'
export ADMIN_BASE_URL='http://localhost:6012'
export FROM_NUMBER='from_number'
export MMG_URL="https://api.mmg.co.uk/json/api.php"
export MMG_API_KEY='mmg-secret-key'
export LOADTESTING_API_KEY="loadtesting"
export FIRETEXT_API_KEY="Firetext"
export STATSD_PREFIX="stats-prefix"

View File

@@ -60,7 +60,7 @@ def test_send_sms_calls_mmg_correctly(notify_api, mocker):
assert request_args['reqType'] == 'BULK'
assert request_args['MSISDN'] == to
assert request_args['msg'] == content
assert request_args['sender'] == 'from_number'
assert request_args['sender'] == 'testing'
assert request_args['cid'] == reference
assert request_args['multi'] is True