Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding;

internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor
internal sealed class MongoDbLegacyConnectorPostProcessor : IConfigurationPostProcessor
{
internal const string BindingTypeKey = "rabbitmq";
internal const string BindingTypeKey = "mongodb";

public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary<string, string> configData)
{
Expand All @@ -19,17 +19,17 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider

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");
});
{
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");
});
}
}

Expand Down Expand Up @@ -100,3 +100,55 @@ public void PostProcessConfiguration(PostProcessorConfigurationProvider provider
});
}
}

internal sealed class RabbitMQLegacyConnectorPostProcessor : IConfigurationPostProcessor
{
internal const string BindingTypeKey = "rabbitmq";

public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary<string, string> 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 RedisLegacyConnectorPostProcessor : IConfigurationPostProcessor
{
internal const string BindingTypeKey = "redis";

public void PostProcessConfiguration(PostProcessorConfigurationProvider provider, IDictionary<string, string> 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");
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,19 @@ namespace Steeltoe.Extensions.Configuration.Kubernetes.ServiceBinding.Test;
public class LegacyConnectorsPostProcessorsTest : BasePostProcessorsTest
{
[Fact]
public void RabbitMQTest_BindingTypeEnabled()
public void MongoDbTest_BindingTypeEnabled()
{
var postProcessor = new RabbitMQLegacyConnectorPostProcessor();
var postProcessor = new MongoDbLegacyConnectorPostProcessor();

Dictionary<string, string> 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"));
Dictionary<string, string> 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, 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"]);
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]
Expand Down Expand Up @@ -63,4 +62,37 @@ 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<string, string> 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 RedisTest_BindingTypeEnabled()
{
var postProcessor = new RedisLegacyConnectorPostProcessor();

Dictionary<string, string> 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"]);
}
}