summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java
new file mode 100644
index 00000000000..e949c45f2fd
--- /dev/null
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/routing/context/ExclusiveRoutingContext.java
@@ -0,0 +1,41 @@
+// 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.context;
+
+import com.yahoo.config.provision.zone.RoutingMethod;
+import com.yahoo.config.provision.zone.ZoneId;
+import com.yahoo.vespa.hosted.controller.routing.RoutingPolicies;
+import com.yahoo.vespa.hosted.controller.routing.RoutingStatus;
+
+import java.util.Objects;
+
+/**
+ * An implementation of {@link RoutingContext} for a zone using {@link RoutingMethod#exclusive} routing.
+ *
+ * @author mpolden
+ */
+public class ExclusiveRoutingContext implements RoutingContext {
+
+ private final RoutingPolicies policies;
+ private final ZoneId zone;
+
+ public ExclusiveRoutingContext(ZoneId zone, RoutingPolicies policies) {
+ this.policies = Objects.requireNonNull(policies);
+ this.zone = Objects.requireNonNull(zone);
+ }
+
+ @Override
+ public void setRoutingStatus(RoutingStatus.Value value, RoutingStatus.Agent agent) {
+ policies.setRoutingStatus(zone, value);
+ }
+
+ @Override
+ public RoutingStatus routingStatus() {
+ return policies.get(zone).routingStatus();
+ }
+
+ @Override
+ public RoutingMethod routingMethod() {
+ return RoutingMethod.exclusive;
+ }
+
+}