Source code for ecs_composex.ecs.ecs_service_config
# -*- coding: utf-8 -*-
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2021 John Mille <john@compose-x.io>
"""
Module for the ServiceConfig Class which is used for Container, Task and Service definitions.
"""
from compose_x_common.compose_x_common import keyisset
from ecs_composex.ecs.ecs_params import SERVICE_COUNT
from ecs_composex.ecs.ecs_scaling import ServiceScaling
from ecs_composex.ecs.ecs_service_network_config import ServiceNetworking
[docs]class ServiceConfig(object):
"""
Class specifically dealing with the configuration and settings of the ecs_service from how it was defined in
the compose file
:cvar list keys: List of valid settings for a service in Docker compose syntax reference
:cvar list service_config_keys: list of extra configuration that apply to services.
:cvar bool UseCloudmap: Indicates whether or not the service will be added to the VPC CloudMap
:cvar bool use_alb: Indicates to use an AWS Application LoadBalancer (ELBv2, type application)
:cvar bool use_nlb: Indicates to use an AWS Application LoadBalancer (ELBv2, type network)
:cvar bool is_public: Indicates whether the service should be accessible publicly
"""
def __init__(self, family, settings):
"""
Function to initialize the ecs_service configuration
:param ecs_composex.common.compose_services.ComposeFamily family:
:param ecs_composex.common.settings.ComposeXSettings settings:
"""
self.network = ServiceNetworking(family)
self.scaling = ServiceScaling(family.ordered_services)
self.use_appmesh = (
False if not keyisset("x-appmesh", settings.compose_content) else True
)
self.replicas = max([service.replicas for service in family.services])
if self.replicas != SERVICE_COUNT.Default:
family.stack_parameters[SERVICE_COUNT.title] = self.replicas
[docs] def debug(self):
print(self.replicas, self.network, self.scaling)