From b97ee26c8315b0f032f7cc15a085933e10a07be5 Mon Sep 17 00:00:00 2001 From: Ioannis Canellos Date: Wed, 6 Apr 2016 16:19:35 +0300 Subject: [PATCH] KubernetesDiscoveryClient now returns the default instance if endpoint is not found. --- .../spring/cloud/discovery/KubernetesDiscoveryClient.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java index 30e7f9d6..ccc3f92e 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/io/fabric8/spring/cloud/discovery/KubernetesDiscoveryClient.java @@ -57,17 +57,18 @@ public class KubernetesDiscoveryClient implements DiscoveryClient { public ServiceInstance getLocalServiceInstance() { String serviceName = properties.getServiceName(); String podName = System.getenv(HOSTNAME); + ServiceInstance defaultInstance = new DefaultServiceInstance(serviceName, "localhost", 8080, false); Endpoints endpoints = client.endpoints().withName(serviceName).get(); if (Utils.isNullOrEmpty(podName) || endpoints == null) { //TODO: Fallback to something more meaningful. - return new DefaultServiceInstance(serviceName, "localhost", 8080, false); + return defaultInstance; } return endpoints.getSubsets() .stream() .filter(s -> s.getAddresses().iterator().next().getIp().equals(podName)) - .map(s -> new KubernetesServiceInstance(serviceName, s.getPorts().iterator().next().getName(), s, false)) - .findFirst().get(); + .map(s -> (ServiceInstance) new KubernetesServiceInstance(serviceName, s.getPorts().iterator().next().getName(), s, false)) + .findFirst().orElse(defaultInstance); } @Override