Updated hostname for registered stubs

This commit is contained in:
Marcin Grzejszczak
2016-09-16 16:28:58 +02:00
parent 8c89ec48b7
commit d510e8bdf3
2 changed files with 19 additions and 6 deletions

View File

@@ -7,10 +7,12 @@ 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.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.cloud.netflix.eureka.EurekaInstanceConfigBean;
import org.springframework.util.StringUtils;
/**
@@ -27,23 +29,32 @@ public class EurekaStubsRegistrar implements StubsRegistrar {
private final StubRunning stubRunning;
private final Eureka eurekaClient;
private final StubMapperProperties stubMapperProperties;
private final InetUtils inetUtils;
private final EurekaInstanceConfigBean eurekaInstanceConfigBean;
private final List<Renewer> discoveryList = new LinkedList<>();
public EurekaStubsRegistrar(StubRunning stubRunning, Eureka eureka,
StubMapperProperties stubMapperProperties) {
StubMapperProperties stubMapperProperties, InetUtils inetUtils,
EurekaInstanceConfigBean eurekaInstanceConfigBean) {
this.stubRunning = stubRunning;
this.stubMapperProperties = stubMapperProperties;
this.eurekaClient = eureka;
this.inetUtils = inetUtils;
this.eurekaInstanceConfigBean = eurekaInstanceConfigBean;
}
@Override public void registerStubs() {
Map<StubConfiguration, Integer> activeStubs = this.stubRunning.runStubs()
.validNamesAndPorts();
for (Map.Entry<StubConfiguration, Integer> entry : activeStubs.entrySet()) {
Application application = new Application(name(entry.getKey()), entry.getKey().getArtifactId(), "localhost", entry.getValue());
Application application = new Application(name(entry.getKey()), entry.getKey().getArtifactId(),
StringUtils.hasText(this.eurekaInstanceConfigBean.getHostname()) ?
this.eurekaInstanceConfigBean.getHostname() :
this.inetUtils.findFirstNonLoopbackAddress().getHostName(), entry.getValue());
try {
Registration register = this.eurekaClient.register(application);
this.discoveryList.add(new Renewer(this.eurekaClient.clientConfig.getInstanceInfoReplicationIntervalSeconds() / 2, this.eurekaClient, register));
this.discoveryList.add(new Renewer(
this.eurekaClient.clientConfig.getInstanceInfoReplicationIntervalSeconds() / 2, this.eurekaClient, register));
if (log.isDebugEnabled()) {
log.debug("Successfully registered stub [" + entry.getKey().toColonSeparatedDependencyNotation()
+ "] in Service Discovery");

View File

@@ -28,6 +28,7 @@ import org.springframework.cloud.contract.stubrunner.spring.cloud.StubsRegistrar
import org.springframework.cloud.netflix.eureka.CloudEurekaClient;
import org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -52,13 +53,14 @@ public class StubRunnerSpringCloudEurekaAutoConfiguration {
@Bean(initMethod = "registerStubs")
public StubsRegistrar stubsRegistrar(StubRunning stubRunning, Eureka eureka,
StubMapperProperties stubMapperProperties) {
return new EurekaStubsRegistrar(stubRunning, eureka, stubMapperProperties);
StubMapperProperties stubMapperProperties, InetUtils inetUtils, EurekaInstanceConfigBean eurekaInstanceConfigBean) {
return new EurekaStubsRegistrar(stubRunning, eureka, stubMapperProperties, inetUtils, eurekaInstanceConfigBean);
}
@Bean(name = "eurekaRegistrar")
public Eureka eureka(InetUtils inetUtils, ApplicationInfoManager manager,
EurekaClientConfig config, ApplicationContext applicationContext, EurekaClientConfigBean eurekaClientConfigBean) {
EurekaClientConfig config, ApplicationContext applicationContext,
EurekaClientConfigBean eurekaClientConfigBean) {
return new Eureka(inetUtils, eurekaClientConfigBean, new CloudEurekaClient(manager, config, applicationContext));
}
}