diff --git a/src/main/java/com/cloudforgeci/localstack/LocalStackCapabilityProbe.java b/src/main/java/com/cloudforgeci/localstack/LocalStackCapabilityProbe.java index 9d2cec8..1d5b92f 100644 --- a/src/main/java/com/cloudforgeci/localstack/LocalStackCapabilityProbe.java +++ b/src/main/java/com/cloudforgeci/localstack/LocalStackCapabilityProbe.java @@ -126,7 +126,7 @@ private static java.util.Optional mapServiceName(St } return switch (service.toLowerCase(Locale.ROOT)) { case "ecs" -> java.util.Optional.of(LocalStackServiceCapability.ECS); - case "elbv2", "elb", "elasticloadbalancingv2" -> + case "elbv2", "elb", "elasticloadbalancingv2", "elasticloadbalancing" -> java.util.Optional.of(LocalStackServiceCapability.ELBV2); case "ec2" -> java.util.Optional.of(LocalStackServiceCapability.EC2); case "autoscaling", "application-autoscaling" -> diff --git a/src/test/java/com/cloudforgeci/localstack/LocalStackCapabilityProbeTest.java b/src/test/java/com/cloudforgeci/localstack/LocalStackCapabilityProbeTest.java index 38f288f..a9f81f0 100644 --- a/src/test/java/com/cloudforgeci/localstack/LocalStackCapabilityProbeTest.java +++ b/src/test/java/com/cloudforgeci/localstack/LocalStackCapabilityProbeTest.java @@ -38,4 +38,19 @@ void parsesHealthServicesIntoCapabilities() throws Exception { assertTrue(caps.contains(LocalStackServiceCapability.EFS)); assertTrue(caps.contains(LocalStackServiceCapability.BACKUP)); } + + /** LocalStack's own {@code /_localstack/health} reports ELBv2/ALB support under the key + * {@code elasticloadbalancing} (its real AWS service name), not {@code elbv2} — mapping only + * the latter meant every deploy needing an ALB was blocked as "missing capability" even + * though LocalStack reported it as available. */ + @Test + void mapsElasticLoadBalancingHealthKeyToElbv2Capability() { + ObjectNode root = new ObjectMapper().createObjectNode(); + ObjectNode services = root.putObject("services"); + services.put("ecs", "available"); + services.put("elasticloadbalancing", "available"); + + var caps = LocalStackCapabilityProbe.capabilitiesFromHealth(root, new LinkedHashMap<>()); + assertTrue(caps.contains(LocalStackServiceCapability.ELBV2)); + } }