Source code for ecs_composex.ecs.ecs_family.family_template
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2022 John Mille <john@compose-x.io>
from troposphere import Template
from ecs_composex.common.troposphere_tools import build_template
from ecs_composex.ecs import ecs_conditions, ecs_params
[docs]def set_template(family) -> Template:
"""
Function to set the troposphere.Template associated with the ECS Service Family
"""
template = build_template(
f"Template for {family.name}",
[
ecs_params.CLUSTER_NAME,
ecs_params.LAUNCH_TYPE,
ecs_params.SERVICE_COUNT,
ecs_params.CLUSTER_SG_ID,
ecs_params.SERVICE_HOSTNAME,
ecs_params.FARGATE_CPU_RAM_CONFIG,
ecs_params.SERVICE_NAME,
ecs_params.ELB_GRACE_PERIOD,
ecs_params.FARGATE_VERSION,
ecs_params.LOG_GROUP_RETENTION,
ecs_params.RUNTIME_CPU_ARCHITECTURE,
ecs_params.RUNTIME_OS_FAMILY,
ecs_params.NETWORK_MODE,
ecs_params.IPC_MODE,
],
)
conditions = {
ecs_conditions.USE_HOSTNAME_CON_T: ecs_conditions.USE_HOSTNAME_CON,
ecs_conditions.NOT_USE_HOSTNAME_CON_T: ecs_conditions.NOT_USE_HOSTNAME_CON,
ecs_conditions.NOT_USE_CLUSTER_SG_CON_T: ecs_conditions.NOT_USE_CLUSTER_SG_CON,
ecs_conditions.USE_CLUSTER_SG_CON_T: ecs_conditions.USE_CLUSTER_SG_CON,
ecs_conditions.USE_FARGATE_PROVIDERS_CON_T: ecs_conditions.USE_FARGATE_PROVIDERS_CON,
ecs_conditions.USE_FARGATE_LT_CON_T: ecs_conditions.USE_FARGATE_LT_CON,
ecs_conditions.USE_FARGATE_CON_T: ecs_conditions.USE_FARGATE_CON,
ecs_conditions.NOT_FARGATE_CON_T: ecs_conditions.NOT_FARGATE_CON,
ecs_conditions.USE_EC2_CON_T: ecs_conditions.USE_EC2_CON,
ecs_conditions.USE_SERVICE_MODE_CON_T: ecs_conditions.USE_SERVICE_MODE_CON,
ecs_conditions.USE_CLUSTER_MODE_CON_T: ecs_conditions.USE_CLUSTER_MODE_CON,
ecs_conditions.USE_EXTERNAL_LT_T: ecs_conditions.USE_EXTERNAL_LT,
ecs_conditions.USE_LAUNCH_TYPE_CON_T: ecs_conditions.USE_LAUNCH_TYPE_CON,
ecs_conditions.USE_LINUX_OS_T: ecs_conditions.USE_LINUX_OS,
ecs_conditions.USE_WINDOWS_OS_T: ecs_conditions.USE_WINDOWS_OS,
ecs_conditions.IPC_FROM_HOST_CON_T: ecs_conditions.IPC_FROM_HOST_CON,
ecs_conditions.USE_WINDOWS_OR_FARGATE_T: ecs_conditions.USE_WINDOWS_OR_FARGATE,
ecs_conditions.DISABLE_CAPACITY_PROVIDERS_CON_T: ecs_conditions.DISABLE_CAPACITY_PROVIDERS_CON,
ecs_conditions.USE_EC2_OR_EXTERNAL_LT_CON_T: ecs_conditions.USE_EC2_OR_EXTERNAL_LT_CON,
ecs_conditions.USE_BRIDGE_NETWORKING_MODE_CON_T: ecs_conditions.USE_BRIDGE_NETWORKING_MODE_CON,
ecs_conditions.USE_AWSVPC_NETWORKING_MODE_CON_T: ecs_conditions.USE_AWSVPC_NETWORKING_MODE_CON,
}
for title, condition in conditions.items():
template.add_condition(title, condition)
return template