summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-11-05 15:51:04 +0100
committerMartin Polden <mpolden@mpolden.no>2021-11-08 10:44:22 +0100
commit37d3328448f06483237cb29261c8f1ea922bbf96 (patch)
tree252fbafcfe3e83e146f66b3bc295af22e06d93cc /controller-server
parentfd25b2ebd97a8f2b5f608ef3f0c5e884b55ac4cc (diff)
Move Status class to RoutingPolicy
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializer.java5
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ZoneRoutingPolicySerializer.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java2
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java4
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicy.java43
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/Status.java53
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/ZoneRoutingPolicy.java7
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java3
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializerTest.java11
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java10
10 files changed, 64 insertions, 76 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializer.java
index e80ee283aee..04d1a4c7433 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializer.java
@@ -14,7 +14,6 @@ import com.yahoo.vespa.hosted.controller.application.EndpointId;
import com.yahoo.vespa.hosted.controller.routing.RoutingStatus;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicy;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicyId;
-import com.yahoo.vespa.hosted.controller.routing.Status;
import java.time.Instant;
import java.util.Collections;
@@ -88,8 +87,8 @@ public class RoutingPolicySerializer {
SlimeUtils.optionalString(inspect.field(dnsZoneField)),
instanceEndpoints,
applicationEndpoints,
- new Status(inspect.field(loadBalancerActiveField).asBool(),
- globalRoutingFromSlime(inspect.field(globalRoutingField)))));
+ new RoutingPolicy.Status(inspect.field(loadBalancerActiveField).asBool(),
+ globalRoutingFromSlime(inspect.field(globalRoutingField)))));
});
return Collections.unmodifiableMap(policies);
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ZoneRoutingPolicySerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ZoneRoutingPolicySerializer.java
index 957c9166d28..5932c54650b 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ZoneRoutingPolicySerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/ZoneRoutingPolicySerializer.java
@@ -37,7 +37,7 @@ public class ZoneRoutingPolicySerializer {
public Slime toSlime(ZoneRoutingPolicy policy) {
var slime = new Slime();
var root = slime.setObject();
- routingPolicySerializer.globalRoutingToSlime(policy.globalRouting(), root.setObject(GLOBAL_ROUTING_FIELD));
+ routingPolicySerializer.globalRoutingToSlime(policy.routingStatus(), root.setObject(GLOBAL_ROUTING_FIELD));
return slime;
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
index e47dd45e4d7..50fccc19752 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/routing/RoutingApiHandler.java
@@ -230,7 +230,7 @@ public class RoutingApiHandler extends AuditLoggingRequestHandler {
private void toSlime(ZoneId zone, Cursor zoneObject) {
if (controller.zoneRegistry().zones().directlyRouted().ids().contains(zone)) {
var zonePolicy = controller.routing().policies().get(zone);
- zoneStatusToSlime(zoneObject, zonePolicy.zone(), zonePolicy.globalRouting(), RoutingMethod.exclusive);
+ zoneStatusToSlime(zoneObject, zonePolicy.zone(), zonePolicy.routingStatus(), RoutingMethod.exclusive);
} else {
// Rotation status per zone only exposes in/out status, no agent or time of change.
var in = controller.serviceRegistry().configServer().getGlobalRotationStatus(zone);
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
index b86e3637fdb..af3171181a2 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicies.java
@@ -248,7 +248,7 @@ public class RoutingPolicies {
var newPolicy = new RoutingPolicy(policyId, loadBalancer.hostname().get(), loadBalancer.dnsZone(),
allocation.instanceEndpointsOf(loadBalancer),
allocation.applicationEndpointsOf(loadBalancer),
- new Status(isActive(loadBalancer), RoutingStatus.DEFAULT));
+ new RoutingPolicy.Status(isActive(loadBalancer), RoutingStatus.DEFAULT));
// Preserve global routing status for existing policy
if (existingPolicy != null) {
newPolicy = newPolicy.with(newPolicy.status().with(existingPolicy.status().routingStatus()));
@@ -389,7 +389,7 @@ public class RoutingPolicies {
// - zone level (ZoneRoutingPolicy, only applies to global endpoints)
// - deployment level (RoutingPolicy)
// - application package level (deployment.xml)
- return (zonePolicy.isPresent() && zonePolicy.get().globalRouting().value() == RoutingStatus.Value.out) ||
+ return (zonePolicy.isPresent() && zonePolicy.get().routingStatus().value() == RoutingStatus.Value.out) ||
policy.status().routingStatus().value() == RoutingStatus.Value.out ||
inactiveZones.contains(policy.id().zone());
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicy.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicy.java
index ba8bf9c88ba..be8e49cf661 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicy.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/RoutingPolicy.java
@@ -142,4 +142,47 @@ public class RoutingPolicy {
.routingMethod(routingMethod);
}
+ /** The status of a routing policy */
+ public static class Status {
+
+ private final boolean active;
+ private final RoutingStatus routingStatus;
+
+ /** DO NOT USE. Public for serialization purposes */
+ public Status(boolean active, RoutingStatus routingStatus) {
+ this.active = active;
+ this.routingStatus = Objects.requireNonNull(routingStatus, "globalRouting must be non-null");
+ }
+
+ /** Returns whether this is considered active according to the load balancer status */
+ public boolean isActive() {
+ return active;
+ }
+
+ /** Return status of routing */
+ public RoutingStatus routingStatus() {
+ return routingStatus;
+ }
+
+ /** Returns a copy of this with routing status changed */
+ public Status with(RoutingStatus routingStatus) {
+ return new Status(active, routingStatus);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Status status = (Status) o;
+ return active == status.active &&
+ routingStatus.equals(status.routingStatus);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(active, routingStatus);
+ }
+
+ }
+
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/Status.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/Status.java
deleted file mode 100644
index 28ca6b7e1ac..00000000000
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/Status.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.routing;
-
-import java.util.Objects;
-
-/**
- * Represents the status of a routing policy.
- *
- * This is immutable.
- *
- * @author mpolden
- */
-public class Status {
-
- private final boolean active;
- private final RoutingStatus routingStatus;
-
- /** DO NOT USE. Public for serialization purposes */
- public Status(boolean active, RoutingStatus routingStatus) {
- this.active = active;
- this.routingStatus = Objects.requireNonNull(routingStatus, "globalRouting must be non-null");
- }
-
- /** Returns whether this is considered active according to the load balancer status */
- public boolean isActive() {
- return active;
- }
-
- /** Return status of routing */
- public RoutingStatus routingStatus() {
- return routingStatus;
- }
-
- /** Returns a copy of this with routing status changed */
- public Status with(RoutingStatus routingStatus) {
- return new Status(active, routingStatus);
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- Status status = (Status) o;
- return active == status.active &&
- routingStatus.equals(status.routingStatus);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(active, routingStatus);
- }
-
-}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/ZoneRoutingPolicy.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/ZoneRoutingPolicy.java
index 4a45d4e411a..60605df1002 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/ZoneRoutingPolicy.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/ZoneRoutingPolicy.java
@@ -6,7 +6,8 @@ import com.yahoo.config.provision.zone.ZoneId;
import java.util.Objects;
/**
- * Represents the DNS routing policy for a zone. This takes precedence over of an individual {@link RoutingPolicy}.
+ * Represents the DNS routing policy for a zone. This takes precedence over of a deployment-specific
+ * {@link RoutingPolicy}.
*
* This is immutable.
*
@@ -27,8 +28,8 @@ public class ZoneRoutingPolicy {
return zone;
}
- /** The status of global routing */
- public RoutingStatus globalRouting() {
+ /** Routing status of this policy */
+ public RoutingStatus routingStatus() {
return routingStatus;
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
index 7cb245bd82a..b9c1e9f3e72 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/deployment/DeploymentContext.java
@@ -38,7 +38,6 @@ import com.yahoo.vespa.hosted.controller.maintenance.NameServiceDispatcher;
import com.yahoo.vespa.hosted.controller.routing.RoutingStatus;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicy;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicyId;
-import com.yahoo.vespa.hosted.controller.routing.Status;
import javax.security.auth.x500.X500Principal;
import java.math.BigInteger;
@@ -245,7 +244,7 @@ public class DeploymentContext {
Optional.empty(),
Set.of(EndpointId.of("default")),
Set.of(),
- new Status(false, RoutingStatus.DEFAULT)));
+ new RoutingPolicy.Status(false, RoutingStatus.DEFAULT)));
tester.controller().curator().writeRoutingPolicies(instanceId, policies);
return this;
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializerTest.java
index b867e7639e2..2e36b8969ba 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/RoutingPolicySerializerTest.java
@@ -10,7 +10,6 @@ import com.yahoo.vespa.hosted.controller.application.EndpointId;
import com.yahoo.vespa.hosted.controller.routing.RoutingStatus;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicy;
import com.yahoo.vespa.hosted.controller.routing.RoutingPolicyId;
-import com.yahoo.vespa.hosted.controller.routing.Status;
import org.junit.Test;
import java.time.Instant;
@@ -43,16 +42,16 @@ public class RoutingPolicySerializerTest {
Optional.of("zone1"),
instanceEndpoints,
applicationEndpoints,
- new Status(true, RoutingStatus.DEFAULT)),
+ new RoutingPolicy.Status(true, RoutingStatus.DEFAULT)),
id2, new RoutingPolicy(id2,
HostName.from("long-and-ugly-name-2"),
Optional.empty(),
instanceEndpoints,
Set.of(),
- new Status(false,
- new RoutingStatus(RoutingStatus.Value.out,
- RoutingStatus.Agent.tenant,
- Instant.ofEpochSecond(123)))));
+ new RoutingPolicy.Status(false,
+ new RoutingStatus(RoutingStatus.Value.out,
+ RoutingStatus.Agent.tenant,
+ Instant.ofEpochSecond(123)))));
var serialized = serializer.fromSlime(owner, serializer.toSlime(policies));
assertEquals(policies.size(), serialized.size());
for (Iterator<RoutingPolicy> it1 = policies.values().iterator(), it2 = serialized.values().iterator(); it1.hasNext();) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
index 943dd89efa7..afcc5e14d82 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/routing/RoutingPoliciesTest.java
@@ -572,15 +572,15 @@ public class RoutingPoliciesTest {
assertTrue("Global routing status for policy remains " + RoutingStatus.Value.in,
policies.values().stream()
.map(RoutingPolicy::status)
- .map(Status::routingStatus)
+ .map(RoutingPolicy.Status::routingStatus)
.map(RoutingStatus::value)
.allMatch(status -> status == RoutingStatus.Value.in));
}
var changedAt = tester.controllerTester().clock().instant();
var zonePolicy = tester.controllerTester().controller().curator().readZoneRoutingPolicy(zone2);
- assertEquals(RoutingStatus.Value.out, zonePolicy.globalRouting().value());
- assertEquals(RoutingStatus.Agent.operator, zonePolicy.globalRouting().agent());
- assertEquals(changedAt.truncatedTo(ChronoUnit.MILLIS), zonePolicy.globalRouting().changedAt());
+ assertEquals(RoutingStatus.Value.out, zonePolicy.routingStatus().value());
+ assertEquals(RoutingStatus.Agent.operator, zonePolicy.routingStatus().agent());
+ assertEquals(changedAt.truncatedTo(ChronoUnit.MILLIS), zonePolicy.routingStatus().changedAt());
// Setting status per deployment does not affect status as entire zone is out
tester.routingPolicies().setRoutingStatus(context1.deploymentIdIn(zone2), RoutingStatus.Value.in, RoutingStatus.Agent.tenant);
@@ -668,7 +668,7 @@ public class RoutingPoliciesTest {
// Setting zone (containing active deployment) out puts all deployments in
tester.routingPolicies().setRoutingStatus(zone1, RoutingStatus.Value.out);
context.flushDnsUpdates();
- assertEquals(RoutingStatus.Value.out, tester.routingPolicies().get(zone1).globalRouting().value());
+ assertEquals(RoutingStatus.Value.out, tester.routingPolicies().get(zone1).routingStatus().value());
tester.assertTargets(context.instanceId(), EndpointId.of("r0"), 0, ImmutableMap.of(zone1, 0L, zone2, 0L));
// Setting zone back in removes the currently inactive deployment