diff options
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/CuratorDb.java | 32 |
1 files changed, 32 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 0e8f1648765..d582937cb0b 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 @@ -34,6 +34,7 @@ import com.yahoo.vespa.hosted.controller.routing.RoutingPolicy; import com.yahoo.vespa.hosted.controller.routing.RoutingStatus; import com.yahoo.vespa.hosted.controller.routing.ZoneRoutingPolicy; import com.yahoo.vespa.hosted.controller.support.access.SupportAccess; +import com.yahoo.vespa.hosted.controller.tenant.PendingMailVerification; import com.yahoo.vespa.hosted.controller.tenant.Tenant; import com.yahoo.vespa.hosted.controller.versions.OsVersionStatus; import com.yahoo.vespa.hosted.controller.versions.OsVersionTarget; @@ -94,6 +95,7 @@ public class CuratorDb { private static final Path changeRequestsRoot = root.append("changeRequests"); private static final Path notificationsRoot = root.append("notifications"); private static final Path supportAccessRoot = root.append("supportAccess"); + private static final Path mailVerificationRoot = root.append("mailVerification"); private final NodeVersionSerializer nodeVersionSerializer = new NodeVersionSerializer(); private final VersionStatusSerializer versionStatusSerializer = new VersionStatusSerializer(nodeVersionSerializer); @@ -231,6 +233,10 @@ public class CuratorDb { return curator.lock(lockRoot.append("deploymentRetriggerQueue"), defaultLockTimeout); } + public Mutex lockPendingMailVerification(String verificationCode) { + return curator.lock(lockRoot.append("pendingMailVerification").append(verificationCode), defaultLockTimeout); + } + // -------------- Helpers ------------------------------------------ /** Try locking with a low timeout, meaning it is OK to fail lock acquisition. @@ -655,6 +661,28 @@ public class CuratorDb { curator.set(deploymentRetriggerPath(), asJson(retriggerEntrySerializer.toSlime(retriggerEntries))); } + // -------------- Pending mail verification ------------------------------- + + public Optional<PendingMailVerification> getPendingMailVerification(String verificationCode) { + return readSlime(mailVerificationPath(verificationCode)).map(MailVerificationSerializer::fromSlime); + } + + public List<PendingMailVerification> listPendingMailVerifications() { + return curator.getChildren(mailVerificationRoot) + .stream() + .map(this::getPendingMailVerification) + .flatMap(Optional::stream) + .collect(Collectors.toList()); + } + + public void writePendingMailVerification(PendingMailVerification pendingMailVerification) { + curator.set(mailVerificationPath(pendingMailVerification.getVerificationCode()), asJson(MailVerificationSerializer.toSlime(pendingMailVerification))); + } + + public void deletePendingMailVerification(PendingMailVerification pendingMailVerification) { + curator.delete(mailVerificationPath(pendingMailVerification.getVerificationCode())); + } + // -------------- Paths --------------------------------------------------- private static Path upgradesPerMinutePath() { @@ -755,4 +783,8 @@ public class CuratorDb { return root.append("deploymentRetriggerQueue"); } + private static Path mailVerificationPath(String verificationCode) { + return mailVerificationRoot.append(verificationCode); + } + } |