diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-10-25 13:46:13 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-11-05 09:57:57 +0100 |
commit | 93d1a98d9663587bbe2ee1c7b920c6b5b40bf686 (patch) | |
tree | ad36882f7186e99e638908514328e4b5c8202702 /controller-server | |
parent | efd8e1b51587ed04f8beeef7ccb60ff273c15b7a (diff) |
Remove legacy endpoints()
Diffstat (limited to 'controller-server')
2 files changed, 25 insertions, 17 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicies.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicies.java index d6080bcda6c..98483763a0d 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicies.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/RoutingPolicies.java @@ -1,6 +1,7 @@ // Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.maintenance; +import com.yahoo.config.application.api.DeploymentInstanceSpec; import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.zone.ZoneId; @@ -106,19 +107,21 @@ public class RoutingPolicies { private void storePoliciesOf(AllocatedLoadBalancers loadBalancers, DeploymentSpec spec, @SuppressWarnings("unused") Lock lock) { Set<RoutingPolicy> policies = new LinkedHashSet<>(get(loadBalancers.application)); for (LoadBalancer loadBalancer : loadBalancers.list) { - RoutingPolicy policy = createPolicy(loadBalancers.application, spec, loadBalancers.zone, loadBalancer); - if (!policies.add(policy)) { - policies.remove(policy); - policies.add(policy); - } + spec.instance(loadBalancer.application().instance()).ifPresent(instanceSpec -> { + RoutingPolicy policy = createPolicy(loadBalancers.application, instanceSpec, loadBalancers.zone, loadBalancer); + if (!policies.add(policy)) { + policies.remove(policy); + policies.add(policy); + } + }); } db.writeRoutingPolicies(loadBalancers.application, policies); } /** Create a policy for given load balancer and register a CNAME for it */ - private RoutingPolicy createPolicy(ApplicationId application, DeploymentSpec deploymentSpec, ZoneId zone, + private RoutingPolicy createPolicy(ApplicationId application, DeploymentInstanceSpec instanceSpec, ZoneId zone, LoadBalancer loadBalancer) { - var endpoints = endpointIdsOf(loadBalancer, zone, deploymentSpec); + var endpoints = endpointIdsOf(loadBalancer, zone, instanceSpec); var routingPolicy = new RoutingPolicy(application, loadBalancer.cluster(), zone, loadBalancer.hostname(), loadBalancer.dnsZone(), endpoints); @@ -162,9 +165,11 @@ public class RoutingPolicies { private static Set<RoutingId> routingIdsFrom(AllocatedLoadBalancers loadBalancers, DeploymentSpec spec) { Set<RoutingId> routingIds = new LinkedHashSet<>(); for (var loadBalancer : loadBalancers.list) { - for (var endpointId : endpointIdsOf(loadBalancer, loadBalancers.zone, spec)) { - routingIds.add(new RoutingId(loadBalancer.application(), endpointId)); - } + spec.instance(loadBalancer.application().instance()).ifPresent(instanceSpec -> { + for (var endpointId : endpointIdsOf(loadBalancer, loadBalancers.zone, instanceSpec)) { + routingIds.add(new RoutingId(loadBalancer.application(), endpointId)); + } + }); } return Collections.unmodifiableSet(routingIds); } @@ -183,7 +188,7 @@ public class RoutingPolicies { } /** Compute all endpoint IDs of given load balancer */ - private static Set<EndpointId> endpointIdsOf(LoadBalancer loadBalancer, ZoneId zone, DeploymentSpec spec) { + private static Set<EndpointId> endpointIdsOf(LoadBalancer loadBalancer, ZoneId zone, DeploymentInstanceSpec spec) { return spec.endpoints().stream() .filter(endpoint -> endpoint.containerId().equals(loadBalancer.cluster().value())) .filter(endpoint -> endpoint.regions().contains(zone.region())) 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 356a20f6eba..b67feab3f59 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 @@ -2,6 +2,7 @@ package com.yahoo.vespa.hosted.controller.persistence; import com.yahoo.component.Version; +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; @@ -386,7 +387,7 @@ public class ApplicationSerializer { InstanceName instanceName = InstanceName.from(object.field(instanceNameField).asString()); List<Deployment> deployments = deploymentsFromSlime(object.field(deploymentsField)); DeploymentJobs deploymentJobs = deploymentJobsFromSlime(object.field(deploymentJobsField)); - List<AssignedRotation> assignedRotations = assignedRotationsFromSlime(deploymentSpec, object); + List<AssignedRotation> assignedRotations = assignedRotationsFromSlime(deploymentSpec, instanceName, object); RotationStatus rotationStatus = rotationStatusFromSlime(object); instances.add(new Instance(id.instance(instanceName), deployments, @@ -570,17 +571,19 @@ public class ApplicationSerializer { Instant.ofEpochMilli(object.field(atField).asLong()))); } - private List<AssignedRotation> assignedRotationsFromSlime(DeploymentSpec deploymentSpec, Inspector root) { + private List<AssignedRotation> assignedRotationsFromSlime(DeploymentSpec deploymentSpec, InstanceName instance, Inspector root) { var assignedRotations = new LinkedHashMap<EndpointId, AssignedRotation>(); root.field(assignedRotationsField).traverse((ArrayTraverser) (idx, inspector) -> { var clusterId = new ClusterSpec.Id(inspector.field(assignedRotationClusterField).asString()); var endpointId = EndpointId.of(inspector.field(assignedRotationEndpointField).asString()); var rotationId = new RotationId(inspector.field(assignedRotationRotationField).asString()); - var regions = deploymentSpec.endpoints().stream() - .filter(endpoint -> endpoint.endpointId().equals(endpointId.id())) - .flatMap(endpoint -> endpoint.regions().stream()) - .collect(Collectors.toSet()); + 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())) + .orElse(Set.of()); assignedRotations.putIfAbsent(endpointId, new AssignedRotation(clusterId, endpointId, rotationId, regions)); }); |