summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authortoby <smorgrav@yahoo-inc.com>2017-08-31 14:56:10 +0200
committertoby <smorgrav@yahoo-inc.com>2017-09-06 16:20:48 -0700
commite67d0b8657ea72d29aeb13954ea0173b6a8ef545 (patch)
tree7ea8f6454dcd083fcd6c6bc6bdc4dc4a5ff21f38 /node-repository
parent92526ea24add9baecf8e41b3c99fc3adf7b89e49 (diff)
Avoid using ip addresses that does not resolve to a hostname
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizer.java10
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/provisioning/NodePrioritizerTest.java19
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);
+ }
}