mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-23 07:46:06 -04:00
Merge pull request #3204 from alphagov/broadcast-envars
Broadcast envars
This commit is contained in:
@@ -106,10 +106,6 @@ def check_provider_message_should_send(broadcast_event, provider):
|
|||||||
@notify_celery.task(name="send-broadcast-event")
|
@notify_celery.task(name="send-broadcast-event")
|
||||||
@statsd(namespace="tasks")
|
@statsd(namespace="tasks")
|
||||||
def send_broadcast_event(broadcast_event_id):
|
def send_broadcast_event(broadcast_event_id):
|
||||||
if not current_app.config['CBC_PROXY_ENABLED']:
|
|
||||||
current_app.logger.info(f'CBC Proxy disabled, not sending broadcast_event {broadcast_event_id}')
|
|
||||||
return
|
|
||||||
|
|
||||||
broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id)
|
broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -149,6 +145,13 @@ def send_broadcast_event(broadcast_event_id):
|
|||||||
@notify_celery.task(bind=True, name="send-broadcast-provider-message", max_retries=None)
|
@notify_celery.task(bind=True, name="send-broadcast-provider-message", max_retries=None)
|
||||||
@statsd(namespace="tasks")
|
@statsd(namespace="tasks")
|
||||||
def send_broadcast_provider_message(self, broadcast_event_id, provider):
|
def send_broadcast_provider_message(self, broadcast_event_id, provider):
|
||||||
|
if not current_app.config['CBC_PROXY_ENABLED']:
|
||||||
|
current_app.logger.info(
|
||||||
|
"CBC Proxy disabled, not sending broadcast_provider_message for "
|
||||||
|
f"broadcast_event_id {broadcast_event_id} with provider {provider}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id)
|
broadcast_event = dao_get_broadcast_event_by_id(broadcast_event_id)
|
||||||
|
|
||||||
check_provider_message_should_send(broadcast_event, provider)
|
check_provider_message_should_send(broadcast_event, provider)
|
||||||
|
|||||||
@@ -365,13 +365,10 @@ class Config(object):
|
|||||||
|
|
||||||
AWS_REGION = 'eu-west-1'
|
AWS_REGION = 'eu-west-1'
|
||||||
|
|
||||||
# CBC Proxy
|
CBC_PROXY_ENABLED = True
|
||||||
# if the access keys are empty then noop client is used
|
|
||||||
CBC_PROXY_AWS_ACCESS_KEY_ID = os.environ.get('CBC_PROXY_AWS_ACCESS_KEY_ID', '')
|
CBC_PROXY_AWS_ACCESS_KEY_ID = os.environ.get('CBC_PROXY_AWS_ACCESS_KEY_ID', '')
|
||||||
CBC_PROXY_AWS_SECRET_ACCESS_KEY = os.environ.get('CBC_PROXY_AWS_SECRET_ACCESS_KEY', '')
|
CBC_PROXY_AWS_SECRET_ACCESS_KEY = os.environ.get('CBC_PROXY_AWS_SECRET_ACCESS_KEY', '')
|
||||||
|
|
||||||
CBC_PROXY_ENABLED = bool(CBC_PROXY_AWS_ACCESS_KEY_ID)
|
|
||||||
|
|
||||||
ENABLED_CBCS = {BroadcastProvider.EE, BroadcastProvider.THREE, BroadcastProvider.O2, BroadcastProvider.VODAFONE}
|
ENABLED_CBCS = {BroadcastProvider.EE, BroadcastProvider.THREE, BroadcastProvider.O2, BroadcastProvider.VODAFONE}
|
||||||
|
|
||||||
# as defined in api db migration 0331_add_broadcast_org.py
|
# as defined in api db migration 0331_add_broadcast_org.py
|
||||||
@@ -422,6 +419,8 @@ class Development(Config):
|
|||||||
API_RATE_LIMIT_ENABLED = True
|
API_RATE_LIMIT_ENABLED = True
|
||||||
DVLA_EMAIL_ADDRESSES = ['success@simulator.amazonses.com']
|
DVLA_EMAIL_ADDRESSES = ['success@simulator.amazonses.com']
|
||||||
|
|
||||||
|
CBC_PROXY_ENABLED = False
|
||||||
|
|
||||||
|
|
||||||
class Test(Development):
|
class Test(Development):
|
||||||
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
||||||
|
|||||||
@@ -65,7 +65,11 @@
|
|||||||
'notify-delivery-worker-retry-tasks': {},
|
'notify-delivery-worker-retry-tasks': {},
|
||||||
'notify-delivery-worker-internal': {},
|
'notify-delivery-worker-internal': {},
|
||||||
'notify-delivery-worker-broadcasts': {
|
'notify-delivery-worker-broadcasts': {
|
||||||
|
'additional_env_vars': {
|
||||||
'CELERYD_PREFETCH_MULTIPLIER': 1,
|
'CELERYD_PREFETCH_MULTIPLIER': 1,
|
||||||
|
'CBC_PROXY_AWS_ACCESS_KEY_ID': CBC_PROXY_AWS_ACCESS_KEY_ID,
|
||||||
|
'CBC_PROXY_AWS_SECRET_ACCESS_KEY': CBC_PROXY_AWS_SECRET_ACCESS_KEY,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
'notify-delivery-worker-receipts': {},
|
'notify-delivery-worker-receipts': {},
|
||||||
'notify-delivery-worker-service-callbacks': {'disk_quota': '2G'},
|
'notify-delivery-worker-service-callbacks': {'disk_quota': '2G'},
|
||||||
@@ -125,11 +129,6 @@ applications:
|
|||||||
AWS_ACCESS_KEY_ID: '{{ AWS_ACCESS_KEY_ID }}'
|
AWS_ACCESS_KEY_ID: '{{ AWS_ACCESS_KEY_ID }}'
|
||||||
AWS_SECRET_ACCESS_KEY: '{{ AWS_SECRET_ACCESS_KEY }}'
|
AWS_SECRET_ACCESS_KEY: '{{ AWS_SECRET_ACCESS_KEY }}'
|
||||||
|
|
||||||
{% if CBC_PROXY_AWS_ACCESS_KEY_ID is defined %}
|
|
||||||
CBC_PROXY_AWS_ACCESS_KEY_ID: '{{ CBC_PROXY_AWS_ACCESS_KEY_ID }}'
|
|
||||||
CBC_PROXY_AWS_SECRET_ACCESS_KEY: '{{ CBC_PROXY_AWS_SECRET_ACCESS_KEY }}'
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
STATSD_HOST: "notify-statsd-exporter-{{ environment }}.apps.internal"
|
STATSD_HOST: "notify-statsd-exporter-{{ environment }}.apps.internal"
|
||||||
|
|
||||||
ZENDESK_API_KEY: '{{ ZENDESK_API_KEY }}'
|
ZENDESK_API_KEY: '{{ ZENDESK_API_KEY }}'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from unittest.mock import ANY, call
|
from unittest.mock import ANY, Mock, call
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from celery.exceptions import Retry
|
from celery.exceptions import Retry
|
||||||
@@ -98,18 +98,6 @@ def test_send_broadcast_event_does_nothing_if_provider_set_on_service_isnt_enabl
|
|||||||
assert mock_send_broadcast_provider_message.apply_async.called is False
|
assert mock_send_broadcast_provider_message.apply_async.called is False
|
||||||
|
|
||||||
|
|
||||||
def test_send_broadcast_event_does_nothing_if_cbc_proxy_disabled(mocker, notify_api):
|
|
||||||
mock_send_broadcast_provider_message = mocker.patch(
|
|
||||||
'app.celery.broadcast_message_tasks.send_broadcast_provider_message',
|
|
||||||
)
|
|
||||||
|
|
||||||
event_id = uuid.uuid4()
|
|
||||||
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']), set_config(notify_api, 'CBC_PROXY_ENABLED', False):
|
|
||||||
send_broadcast_event(event_id)
|
|
||||||
|
|
||||||
assert mock_send_broadcast_provider_message.apply_async.called is False
|
|
||||||
|
|
||||||
|
|
||||||
def test_send_broadcast_event_creates_zendesk_p1(mocker, notify_api, sample_broadcast_service):
|
def test_send_broadcast_event_creates_zendesk_p1(mocker, notify_api, sample_broadcast_service):
|
||||||
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
template = create_template(sample_broadcast_service, BROADCAST_TYPE)
|
||||||
broadcast_message = create_broadcast_message(
|
broadcast_message = create_broadcast_message(
|
||||||
@@ -747,3 +735,18 @@ def test_check_provider_message_should_send_raises_if_current_event_already_has_
|
|||||||
create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status)
|
create_broadcast_provider_message(current_event, provider='ee', status=existing_message_status)
|
||||||
|
|
||||||
check_provider_message_should_send(current_event, 'ee')
|
check_provider_message_should_send(current_event, 'ee')
|
||||||
|
|
||||||
|
|
||||||
|
def test_send_broadcast_provider_message_does_nothing_if_cbc_proxy_disabled(mocker, notify_api, sample_template):
|
||||||
|
mock_proxy_client_getter = mocker.patch(
|
||||||
|
'app.celery.broadcast_message_tasks.cbc_proxy_client',
|
||||||
|
)
|
||||||
|
mock_client = Mock()
|
||||||
|
mock_proxy_client_getter.get_proxy.return_value = mock_client
|
||||||
|
|
||||||
|
broadcast_message = create_broadcast_message(sample_template)
|
||||||
|
broadcast_event = create_broadcast_event(broadcast_message, message_type='alert')
|
||||||
|
with set_config(notify_api, 'ENABLED_CBCS', ['ee', 'vodafone']), set_config(notify_api, 'CBC_PROXY_ENABLED', False):
|
||||||
|
send_broadcast_provider_message(broadcast_event.id, 'ee')
|
||||||
|
|
||||||
|
assert mock_client.create_and_send_broadcast.called is False
|
||||||
|
|||||||
Reference in New Issue
Block a user