From a4ba5d30604dbcbbb14d7f9ea0274e5c3918f5b0 Mon Sep 17 00:00:00 2001 From: spinnakerbot Date: Tue, 23 Jul 2019 17:31:43 -0400 Subject: [PATCH] fix(ecs): Add validation for loadBalancedContainer when using artifact (#3888) (#3896) --- .../EcsCreateServerGroupDescriptionValidator.java | 12 ++++++++++++ ...CreateServergroupDescriptionValidatorSpec.groovy | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServerGroupDescriptionValidator.java b/clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServerGroupDescriptionValidator.java index 4375f44e196..ec65733ab90 100644 --- a/clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServerGroupDescriptionValidator.java +++ b/clouddriver-ecs/src/main/java/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServerGroupDescriptionValidator.java @@ -122,6 +122,18 @@ public void validate(List priorDescriptions, Object description, Errors errors) } else { rejectValue(errors, "reservedMemory", "not.nullable"); } + } else { + // Verify load balanced services w/ an artifact specify which container to load balance on + boolean hasTargetGroup = + createServerGroupDescription.getTargetGroup() != null + && !createServerGroupDescription.getTargetGroup().isEmpty(); + boolean hasLoadBalancedContainer = + createServerGroupDescription.getLoadBalancedContainer() != null + && !createServerGroupDescription.getLoadBalancedContainer().isEmpty(); + + if (hasTargetGroup && !hasLoadBalancedContainer) { + rejectValue(errors, "loadBalancedContainer", "not.nullable"); + } } if (createServerGroupDescription.getContainerPort() != null) { diff --git a/clouddriver-ecs/src/test/groovy/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServergroupDescriptionValidatorSpec.groovy b/clouddriver-ecs/src/test/groovy/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServergroupDescriptionValidatorSpec.groovy index 4f3dc373838..47765f90810 100644 --- a/clouddriver-ecs/src/test/groovy/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServergroupDescriptionValidatorSpec.groovy +++ b/clouddriver-ecs/src/test/groovy/com/netflix/spinnaker/clouddriver/ecs/deploy/validators/EcsCreateServergroupDescriptionValidatorSpec.groovy @@ -119,6 +119,19 @@ class EcsCreateServergroupDescriptionValidatorSpec extends AbstractValidatorSpec 0 * errors.rejectValue(_, _) } + void '(with artifact) should fail when load balancer specified but loadBalanced container missing'() { + given: + def description = getDescription() + description.useTaskDefinitionArtifact = true + def errors = Mock(Errors) + + when: + validator.validate([], description, errors) + + then: + 1 * errors.rejectValue('loadBalancedContainer', "${getDescriptionName()}.loadBalancedContainer.not.nullable") + } + @Override AbstractECSDescription getNulledDescription() { def description = (CreateServerGroupDescription) getDescription()