#491 - Stubs are registered to consul with localhost

This commit is contained in:
rbrody
2017-12-10 14:06:41 +02:00
parent d9790a4b17
commit 9a297437d8
2 changed files with 28 additions and 15 deletions

View File

@@ -1,21 +1,21 @@
package org.springframework.cloud.contract.stubrunner.spring.cloud.consul;
import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.agent.model.NewService;
import java.lang.invoke.MethodHandles;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.contract.stubrunner.StubConfiguration;
import org.springframework.cloud.contract.stubrunner.StubRunning;
import org.springframework.cloud.contract.stubrunner.spring.cloud.StubMapperProperties;
import org.springframework.cloud.contract.stubrunner.spring.cloud.StubsRegistrar;
import org.springframework.util.StringUtils;
import com.ecwid.consul.v1.ConsulClient;
import com.ecwid.consul.v1.agent.model.NewService;
/**
* Registers all stubs in Zookeeper Service Discovery
*
@@ -30,13 +30,19 @@ public class ConsulStubsRegistrar implements StubsRegistrar {
private final StubRunning stubRunning;
private final ConsulClient consulClient;
private final StubMapperProperties stubMapperProperties;
private final ConsulDiscoveryProperties consulDiscoveryProperties;
private final InetUtils inetUtils;
private final List<NewService> services = new LinkedList<>();
public ConsulStubsRegistrar(StubRunning stubRunning, ConsulClient consulClient,
StubMapperProperties stubMapperProperties) {
StubMapperProperties stubMapperProperties,
ConsulDiscoveryProperties consulDiscoveryProperties,
InetUtils inetUtils) {
this.stubRunning = stubRunning;
this.consulClient = consulClient;
this.stubMapperProperties = stubMapperProperties;
this.consulDiscoveryProperties = consulDiscoveryProperties;
this.inetUtils = inetUtils;
}
@Override public void registerStubs() {
@@ -61,7 +67,9 @@ public class ConsulStubsRegistrar implements StubsRegistrar {
protected NewService newService(StubConfiguration stubConfiguration, Integer port) {
NewService newService = new NewService();
newService.setAddress("localhost");
newService.setAddress(StringUtils.hasText(consulDiscoveryProperties.getHostname()) ?
consulDiscoveryProperties.getHostname() :
inetUtils.findFirstNonLoopbackAddress().getHostName());
newService.setId(stubConfiguration.getArtifactId());
newService.setName(name(stubConfiguration));
newService.setPort(port);

View File

@@ -16,9 +16,13 @@
package org.springframework.cloud.contract.stubrunner.spring.cloud.consul;
import com.ecwid.consul.v1.ConsulClient;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration;
import org.springframework.cloud.contract.stubrunner.StubRunning;
import org.springframework.cloud.contract.stubrunner.spring.StubRunnerConfiguration;
import org.springframework.cloud.contract.stubrunner.spring.cloud.ConditionalOnStubbedDiscoveryDisabled;
@@ -27,25 +31,26 @@ import org.springframework.cloud.contract.stubrunner.spring.cloud.StubsRegistrar
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.ecwid.consul.v1.ConsulClient;
/**
* Autoconfiguration for registering stubs in a Zookeeper Service discovery
*
* @author Marcin Grzejszczak
*
* @since 1.0.0
*/
@Configuration
@AutoConfigureAfter(StubRunnerConfiguration.class)
@AutoConfigureAfter(value = {StubRunnerConfiguration.class,
ConsulServiceRegistryAutoConfiguration.class})
@ConditionalOnClass(ConsulClient.class)
@ConditionalOnStubbedDiscoveryDisabled
@ConditionalOnProperty(value = "stubrunner.cloud.consul.enabled", matchIfMissing = true)
public class StubRunnerSpringCloudConsulAutoConfiguration {
@Bean(initMethod = "registerStubs")
public StubsRegistrar stubsRegistrar(StubRunning stubRunning, ConsulClient consulClient,
StubMapperProperties stubMapperProperties) {
return new ConsulStubsRegistrar(stubRunning, consulClient, stubMapperProperties);
}
@Bean(initMethod = "registerStubs")
public StubsRegistrar stubsRegistrar(StubRunning stubRunning, ConsulClient consulClient,
StubMapperProperties stubMapperProperties,
ConsulDiscoveryProperties consulDiscoveryProperties,
InetUtils inetUtils) {
return new ConsulStubsRegistrar(stubRunning, consulClient, stubMapperProperties,
consulDiscoveryProperties, inetUtils);
}
}