Source code for ecs_composex.events.events_helpers

#  SPDX-License-Identifier: MPL-2.0
#  Copyright 2020-2022 John Mille <john@compose-x.io>

from __future__ import annotations

from typing import TYPE_CHECKING

import ecs_composex.common.troposphere_tools

if TYPE_CHECKING:
    from ecs_composex.common.stacks import ComposeXStack
    from ecs_composex.common.settings import ComposeXSettings
    from .events_stack import Rule

from compose_x_common.compose_x_common import keyisset
from troposphere import NoValue
from troposphere.events import Rule as CfnRule

from ecs_composex.common.logging import LOG
from ecs_composex.resources_import import import_record_properties


[docs]def define_event_rule(stack: ComposeXStack, rule: Rule) -> None: """ Function to define the EventRule properties :param ecs_composex.common.stacks.ComposeXStack stack: :param ecs_composex.events.events_stack.Rule rule: """ rule_props = import_record_properties(rule.properties, CfnRule) if not keyisset("Targets", rule_props): rule_props["Targets"] = [] if not keyisset("Name", rule_props) or rule_props["Name"] == "": rule_props["Name"] = NoValue rule.cfn_resource = CfnRule(rule.logical_name, **rule_props) stack.stack_template.add_resource(rule.cfn_resource)
[docs]def create_events_template( stack: ComposeXStack, settings: ComposeXSettings, new_resources: list[Rule] ) -> None: """ Function to create the CFN root template for Events Rules :param ecs_composex.events.events_stack.XStack stack: :param ecs_composex.common.settings.ComposeXSettings settings: :param list[Rule] new_resources: """ for resource in new_resources: if not resource.families_targets: LOG.error( f"The rule {resource.logical_name} does not have any families_targets defined" ) continue define_event_rule(stack, resource)