Source code for ecs_composex.common.config

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


from compose_x_common.compose_x_common import keyisset

from ecs_composex.common import LOG


[docs]class ComposeXConfig(object): """ Class to parse and define configuration settings for ECS ComposeX """ master_key = "x-configs" composex_key = "composex" def __init__(self, settings): """ Initializes the ComposeXConfig class :param ComposeXSettings settings: The execution settings """ self.composex_config = {} if keyisset(self.master_key, settings.compose_content) and keyisset( self.composex_key, settings.compose_content[self.master_key] ): self.composex_config = settings.compose_content[self.master_key][ self.composex_key ]
[docs]class ComputeConfig(ComposeXConfig): """ Class to determine the compute settings to use when deploying on top of EC2. """ default_spot_config = { "use_spot": True, "bid_price": 0.42, "spot_instance_types": { "m5a.xlarge": {"weight": 3}, "m5a.2xlarge": {"weight": 7}, "m5a.4xlarge": {"weight": 15}, }, } spot_key = "spot_config" def __init__(self, settings): """ Method to initialize Compute config :param ecs_composex.common.settings.ComposeXSettings settings: The settings for execution """ super().__init__(settings) if keyisset(self.spot_key, self.composex_config): self.spot_config = self.composex_config[self.spot_key] else: LOG.warning( "No spot_config set in configs of ComposeX File. Setting to defaults" ) self.spot_config = self.default_spot_config