diff options
author | toby <smorgrav@yahoo-inc.com> | 2017-08-31 14:56:10 +0200 |
---|---|---|
committer | toby <smorgrav@yahoo-inc.com> | 2017-09-06 16:20:48 -0700 |
commit | e67d0b8657ea72d29aeb13954ea0173b6a8ef545 (patch) | |
tree | 7ea8f6454dcd083fcd6c6bc6bdc4dc4a5ff21f38 /node-repository | |
parent | 92526ea24add9baecf8e41b3c99fc3adf7b89e49 (diff) |
Avoid using ip addresses that does not resolve to a hostname
Diffstat (limited to 'node-repository')
2 files changed, 26 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java index 3df79174b5c..a5ebee808fd 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.provision.provisioning; +import com.google.common.net.InetAddresses; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Flavor; @@ -20,6 +21,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.stream.Collectors; /** @@ -77,11 +80,12 @@ class NodePrioritizer { * * @return hostname or null if not able to do the lookup */ - private static String lookupHostname(String ipAddress) { + static String lookupHostname(String ipAddress) { try { - return InetAddress.getByName(ipAddress).getHostName(); + String hostname = InetAddress.getByName(ipAddress).getHostName(); + return InetAddresses.isInetAddress(hostname) ? null : hostname; } catch (UnknownHostException e) { - e.printStackTrace(); + Logger.getLogger(NodePrioritizer.class.getName()).log(Level.FINER, "Unable to resolve ipaddress", e); } return null; } diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizerTest.java index 04c0af5d98a..2deac4e70e8 100644 --- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizerTest.java +++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizerTest.java @@ -83,4 +83,23 @@ public class NodePrioritizerTest { b.addFlavor("d2", 2, 2., 2, Flavor.Type.DOCKER_CONTAINER); return b.build(); } + + @Test + public void ignore_hosts_that_is_unresolved_in_dns() { + // Random IP that is not resolving + String hostname = NodePrioritizer.lookupHostname("34.23.12.23"); + Assert.assertNull(hostname); + + // Localhost is always resolving + hostname = NodePrioritizer.lookupHostname("127.0.0.1"); + Assert.assertNotNull(hostname); + + // IPv6 Localhost is always resolving to a hostname + hostname = NodePrioritizer.lookupHostname("::1"); + Assert.assertNotNull(hostname); + + // Unspecified IPv6 should not resolve to a hostname + hostname = NodePrioritizer.lookupHostname("::"); + Assert.assertNull(hostname); + } } |