summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorAndreas Eriksen <andreer@pvv.ntnu.no>2017-10-11 08:53:02 +0200
committerGitHub <noreply@github.com>2017-10-11 08:53:02 +0200
commitd79985b3b035009e7ae58bfe8769ae4b23ed593d (patch)
tree2a2633373ac50c850f84877b1efeae8b090c1c3d /controller-server
parent6efb031eb2e0aede46036f1963b2ac5fc5932f12 (diff)
primitives for storing and synchronizing provision states in zk (#3702)
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
index 66821b22458..a70e31d9de8 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java
@@ -23,6 +23,7 @@ import java.util.ArrayDeque;
import java.util.Collections;
import java.util.Deque;
import java.util.HashSet;
+import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -141,6 +142,10 @@ public class CuratorDb {
return lock(root.append("locks").append("maintenanceJobLocks").append(jobName), Duration.ofSeconds(1));
}
+ public Lock lockProvisionState(String provisionStateId) {
+ return lock(lockPath(provisionStateId), Duration.ofMinutes(30));
+ }
+
// -------------- Read and write --------------------------------------------------
public Version readSystemVersion() {
@@ -210,6 +215,18 @@ public class CuratorDb {
transaction.commit();
}
+ public Optional<byte[]> readProvisionState(String provisionId) {
+ return curator.getData(provisionStatePath().append(provisionId));
+ }
+
+ public void writeProvisionState(String provisionId, byte[] data) {
+ curator.set(provisionStatePath().append(provisionId), data);
+ }
+
+ public List<String> readProvisionStateIds() {
+ return curator.getChildren(provisionStatePath());
+ }
+
// -------------- Paths --------------------------------------------------
private Path systemVersionPath() {
@@ -232,6 +249,13 @@ public class CuratorDb {
return lockPath;
}
+ private Path lockPath(String provisionId) {
+ Path lockPath = root.append("locks")
+ .append(provisionStatePath());
+ curator.create(lockPath);
+ return lockPath;
+ }
+
private Path inactiveJobsPath() {
return root.append("inactiveJobs");
}
@@ -244,4 +268,11 @@ public class CuratorDb {
return root.append("upgrader").append("upgradesPerMinute");
}
+ private Path provisionStatePath() {
+ return root.append("provisioning").append("states");
+ }
+
+ private Path provisionStatePath(String provisionId) {
+ return provisionStatePath().append(provisionId);
+ }
}