Skip to content

Commit e4f8694

Browse files
authored
Fixing NLB Eip exception (#176)
* Fixing NLB Eip exception * Fixing service name * Fixing output for subnets * Fixing codesmell
1 parent 0c867ae commit e4f8694

File tree

5 files changed

+39
-17
lines changed

5 files changed

+39
-17
lines changed

ecs_composex/ecs/ecs_service.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ def handle_same_task_services_dependencies(
158158
service_config.family_dependents.append(
159159
{
160160
"ContainerName": dependency,
161-
"Condition": containers_config[dependency]["config"].container_start_condition
161+
"Condition": containers_config[dependency][
162+
"config"
163+
].container_start_condition
162164
if not containers_config[dependency]["config"].healthcheck
163165
else "HEALTHY",
164166
}
@@ -566,9 +568,17 @@ def add_public_ips(self, azs):
566568
:rtype: list
567569
"""
568570
for az in azs:
571+
if isinstance(az, dict) and keyisset("ZoneName", az):
572+
az_name = NONALPHANUM.sub(
573+
"", az["ZoneName"].title().replace("-", "").strip()
574+
)
575+
elif isinstance(az, str):
576+
az_name = NONALPHANUM.sub("", az)
577+
else:
578+
raise TypeError("az is neither a dict or a str. Got", type(az))
569579
self.eips.append(
570580
EIP(
571-
f"EipPublicNlb{az.replace('-', '').strip()}{self.service_name}",
581+
f"EipPublicNlb{az_name}{self.service_name}",
572582
template=self.template,
573583
Domain="vpc",
574584
)
@@ -711,15 +721,9 @@ def add_load_balancer(self, settings):
711721
Key="load_balancing.cross_zone.enabled", Value="true"
712722
)
713723
]
714-
if self.config.lb_type == "network"
715-
else no_value,
716-
SecurityGroups=lb_sg,
717-
SubnetMappings=public_mapping
718-
if self.config.is_public and self.config.use_nlb()
724+
if self.config.use_nlb()
719725
else no_value,
720-
Subnets=Ref(PUBLIC_SUBNETS)
721-
if self.config.is_public and self.config.use_alb()
722-
else Ref(vpc_params.APP_SUBNETS),
726+
SecurityGroups=lb_sg if self.config.use_alb() else no_value,
723727
Type=self.config.lb_type,
724728
Tags=Tags(
725729
{
@@ -729,6 +733,13 @@ def add_load_balancer(self, settings):
729733
}
730734
),
731735
)
736+
if self.config.is_public and self.config.use_alb():
737+
setattr(loadbalancer, "Subnets", Ref(PUBLIC_SUBNETS))
738+
elif self.config.is_public and self.config.use_nlb():
739+
setattr(loadbalancer, "SubnetMappings", public_mapping)
740+
setattr(loadbalancer, "Subnets", Ref(AWS_NO_VALUE))
741+
elif not self.config.is_public:
742+
setattr(loadbalancer, "Subnets", Ref(vpc_params.APP_SUBNETS))
732743
if self.config.is_public:
733744
sd_service = SdService(
734745
f"{self.resource_name}PublicDiscoveryService",
@@ -782,7 +793,7 @@ def add_service_load_balancer(self, settings):
782793
EcsLoadBalancer(
783794
TargetGroupArn=Ref(tgt),
784795
ContainerPort=tgt.Port,
785-
ContainerName=self.config.lb_service_name,
796+
ContainerName=NONALPHANUM.sub("", self.config.lb_service_name),
786797
)
787798
)
788799
return service_lbs, depends_on

ecs_composex/ecs/ecs_service_config.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -521,15 +521,23 @@ def set_service_deploy(self, definition):
521521
"""
522522
if not keyisset("deploy", definition):
523523
return
524+
depends_key = "ecs.depends.condition"
524525
deployment = definition["deploy"]
525526
if keyisset("resources", deployment):
526527
self.set_compute_resources(deployment["resources"])
527528
self.set_deployment_settings(deployment)
528-
if keyisset("labels", deployment) and keyisset("ecs.depends.condition", deployment["labels"]):
529+
if keyisset("labels", deployment) and keyisset(
530+
depends_key, deployment["labels"]
531+
):
529532
allowed_values = ["START", "COMPLETE", "SUCCESS", "HEALTHY"]
530-
if deployment["labels"]["ecs.depends.condition"] not in allowed_values:
531-
raise ValueError("Attribute ecs.depends.condition is invalid. Must be one of", allowed_values)
532-
self.container_start_condition = deployment["labels"]["ecs.depends.condition"]
533+
if deployment["labels"][depends_key] not in allowed_values:
534+
raise ValueError(
535+
f"Attribute {depends_key} is invalid. Must be one of",
536+
allowed_values,
537+
)
538+
self.container_start_condition = deployment["labels"][
539+
depends_key
540+
]
533541

534542
def set_xray(self, definition):
535543
"""

ecs_composex/ecs/ecs_template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ def handle_families_services(families, cluster_sg, settings):
273273
service = settings.compose_content[ecs_params.RES_KEY][service_name]
274274
if keyisset("deploy", service):
275275
service["deploy"].update(get_deploy_labels(service))
276-
print(service["deploy"])
276+
LOG.debug(service["deploy"])
277277
service_config = ServiceConfig(
278278
settings.compose_content,
279279
service_name,

ecs_composex/vpc/vpc_template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def add_template_outputs(template, vpc, storage_subnets, public_subnets, app_sub
7373
(
7474
vpc_params.PUBLIC_SUBNETS_T,
7575
vpc_params.PUBLIC_SUBNETS_T,
76-
Join(",", [Ref(subnet) for subnet in storage_subnets]),
76+
Join(",", [Ref(subnet) for subnet in public_subnets]),
7777
),
7878
(
7979
vpc_params.APP_SUBNETS_T,

features/use-cases/blog-all-features.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ services:
8787
environment:
8888
LOGLEVEL: DEBUG
8989
x-configs:
90+
network:
91+
lb_type: network
92+
is_public: True
9093
use_xray: True
9194
iam:
9295
boundary: arn:aws:iam::aws:policy/ViewOnly

0 commit comments

Comments
 (0)