mirror of
https://github.com/GSA/notifications-api.git
synced 2026-05-14 21:18:41 -04:00
We want to have different workers for sending out email and sending out sms. This will enable us to better rate limit ourselves when sending to our providers. For example, we can make sure we only have capacity in the email worker to send at our rate of 500rps to SES. Note, we may in due time need to split the sms sender worker into two different workers, one for each provider. A separate PR will come after this to remove the unsplit `notify-delivery-worker-sender`.
150 lines
4.9 KiB
Django/Jinja
150 lines
4.9 KiB
Django/Jinja
{%- set app_vars = {
|
|
'notify-api': {
|
|
'NOTIFY_APP_NAME': 'api',
|
|
'disk_quota': '2G',
|
|
'sqlalchemy_pool_size': 30,
|
|
'additional_env_vars': {
|
|
'STATSD_HOST': None
|
|
},
|
|
'routes': {
|
|
'preview': ['api.notify.works'],
|
|
'staging': ['api.staging-notify.works'],
|
|
'production': ['api.notifications.service.gov.uk'],
|
|
},
|
|
'health-check-type': 'port',
|
|
'health-check-invocation-timeout': 3,
|
|
'instances': {
|
|
'preview': None,
|
|
'staging': None,
|
|
'production': 25
|
|
},
|
|
},
|
|
|
|
'notify-api-sms-callbacks': {
|
|
'NOTIFY_APP_NAME': 'api',
|
|
'disk_quota': '2G',
|
|
'additional_env_vars': {
|
|
'STATSD_HOST': None
|
|
},
|
|
'routes': {
|
|
'preview': ['api.notify.works/notifications/sms/mmg', 'api.notify.works/notifications/sms/firetext'],
|
|
'staging': ['api.staging-notify.works/notifications/sms/mmg', 'api.staging-notify.works/notifications/sms/firetext'],
|
|
'production': ['api.notifications.service.gov.uk/notifications/sms/mmg', 'api.notifications.service.gov.uk/notifications/sms/firetext'],
|
|
},
|
|
'health-check-type': 'port',
|
|
'health-check-invocation-timeout': 3,
|
|
'instances': {
|
|
'preview': 1,
|
|
'staging': 2,
|
|
'production': 10
|
|
},
|
|
},
|
|
|
|
'notify-api-db-migration': {
|
|
'NOTIFY_APP_NAME': 'api',
|
|
'instances': {
|
|
'preview': 0,
|
|
'staging': 0,
|
|
'production': 0
|
|
},
|
|
},
|
|
|
|
'notify-delivery-celery-beat': {'memory': '128M'},
|
|
'notify-delivery-worker-jobs': {},
|
|
'notify-delivery-worker-research': {},
|
|
'notify-delivery-worker-sender': {'disk_quota': '2G', 'memory': '3G'},
|
|
'notify-delivery-worker-email': {'disk_quota': '2G', 'memory': '3G'},
|
|
'notify-delivery-worker-sms': {'disk_quota': '2G', 'memory': '3G'},
|
|
'notify-delivery-worker-periodic': {},
|
|
'notify-delivery-worker-reporting': {
|
|
'additional_env_vars': {
|
|
'CELERYD_MAX_TASKS_PER_CHILD': 1,
|
|
'CELERYD_PREFETCH_MULTIPLIER': 1,
|
|
}
|
|
},
|
|
'notify-delivery-worker-priority': {},
|
|
'notify-delivery-worker-letters': {},
|
|
'notify-delivery-worker-retry-tasks': {},
|
|
'notify-delivery-worker-internal': {},
|
|
'notify-delivery-worker-receipts': {},
|
|
'notify-delivery-worker-service-callbacks': {'disk_quota': '2G'},
|
|
'notify-delivery-worker-save-api-notifications': {'disk_quota': '2G'},
|
|
} -%}
|
|
|
|
{%- set app = app_vars[CF_APP] -%}
|
|
{%- set instance_count = app.get('instances', {}).get(environment) -%}
|
|
|
|
---
|
|
|
|
applications:
|
|
- name: {{ CF_APP }}
|
|
buildpack: python_buildpack
|
|
{% if instance_count is not none %}
|
|
instances: {{ instance_count }}
|
|
{%- endif %}
|
|
memory: {{ app.get('memory', '1G') }}
|
|
disk_quota: {{ app.get('disk_quota', '1G')}}
|
|
|
|
routes:
|
|
{%- for route in app.get('routes', {}).get(environment, []) %}
|
|
- route: {{ route }}
|
|
{%- endfor%}
|
|
- route: {{ CF_APP }}-{{ environment }}.cloudapps.digital
|
|
health-check-type: {{ app.get('health-check-type', 'process') }}
|
|
health-check-invocation-timeout: {{ app.get('health-check-invocation-timeout', 1) }}
|
|
|
|
services:
|
|
- notify-db
|
|
- logit-ssl-syslog-drain
|
|
{% if CF_APP == 'notify-api' %}
|
|
- notify-prometheus
|
|
{% endif %}
|
|
|
|
env:
|
|
NOTIFY_APP_NAME: {{ app.get('NOTIFY_APP_NAME', CF_APP.replace('notify-', '')) }}
|
|
SQLALCHEMY_POOL_SIZE: {{ app.get('sqlalchemy_pool_size', 1) }}
|
|
FLASK_APP: application.py
|
|
|
|
# Credentials variables
|
|
ADMIN_BASE_URL: '{{ ADMIN_BASE_URL }}'
|
|
API_INTERNAL_SECRETS: '{{ API_INTERNAL_SECRETS | tojson }}'
|
|
API_HOST_NAME: '{{ API_HOST_NAME }}'
|
|
DANGEROUS_SALT: '{{ DANGEROUS_SALT }}'
|
|
SECRET_KEY: '{{ SECRET_KEY }}'
|
|
ROUTE_SECRET_KEY_1: '{{ ROUTE_SECRET_KEY_1 }}'
|
|
ROUTE_SECRET_KEY_2: '{{ ROUTE_SECRET_KEY_2 }}'
|
|
CRONITOR_KEYS: '{{ CRONITOR_KEYS | tojson }}'
|
|
|
|
HIGH_VOLUME_SERVICE: '{{ HIGH_VOLUME_SERVICE | tojson }}'
|
|
|
|
|
|
PERFORMANCE_PLATFORM_ENDPOINTS: '{{ PERFORMANCE_PLATFORM_ENDPOINTS | tojson }}'
|
|
|
|
DOCUMENT_DOWNLOAD_API_HOST: '{{ DOCUMENT_DOWNLOAD_API_HOST }}'
|
|
DOCUMENT_DOWNLOAD_API_KEY: '{{ DOCUMENT_DOWNLOAD_API_KEY }}'
|
|
|
|
NOTIFICATION_QUEUE_PREFIX: '{{ NOTIFICATION_QUEUE_PREFIX }}'
|
|
AWS_ACCESS_KEY_ID: '{{ AWS_ACCESS_KEY_ID }}'
|
|
AWS_SECRET_ACCESS_KEY: '{{ AWS_SECRET_ACCESS_KEY }}'
|
|
|
|
STATSD_HOST: "notify-statsd-exporter-{{ environment }}.apps.internal"
|
|
|
|
ZENDESK_API_KEY: '{{ ZENDESK_API_KEY }}'
|
|
|
|
MMG_API_KEY: '{{ MMG_API_KEY }}'
|
|
MMG_INBOUND_SMS_AUTH: '{{ MMG_INBOUND_SMS_AUTH | tojson }}'
|
|
MMG_INBOUND_SMS_USERNAME: '{{ MMG_INBOUND_SMS_USERNAME | tojson }}'
|
|
|
|
FIRETEXT_API_KEY: '{{ FIRETEXT_API_KEY }}'
|
|
FIRETEXT_INBOUND_SMS_AUTH: '{{ FIRETEXT_INBOUND_SMS_AUTH | tojson }}'
|
|
|
|
REDIS_ENABLED: '{{ REDIS_ENABLED }}'
|
|
REDIS_URL: '{{ REDIS_URL }}'
|
|
|
|
TEMPLATE_PREVIEW_API_HOST: '{{ TEMPLATE_PREVIEW_API_HOST }}'
|
|
TEMPLATE_PREVIEW_API_KEY: '{{ TEMPLATE_PREVIEW_API_KEY }}'
|
|
|
|
{% for key, value in app.get('additional_env_vars', {}).items() %}
|
|
{{key}}: '{{value}}'
|
|
{% endfor %}
|