From 87b583f4fbe9dd22df743e69090011ea1f73da6c Mon Sep 17 00:00:00 2001 From: Tim Hess Date: Fri, 3 Nov 2023 09:30:15 -0500 Subject: [PATCH 1/2] sort alphabetically --- .../LegacyConnectorsPostProcessors.cs | 54 +++++++++---------- .../LegacyConnectorsPostProcessorsTest.cs | 34 ++++++------ 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs index 322bb041fe..7c32e49153 100644 --- a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs +++ b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs @@ -6,33 +6,6 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding; -internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor -{ - internal const string BindingTypeKey = "rabbitmq"; - - public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) - { - if (!provider.IsBindingTypeEnabled(BindingTypeKey)) - { - return; - } - - configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( - bindingNameKey => - { - // Spring -> spring.rabbitmq.... - // Steeltoe -> rabbitmq:client:.... - var mapper = new ServiceBindingMapper(configData, bindingNameKey, "rabbitmq", "client"); - mapper.MapFromTo("addresses", "uri"); - mapper.MapFromTo("host", "server"); - mapper.MapFromTo("password", "password"); - mapper.MapFromTo("port", "port"); - mapper.MapFromTo("username", "username"); - mapper.MapFromTo("virtual-host", "virtualhost"); - }); - } -} - internal sealed class MySqlLegacyConnectorPostProcessor : IConfigurationPostProcessor { internal const string BindingTypeKey = "mysql"; @@ -100,3 +73,30 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider }); } } + +internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor +{ + internal const string BindingTypeKey = "rabbitmq"; + + public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) + { + if (!provider.IsBindingTypeEnabled(BindingTypeKey)) + { + return; + } + + configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( + bindingNameKey => + { + // Spring -> spring.rabbitmq.... + // Steeltoe -> rabbitmq:client:.... + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "rabbitmq", "client"); + mapper.MapFromTo("addresses", "uri"); + mapper.MapFromTo("host", "server"); + mapper.MapFromTo("password", "password"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("username", "username"); + mapper.MapFromTo("virtual-host", "virtualhost"); + }); + } +} diff --git a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs index d4a667d83b..ea3db77de3 100644 --- a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs +++ b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs @@ -10,23 +10,6 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding.Test; public class LegacyConnectorsPostProcessorsTest : BasePostProcessorsTest { - [Fact] - public void RabbitMQTest_BindingTypeEnabled() - { - var postProcessor = new RabbitMQLegacyConnectorPostProcessor(); - - Dictionary configData = GetConfigData(_testBindingName, RabbitMQPostProcessor.BindingTypeKey, Tuple.Create("addresses", "test-addresses"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("virtual-host", "test-virtual-host")); - - // BindingType enabled - postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RabbitMQPostProcessor.BindingTypeKey, true), configData); - Assert.Equal("test-addresses", configData["rabbitmq:client:uri"]); - Assert.Equal("test-host", configData["rabbitmq:client:server"]); - Assert.Equal("test-password", configData["rabbitmq:client:password"]); - Assert.Equal("test-port", configData["rabbitmq:client:port"]); - Assert.Equal("test-username", configData["rabbitmq:client:username"]); - Assert.Equal("test-virtual-host", configData["rabbitmq:client:virtualhost"]); - } - [Fact] public void MySqlTest_BindingTypeEnabled() { @@ -63,4 +46,21 @@ public void PostgreSqlTest_BindingTypeEnabled() Assert.Equal("root.cert", configData["postgres:client:sslrootcert"]); Assert.Equal("--cluster=routing-id&opt=val1", configData["postgres:client:options"]); } + + [Fact] + public void RabbitMQTest_BindingTypeEnabled() + { + var postProcessor = new RabbitMQLegacyConnectorPostProcessor(); + + Dictionary configData = GetConfigData(_testBindingName, RabbitMQPostProcessor.BindingTypeKey, Tuple.Create("addresses", "test-addresses"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("virtual-host", "test-virtual-host")); + + // BindingType enabled + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RabbitMQPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-addresses", configData["rabbitmq:client:uri"]); + Assert.Equal("test-host", configData["rabbitmq:client:server"]); + Assert.Equal("test-password", configData["rabbitmq:client:password"]); + Assert.Equal("test-port", configData["rabbitmq:client:port"]); + Assert.Equal("test-username", configData["rabbitmq:client:username"]); + Assert.Equal("test-virtual-host", configData["rabbitmq:client:virtualhost"]); + } } From 9ccd0c1bc250aa86451b0e2483497f2dd834f83a Mon Sep 17 00:00:00 2001 From: Tim Hess Date: Fri, 3 Nov 2023 09:33:01 -0500 Subject: [PATCH 2/2] Add mappings for MongoDb and Redis --- .../LegacyConnectorsPostProcessors.cs | 52 +++++++++++++++++++ .../LegacyConnectorsPostProcessorsTest.cs | 32 ++++++++++++ 2 files changed, 84 insertions(+) diff --git a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs index 7c32e49153..08d71d1e93 100644 --- a/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs +++ b/src/Configuration/src/Kubernetes.ServiceBinding/LegacyConnectorsPostProcessors.cs @@ -6,6 +6,33 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding; +internal sealed class MongoDbLegacyConnectorPostProcessor : IConfigurationPostProcessor +{ + internal const string BindingTypeKey = "mongodb"; + + public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) + { + if (!provider.IsBindingTypeEnabled(BindingTypeKey)) + { + return; + } + + configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( + bindingNameKey => + { + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "mongodb", "client"); + + // Spring -> spring.data.mongodb.... + // Steeltoe -> mongodb:client:... + mapper.MapFromTo("host", "server"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("database", "database"); + mapper.MapFromTo("username", "username"); + mapper.MapFromTo("password", "password"); + }); + } +} + internal sealed class MySqlLegacyConnectorPostProcessor : IConfigurationPostProcessor { internal const string BindingTypeKey = "mysql"; @@ -100,3 +127,28 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider }); } } + +internal sealed class RedisLegacyConnectorPostProcessor : IConfigurationPostProcessor +{ + internal const string BindingTypeKey = "redis"; + + public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary configData) + { + if (!provider.IsBindingTypeEnabled(BindingTypeKey)) + { + return; + } + + configData.Filter(ServiceBindingConfigurationProvider.KubernetesBindingsPrefix, ServiceBindingConfigurationProvider.TypeKey, BindingTypeKey).ForEach( + bindingNameKey => + { + var mapper = new ServiceBindingMapper(configData, bindingNameKey, "redis", "client"); + + mapper.MapFromTo("host", "host"); + mapper.MapFromTo("port", "port"); + mapper.MapFromTo("ssl", "ssl"); + mapper.MapFromTo("password", "password"); + mapper.MapFromTo("client-name", "clientName"); + }); + } +} diff --git a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs index ea3db77de3..63c2bfc7ec 100644 --- a/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs +++ b/src/Configuration/test/Kubernetes.ServiceBinding.Test/LegacyConnectorsPostProcessorsTest.cs @@ -10,6 +10,22 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding.Test; public class LegacyConnectorsPostProcessorsTest : BasePostProcessorsTest { + [Fact] + public void MongoDbTest_BindingTypeEnabled() + { + var postProcessor = new MongoDbLegacyConnectorPostProcessor(); + + Dictionary configData = GetConfigData(_testBindingName, MongoDbPostProcessor.BindingTypeKey, Tuple.Create("database", "test-database"), Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username")); + + // BindingType enabled + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, MongoDbPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-host", configData["mongodb:client:server"]); + Assert.Equal("test-port", configData["mongodb:client:port"]); + Assert.Equal("test-database", configData["mongodb:client:database"]); + Assert.Equal("test-username", configData["mongodb:client:username"]); + Assert.Equal("test-password", configData["mongodb:client:password"]); + } + [Fact] public void MySqlTest_BindingTypeEnabled() { @@ -63,4 +79,20 @@ public void RabbitMQTest_BindingTypeEnabled() Assert.Equal("test-username", configData["rabbitmq:client:username"]); Assert.Equal("test-virtual-host", configData["rabbitmq:client:virtualhost"]); } + + [Fact] + public void RedisTest_BindingTypeEnabled() + { + var postProcessor = new RedisLegacyConnectorPostProcessor(); + + Dictionary configData = GetConfigData(_testBindingName, RedisPostProcessor.BindingTypeKey, Tuple.Create("host", "test-host"), Tuple.Create("password", "test-password"), Tuple.Create("port", "test-port"), Tuple.Create("username", "test-username"), Tuple.Create("client-name", "test-client"), Tuple.Create("ssl", "true")); + + // BindingType enabled + postProcessor.PostProcessConfiguration(GetConfigurationProvider(postProcessor, RedisPostProcessor.BindingTypeKey, true), configData); + Assert.Equal("test-host", configData["redis:client:host"]); + Assert.Equal("test-port", configData["redis:client:port"]); + Assert.Equal("true", configData["redis:client:ssl"]); + Assert.Equal("test-password", configData["redis:client:password"]); + Assert.Equal("test-client", configData["redis:client:clientName"]); + } }