summaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2023-07-12 13:32:20 +0200
committerBjørn Christian Seime <bjorncs@yahooinc.com>2023-07-12 13:37:30 +0200
commit876ca0b666b01fd88be644a1e31065c5707254f0 (patch)
tree8f9a3d6e08248e990698ce263358b9c27118baf1 /configserver
parent5df78771f0ff297c7d83eaaaa71df067896d5520 (diff)
Add expiration concept to data plane tokens
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializer.java8
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java2
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializerTest.java9
3 files changed, 14 insertions, 5 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializer.java
index 27012ae69fe..a8dc48e6c14 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializer.java
@@ -7,7 +7,9 @@ import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeUtils;
+import java.time.Instant;
import java.util.List;
+import java.util.Optional;
/**
* Serialize/deserialize dataplane tokens
@@ -20,6 +22,7 @@ public class DataplaneTokenSerializer {
private static final String VERSIONS_FIELD = "versions";
private static final String FINGERPRINT_FIELD = "fingerPrint";
private static final String CHECKACCESSHASH_FIELD = "checkAccessHash";
+ private static final String EXPIRATION_FIELD = "expiration";
private DataplaneTokenSerializer() {}
@@ -39,9 +42,11 @@ public class DataplaneTokenSerializer {
}
private static DataplaneToken.Version tokenValue(Inspector inspector) {
+ String expirationStr = inspector.field(EXPIRATION_FIELD).asString();
return new DataplaneToken.Version(
inspector.field(FINGERPRINT_FIELD).asString(),
- inspector.field(CHECKACCESSHASH_FIELD).asString());
+ inspector.field(CHECKACCESSHASH_FIELD).asString(),
+ expirationStr.equals("<none>") ? Optional.empty() : Optional.of(Instant.parse(expirationStr)));
}
public static Slime toSlime(List<DataplaneToken> dataplaneTokens) {
@@ -55,6 +60,7 @@ public class DataplaneTokenSerializer {
Cursor val = versions.addObject();
val.setString(FINGERPRINT_FIELD, v.fingerprint());
val.setString(CHECKACCESSHASH_FIELD, v.checkAccessHash());
+ val.setString(EXPIRATION_FIELD, v.expiration().map(Instant::toString).orElse("<none>"));
});
}
return slime;
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
index f7b2d4119a7..52d5ba16562 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java
@@ -366,7 +366,7 @@ public class SessionPreparerTest {
TestModelFactory modelFactory = new TestModelFactory(version123);
preparer = createPreparer(new ModelFactoryRegistry(List.of(modelFactory)), HostProvisionerProvider.empty());
ApplicationId applicationId = applicationId("test");
- List<DataplaneToken> expected = List.of(new DataplaneToken("id", List.of(new DataplaneToken.Version("f1", "ch1"))));
+ List<DataplaneToken> expected = List.of(new DataplaneToken("id", List.of(new DataplaneToken.Version("f1", "ch1", Optional.empty()))));
PrepareParams params = new PrepareParams.Builder().applicationId(applicationId)
.dataplaneTokens(expected)
.build();
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializerTest.java
index 505abcb5598..59e98742777 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/DataplaneTokenSerializerTest.java
@@ -5,7 +5,10 @@ import com.yahoo.config.provision.DataplaneToken;
import com.yahoo.slime.Slime;
import org.junit.Test;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
import java.util.List;
+import java.util.Optional;
import static org.junit.Assert.assertEquals;
@@ -18,10 +21,10 @@ public class DataplaneTokenSerializerTest {
public void testSerialization() {
List<DataplaneToken> tokens = List.of(
new DataplaneToken("id1",
- List.of(new DataplaneToken.Version("id1_fingerPrint1", "id1_checkaccesshash1"))),
+ List.of(new DataplaneToken.Version("id1_fingerPrint1", "id1_checkaccesshash1", Optional.empty()))),
new DataplaneToken("id2",
- List.of(new DataplaneToken.Version("id2_fingerPrint1", "id2_checkaccesshash1"),
- new DataplaneToken.Version("id3_fingerPrint1", "id3_checkaccesshash1"))));
+ List.of(new DataplaneToken.Version("id2_fingerPrint1", "id2_checkaccesshash1", Optional.of(Instant.EPOCH)),
+ new DataplaneToken.Version("id3_fingerPrint1", "id3_checkaccesshash1", Optional.of(Instant.EPOCH.plus(20000, ChronoUnit.DAYS))))));
Slime slime = DataplaneTokenSerializer.toSlime(tokens);
List<DataplaneToken> deserialized = DataplaneTokenSerializer.fromSlime(slime.get());
assertEquals(tokens, deserialized);