Source code for ecs_composex.sns.sns_ecs

#  -*- coding: utf-8 -*-
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2021 John Mille <john@compose-x.io>

"""
Module to apply SNS settings onto ECS Services
"""

from compose_x_common.compose_x_common import keyisset

from ecs_composex.common import LOG
from ecs_composex.resource_settings import (
    handle_lookup_resource,
    handle_resource_to_services,
)
from ecs_composex.sns.sns_params import RES_KEY, TOPIC_ARN, TOPIC_NAME
from ecs_composex.sns.sns_stack import Topic as XTopic


[docs]def sns_to_ecs(resources, services_stack, res_root_stack, settings): """ Function to apply SQS settings to ECS Services :return: """ mappings = ( settings.mappings[RES_KEY] if keyisset(RES_KEY, settings.mappings) else {} ) new_resources = [ resources[XTopic.keyword][resource_name] for resource_name in resources[XTopic.keyword] if not resources[XTopic.keyword][resource_name].lookup ] if not mappings: lookup_resources = [] else: lookup_resources = [ resources[XTopic.keyword][resource_name] for resource_name in resources[XTopic.keyword] if resources[XTopic.keyword][resource_name].lookup ] if new_resources and res_root_stack.title not in services_stack.DependsOn: services_stack.DependsOn.append(res_root_stack.title) LOG.info(f"Added dependency between services and {res_root_stack.title}") for new_res in new_resources: handle_resource_to_services( new_res, services_stack, res_root_stack, settings, TOPIC_ARN, [TOPIC_NAME], ) for lookup_resource in lookup_resources: handle_lookup_resource( mappings, "sns", lookup_resource, TOPIC_ARN, [TOPIC_NAME] )