Adds support for spring.config.import=consul:host:port

This commit is contained in:
spencergibb
2020-09-09 16:34:46 -04:00
parent 989485a4e5
commit 99e3ecac17
2 changed files with 17 additions and 8 deletions

View File

@@ -60,7 +60,7 @@ public class ConsulConfigDataLocationResolver
public List<ConsulConfigDataLocation> resolveProfileSpecific(
ConfigDataLocationResolverContext context, String location, boolean optional,
Profiles profiles) throws ConfigDataLocationNotFoundException {
//TODO: add support for consul host and port from location
ConsulConfigProperties properties = loadConfigProperties(context.getBinder());
String appName = properties.getName();
@@ -103,7 +103,7 @@ public class ConsulConfigDataLocationResolver
Collections.reverse(contexts);
// TODO use location for host:port
ConsulClient consul = createConsulClient(context);
ConsulClient consul = createConsulClient(context, location);
registerBean(context, ConsulClient.class, consul);
@@ -127,9 +127,19 @@ public class ConsulConfigDataLocationResolver
"configData" + type.getSimpleName(), consulClient));
}
protected ConsulClient createConsulClient(ConfigDataLocationResolverContext context) {
return ConsulAutoConfiguration
.createConsulClient(loadProperties(context.getBinder()));
protected ConsulClient createConsulClient(ConfigDataLocationResolverContext context, String location) {
ConsulProperties properties = loadProperties(context.getBinder());
String hostPort = location.substring("consul:".length());
if (StringUtils.hasText(hostPort)) {
String[] split = hostPort.split(":");
if (split.length == 2) { // host and port
properties.setHost(split[0]);
properties.setPort(Integer.parseInt(split[1]));
}
}
return ConsulAutoConfiguration.createConsulClient(properties);
}
protected String getContext(String prefix, String context) {

View File

@@ -89,9 +89,8 @@ public class ConsulConfigDataIntegrationTests {
context = new SpringApplicationBuilder(Config.class).web(WebApplicationType.NONE)
.run("--spring.application.name=" + APP_NAME,
"--spring.config.import=consul:", "--debug",
"--spring.cloud.consul.host=" + ConsulTestcontainers.getHost(),
"--spring.cloud.consul.port=" + ConsulTestcontainers.getPort(),
"--spring.config.import=consul:" + ConsulTestcontainers.getHost() + ":" +
ConsulTestcontainers.getPort(),
"--spring.cloud.consul.config.prefix=" + ROOT,
"--spring.cloud.consul.config.watch.delay=10");