Skip to content

Commit

Permalink
Fixes non working FirelensConfiguration.Options in x-logging.Firelens…
Browse files Browse the repository at this point in the history
….Advanced (#711)
  • Loading branch information
JohnPreston committed Nov 16, 2023
1 parent b242d7e commit 1d1cc0c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@ def __init__(self, service, definition: dict, family, settings: ComposeXSettings
self.source_file = set_else_none("SourceFile", self.definition)
self._parser_files = set_else_none("ParserFiles", self.definition, alt_value=[])
self._env_vars = set_else_none("EnvironmentVariables", self.definition)
self.firelens_config: dict = set_else_none(
"FirelensConfiguration", self.definition, alt_value={}
)
self.managed_destinations = []
self.extra_env_vars = set_else_none(
"EnvironmentVariables", self.definition, alt_value={}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,54 @@
from ecs_composex.ecs.ecs_family import ComposeFamily
from ecs_composex.common.settings import ComposeXSettings

from compose_x_common.compose_x_common import set_else_none
from troposphere import AWSHelperFn, Ref, Region
from troposphere.ecs import Environment

from ecs_composex.common.logging import LOG
from ecs_composex.compose.compose_services.helpers import extend_container_envvars
from ecs_composex.compose.compose_volumes.ecs_family_helpers import set_volumes

from .ecs_firelens_advanced import FireLensFamilyManagedConfiguration


def finalize_firelens_container_shorthands(
family: ComposeFamily, advanced_config: FireLensFamilyManagedConfiguration
) -> None:
"""
Checks the FirelensConfiguration.Options settings set on each services of the task family.
If it finds settings, updates the default settings with the new value.
First service in the family to have the settings win. There should be only one service with the x-logging.Firelens
config set not to overlap.
"""
service_defined_firelens_options: dict = {}
for _service, _svc_config in advanced_config.services_configs.items():
if _service not in family.ordered_services:
continue
if not service_defined_firelens_options:
service_defined_firelens_options: dict = set_else_none(
"Options", _svc_config.firelens_config
)
else:
LOG.warning(
"{}.logging: FirelensConfiguration."
"Options already imported. Ignoring settings from {}".format(
family.name, _service.name
)
)

firelens_options: dict = {
"config-file-value": f"{advanced_config.volume_mount}{advanced_config.config_file_name}",
"config-file-type": "file",
"enable-ecs-log-metadata": True,
}
firelens_options.update(service_defined_firelens_options)
family.logging.firelens_service.firelens_config = {
"Type": "fluentbit",
"Options": firelens_options,
}


def handle_firelens_advanced_settings(
family: ComposeFamily, settings: ComposeXSettings
) -> FireLensFamilyManagedConfiguration:
Expand Down Expand Up @@ -56,12 +95,5 @@ def handle_firelens_advanced_settings(
},
)
set_volumes(family)
family.logging.firelens_service.firelens_config = {
"Type": "fluentbit",
"Options": {
"config-file-value": f"{advanced_config.volume_mount}{advanced_config.config_file_name}",
"config-file-type": "file",
"enable-ecs-log-metadata": True,
},
}
finalize_firelens_container_shorthands(family, advanced_config)
return advanced_config

0 comments on commit 1d1cc0c

Please sign in to comment.