From 9a297437d81962375dbe27cf37ea0006c5a63a97 Mon Sep 17 00:00:00 2001 From: rbrody Date: Sun, 10 Dec 2017 14:06:41 +0200 Subject: [PATCH] #491 - Stubs are registered to consul with localhost --- .../cloud/consul/ConsulStubsRegistrar.java | 20 +++++++++++----- ...nerSpringCloudConsulAutoConfiguration.java | 23 +++++++++++-------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/ConsulStubsRegistrar.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/ConsulStubsRegistrar.java index a0e0665c7f..3ffb8af9c0 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/ConsulStubsRegistrar.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/ConsulStubsRegistrar.java @@ -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 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); diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfiguration.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfiguration.java index f37f435c03..bd4e82d2b3 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfiguration.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/consul/StubRunnerSpringCloudConsulAutoConfiguration.java @@ -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); + } }