diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-11-06 12:07:28 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-11-06 12:08:46 +0100 |
commit | aeedefb11672970b69f97cbe9307aba9180cf620 (patch) | |
tree | 4239f4b20248320b2f235c6a744a8cb9ca5406a2 /controller-server | |
parent | a051107e4e8bb002e3742e19964dc167cca13269 (diff) |
Populate region names of rotations from global service id when deserialising
Diffstat (limited to 'controller-server')
2 files changed, 25 insertions, 10 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java index 08142a9a399..75f489d3345 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializer.java @@ -6,7 +6,9 @@ import com.yahoo.config.application.api.DeploymentInstanceSpec; import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.InstanceName; +import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.security.KeyUtils; import com.yahoo.slime.ArrayTraverser; @@ -43,6 +45,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -578,10 +581,7 @@ public class ApplicationSerializer { var endpointId = EndpointId.of(inspector.field(assignedRotationEndpointField).asString()); var rotationId = new RotationId(inspector.field(assignedRotationRotationField).asString()); var regions = deploymentSpec.instance(instance) - .map(spec -> spec.endpoints().stream() - .filter(endpoint -> endpoint.endpointId().equals(endpointId.id())) - .flatMap(endpoint -> endpoint.regions().stream()) - .collect(Collectors.toSet())) + .map(spec -> globalEndpointRegions(spec, endpointId)) .orElse(Set.of()); assignedRotations.putIfAbsent(endpointId, new AssignedRotation(clusterId, endpointId, rotationId, regions)); }); @@ -589,4 +589,16 @@ public class ApplicationSerializer { return List.copyOf(assignedRotations.values()); } + private Set<RegionName> globalEndpointRegions(DeploymentInstanceSpec spec, EndpointId endpointId) { + if (spec.globalServiceId().isPresent()) + return spec.zones().stream() + .flatMap(zone -> zone.region().stream()) + .collect(Collectors.toSet()); + + return spec.endpoints().stream() + .filter(endpoint -> endpoint.endpointId().equals(endpointId.id())) + .flatMap(endpoint -> endpoint.regions().stream()) + .collect(Collectors.toSet()); + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java index 186e982fd75..9ac73604da5 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java @@ -6,6 +6,7 @@ import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.security.KeyUtils; import com.yahoo.vespa.config.SlimeUtils; @@ -74,8 +75,13 @@ public class ApplicationSerializerTest { @Test public void testSerialization() { - DeploymentSpec deploymentSpec = DeploymentSpec.fromXml("<deployment version='1.0'>" + - " <staging/>" + + DeploymentSpec deploymentSpec = DeploymentSpec.fromXml("<deployment version='1.0'>\n" + + " <staging/>\n" + + " <instance id=\"i1\">\n" + + " <prod global-service-id=\"default\">\n" + + " <region active=\"true\">us-west-1</region>\n" + + " </prod>\n" + + " </instance>\n" + "</deployment>"); ValidationOverrides validationOverrides = ValidationOverrides.fromXml("<validation-overrides version='1.0'>" + " <allow until='2017-06-15'>deployment-removal</allow>" + @@ -100,9 +106,6 @@ public class ApplicationSerializerTest { List<JobStatus> statusList = new ArrayList<>(); - JobStatus.JobRun componentJob = JobStatus.JobRun.triggering(Version.emptyVersion, applicationVersion1, empty(), - empty(), "New commit", Instant.ofEpochMilli(400)) - .completion(100, Instant.ofEpochMilli(500)); statusList.add(JobStatus.initial(JobType.systemTest) .withTriggering(Version.fromString("5.6.7"), ApplicationVersion.unknown, empty(), "Test", Instant.ofEpochMilli(7)) .withCompletion(30, empty(), Instant.ofEpochMilli(8)) @@ -127,7 +130,7 @@ public class ApplicationSerializerTest { List<Instance> instances = List.of(new Instance(id1, deployments, deploymentJobs, - List.of(AssignedRotation.fromStrings("foo", "default", "my-rotation", Set.of())), + List.of(AssignedRotation.fromStrings("foo", "default", "my-rotation", Set.of("us-west-1"))), rotationStatus), new Instance(id3, List.of(), |