From 9deab33dc1fbbcc0601febdaafcc43df9d1b16a0 Mon Sep 17 00:00:00 2001 From: Nastya Smirnova Date: Tue, 2 Jan 2018 22:42:59 +0200 Subject: [PATCH] fixes #2524 (#2574) set proper status and health eureka urls if prefer ip address is set --- .../eureka/EurekaClientAutoConfiguration.java | 4 ++++ .../EurekaClientAutoConfigurationTests.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java index d2c2a61e..c7ba4d8f 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java @@ -135,6 +135,7 @@ public class EurekaClientAutoConfiguration { String hostname = eurekaPropertyResolver.getProperty("hostname"); boolean preferIpAddress = Boolean.parseBoolean(eurekaPropertyResolver.getProperty("preferIpAddress")); + String ipAddress = eurekaPropertyResolver.getProperty("ipAddress"); boolean isSecurePortEnabled = Boolean.parseBoolean(eurekaPropertyResolver.getProperty("securePortEnabled")); String serverContextPath = propertyResolver.getProperty("server.contextPath", "/"); int serverPort = Integer.valueOf(propertyResolver.getProperty("server.port", propertyResolver.getProperty("port", "8080"))); @@ -147,6 +148,9 @@ public class EurekaClientAutoConfiguration { instance.setNonSecurePort(serverPort); instance.setInstanceId(getDefaultInstanceId(propertyResolver)); instance.setPreferIpAddress(preferIpAddress); + if (StringUtils.hasText(ipAddress)) { + instance.setIpAddress(ipAddress); + } if(isSecurePortEnabled) { instance.setSecurePort(serverPort); diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java index 0143b7d1..a787475f 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfigurationTests.java @@ -289,6 +289,25 @@ public class EurekaClientAutoConfigurationTests { assertEquals("statusPageUrl is wrong", "http://" + instance.getIpAddress() + ":9999/info", instance.getStatusPageUrl()); + assertEquals("healthCheckUrl is wrong", "http://" + instance.getIpAddress() + ":9999/health", + instance.getHealthCheckUrl()); + } + + @Test + public void statusPageAndHealthCheckUrlsShouldSetUserDefinedIpAddress() { + addEnvironment(this.context, "server.port=8989", + "management.port=9999", "eureka.instance.hostname=foo", + "eureka.instance.ipAddress:192.168.13.90", + "eureka.instance.preferIpAddress:true"); + + setupContext(RefreshAutoConfiguration.class); + EurekaInstanceConfigBean instance = this.context + .getBean(EurekaInstanceConfigBean.class); + + assertEquals("statusPageUrl is wrong", "http://192.168.13.90:9999/info", + instance.getStatusPageUrl()); + assertEquals("healthCheckUrl is wrong", "http://192.168.13.90:9999/health", + instance.getHealthCheckUrl()); } @Test