diff --git a/src/NATS.Client.KeyValueStore/NatsKVConfig.cs b/src/NATS.Client.KeyValueStore/NatsKVConfig.cs index ac4432819..1e7238fd9 100644 --- a/src/NATS.Client.KeyValueStore/NatsKVConfig.cs +++ b/src/NATS.Client.KeyValueStore/NatsKVConfig.cs @@ -77,6 +77,11 @@ public record NatsKVConfig /// Sources defines the configuration for sources of a KeyValue store. /// public ICollection? Sources { get; set; } + + /// + /// Additional metadata for the Bucket + /// + public IDictionary? Metadata { get; set; } } /// diff --git a/src/NATS.Client.KeyValueStore/NatsKVContext.cs b/src/NATS.Client.KeyValueStore/NatsKVContext.cs index 646f03b01..6c0389a32 100644 --- a/src/NATS.Client.KeyValueStore/NatsKVContext.cs +++ b/src/NATS.Client.KeyValueStore/NatsKVContext.cs @@ -246,6 +246,7 @@ private static StreamConfig CreateStreamConfig(NatsKVConfig config) MirrorDirect = mirrorDirect, Sources = sources, Retention = StreamConfigRetention.Limits, // from ADR-8 + Metadata = config.Metadata, }; return streamConfig; diff --git a/tests/NATS.Client.KeyValueStore.Tests/KeyValueStoreTest.cs b/tests/NATS.Client.KeyValueStore.Tests/KeyValueStoreTest.cs index dfb6100c8..b359562bc 100644 --- a/tests/NATS.Client.KeyValueStore.Tests/KeyValueStoreTest.cs +++ b/tests/NATS.Client.KeyValueStore.Tests/KeyValueStoreTest.cs @@ -515,7 +515,13 @@ public async Task Status() var js = new NatsJSContext(nats); var kv = new NatsKVContext(js); - var store = await kv.CreateStoreAsync(new NatsKVConfig("kv1") { History = 10 }, cancellationToken: cancellationToken); + var store = await kv.CreateStoreAsync( + new NatsKVConfig("kv1") + { + History = 10, + Metadata = new Dictionary { { "meta1", "value1" } }, + }, + cancellationToken: cancellationToken); Assert.Equal("kv1", store.Bucket); @@ -524,6 +530,16 @@ public async Task Status() Assert.Equal("kv1", status.Bucket); Assert.Equal("KV_kv1", status.Info.Config.Name); Assert.Equal(10, status.Info.Config.MaxMsgsPerSubject); + + if (!nats.ServerInfo!.Version.StartsWith("2.9.")) + { + _output.WriteLine("Check metadata"); + Assert.Equal("value1", status.Info.Config.Metadata?["meta1"]); + } + else + { + _output.WriteLine("Metadata is not supported in server versions < 2.10"); + } } [SkipIfNatsServer(versionEarlierThan: "2.10")]