Adds support for spring.config.import=consul:host:port
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user