Skip to content

Commit

Permalink
Logging and handling types better
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnPreston committed Aug 4, 2023
1 parent ca1633a commit 32ffa59
Showing 1 changed file with 25 additions and 5 deletions.
30 changes: 25 additions & 5 deletions ecs_composex/ecs/ecs_family/family_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,13 +336,28 @@ def update_env_var_to_parameter(
if env_var.Name not in service.environment:
continue
parameter_title: str = NONALPHANUM.sub("", var_name)
if type(service.environment[var_name]):
LOG.warning(
"{}.{} - Env var values have to be string. Value will be cast with Sub".format(
family.name, service.name
)
)
if isinstance(set_as_params, list):
env_var_param = Parameter(
parameter_title,
group_label="User Defined Service Variable",
Type=type_to_param_type[type(service.environment[var_name])],
)
elif isinstance(set_as_params, dict):
if (
"Type" in set_as_params[var_name]
and set_as_params[var_name]["Type"].find("List") >= 0
):
raise ValueError(
"{}.{} - For environment variables, Parameter property Type cannot be a List. Got {}".format(
family.name, service.name, set_as_params[var_name]["Type"]
)
)
env_var_param = Parameter(
parameter_title,
group_label="User Defined Service Variable",
Expand All @@ -357,7 +372,7 @@ def update_env_var_to_parameter(
family.stack.Parameters.update(
{env_var_param.title: service.environment[var_name]}
)
setattr(env_var, "Value", Ref(env_var_param))
setattr(env_var, "Value", Sub(env_var_param.title))


def swap_environment_value_with_parameter(
Expand All @@ -366,14 +381,19 @@ def swap_environment_value_with_parameter(
set_as_params = service.x_environment["SetAsParameter"]
for env_var in service.cfn_environment:
if len(family.stack.Parameters) > MAX_PARAMETERS:
print("Too many parameters already set")
LOG.warning(
"{}.{} - Too many parameters already set for this stack".format(
family.name, service.name
)
)
break
if not isinstance(env_var, Environment):
continue
if not isinstance(env_var.Value, (str, int, float)):
print(
f"Env var {env_var.Name} is not str or int. Cannot convert",
type(env_var.Value),
LOG.debug(
"Env var {} is not str or int. Cannot convert. Got {}".format(
env_var.Name, type(env_var.Value)
),
)
continue
update_env_var_to_parameter(family, service, env_var, set_as_params)

0 comments on commit 32ffa59

Please sign in to comment.