From e1c81579d90ad6da3faeddee261ae4666a96302d Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Thu, 4 Feb 2021 10:19:26 +0100 Subject: Remove controller-provision-lb flag --- .../vespa/hosted/provision/lb/LoadBalancerService.java | 5 +++-- .../provision/provisioning/LoadBalancerProvisioner.java | 15 +-------------- .../provisioning/LoadBalancerProvisionerTest.java | 4 ++-- 3 files changed, 6 insertions(+), 18 deletions(-) (limited to 'node-repository/src') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java index 2538619367f..a5a586e1bda 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/lb/LoadBalancerService.java @@ -31,8 +31,9 @@ public interface LoadBalancerService { /** Returns whether load balancers created by this service can forward traffic to given node and cluster type */ default boolean canForwardTo(NodeType nodeType, ClusterSpec.Type clusterType) { return (nodeType == NodeType.tenant && clusterType.isContainer()) || - (nodeType == NodeType.config && clusterType == ClusterSpec.Type.admin) || - (nodeType == NodeType.controller && clusterType.isContainer()); + (nodeType == NodeType.config && clusterType == ClusterSpec.Type.admin); + // TODO(mpolden): Allow this when controllers support provisioning their own LBs + // (nodeType == NodeType.controller && clusterType.isContainer()); } /** Load balancer protocols */ diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java index b66dab58e55..a048f8bb8d2 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisioner.java @@ -11,9 +11,7 @@ import com.yahoo.config.provision.ProvisionLock; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.exception.LoadBalancerServiceException; import com.yahoo.transaction.NestedTransaction; -import com.yahoo.vespa.flags.BooleanFlag; import com.yahoo.vespa.flags.FlagSource; -import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.NodeList; import com.yahoo.vespa.hosted.provision.NodeRepository; @@ -53,13 +51,11 @@ public class LoadBalancerProvisioner { private final NodeRepository nodeRepository; private final CuratorDatabaseClient db; private final LoadBalancerService service; - private final BooleanFlag provisionControllerLoadBalancer; public LoadBalancerProvisioner(NodeRepository nodeRepository, LoadBalancerService service, FlagSource flagSource) { this.nodeRepository = nodeRepository; this.db = nodeRepository.database(); this.service = service; - this.provisionControllerLoadBalancer = Flags.CONTROLLER_PROVISION_LB.bindTo(flagSource); // Read and write all load balancers to make sure they are stored in the latest version of the serialization format for (var id : db.readLoadBalancerIds()) { try (var lock = db.lock(id.application())) { @@ -80,7 +76,7 @@ public class LoadBalancerProvisioner { * Calling this for irrelevant node or cluster types is a no-op. */ public void prepare(ApplicationId application, ClusterSpec cluster, NodeSpec requestedNodes) { - if (!canForwardTo(requestedNodes.type(), cluster)) return; // Nothing to provision for this node and cluster type + if (!service.canForwardTo(requestedNodes.type(), cluster.type())) return; // Nothing to provision for this node and cluster type if (application.instance().isTester()) return; // Do not provision for tester instances try (var lock = db.lock(application)) { ClusterSpec.Id clusterId = effectiveId(cluster); @@ -146,15 +142,6 @@ public class LoadBalancerProvisioner { db.writeLoadBalancers(deactivatedLoadBalancers, transaction); } - // TODO(mpolden): Inline when feature flag is removed - private boolean canForwardTo(NodeType type, ClusterSpec cluster) { - boolean canForwardTo = service.canForwardTo(type, cluster.type()); - if (canForwardTo) { - if (type == NodeType.controller) return provisionControllerLoadBalancer.value(); - } - return canForwardTo; - } - /** Find all load balancer IDs owned by given tenant and application */ private List findLoadBalancers(TenantName tenant, ApplicationName application) { return db.readLoadBalancerIds().stream() diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java index 7a636a030ec..eef342b527b 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/LoadBalancerProvisionerTest.java @@ -10,7 +10,6 @@ import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; -import com.yahoo.vespa.flags.Flags; import com.yahoo.vespa.flags.InMemoryFlagSource; import com.yahoo.vespa.hosted.provision.Node; import com.yahoo.vespa.hosted.provision.lb.LoadBalancer; @@ -18,6 +17,7 @@ import com.yahoo.vespa.hosted.provision.lb.LoadBalancerInstance; import com.yahoo.vespa.hosted.provision.lb.Real; import com.yahoo.vespa.hosted.provision.node.Agent; import com.yahoo.vespa.hosted.provision.node.IP; +import org.junit.Ignore; import org.junit.Test; import java.util.Collection; @@ -222,9 +222,9 @@ public class LoadBalancerProvisionerTest { assertEquals(cluster, lbs.get().get(0).id().cluster()); } + @Ignore // TODO: Re-enable when controller support is implemented @Test public void provision_load_balancer_controller_cluster() { - flagSource.withBooleanFlag(Flags.CONTROLLER_PROVISION_LB.id(), true); ApplicationId controllerApp = ApplicationId.from("hosted-vespa", "controller", "default"); Supplier> lbs = () -> tester.nodeRepository().loadBalancers(controllerApp).asList(); var cluster = ClusterSpec.Id.from("zone-config-servers"); -- cgit v1.2.3