diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-07-12 13:32:20 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-07-12 13:37:30 +0200 |
commit | 876ca0b666b01fd88be644a1e31065c5707254f0 (patch) | |
tree | 8f9a3d6e08248e990698ce263358b9c27118baf1 /configserver | |
parent | 5df78771f0ff297c7d83eaaaa71df067896d5520 (diff) |
Add expiration concept to data plane tokens
Diffstat (limited to 'configserver')
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); |