aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorArnstein Ressem <aressem@gmail.com>2016-12-13 22:11:42 +0100
committerGitHub <noreply@github.com>2016-12-13 22:11:42 +0100
commite217edb78c4e9994b46dd4a2be0d8a6c9efdbeb2 (patch)
tree0532faeaf0ecd79ddc78c8411b06b88e32fda9de /node-repository
parent33d11e340e87196cb81a51695d26318c62b1be67 (diff)
Revert "Always use DNS when resolving hostname"
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java50
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java21
3 files changed, 20 insertions, 54 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
index 7fa25d30647..7101b24098d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/NodeRepository.java
@@ -17,7 +17,6 @@ import com.yahoo.vespa.hosted.provision.node.filter.NodeFilter;
import com.yahoo.vespa.hosted.provision.node.filter.NodeListFilter;
import com.yahoo.vespa.hosted.provision.node.filter.StateFilter;
import com.yahoo.vespa.hosted.provision.persistence.CuratorDatabaseClient;
-import com.yahoo.vespa.hosted.provision.persistence.DnsNameResolver;
import com.yahoo.vespa.hosted.provision.persistence.NameResolver;
import java.time.Clock;
@@ -73,7 +72,7 @@ public class NodeRepository extends AbstractComponent {
*/
@Inject
public NodeRepository(NodeFlavors flavors, Curator curator, Zone zone) {
- this(flavors, curator, Clock.systemUTC(), zone, new DnsNameResolver());
+ this(flavors, curator, Clock.systemUTC(), zone, new NameResolver() {} /* use default implementation */);
}
/**
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java
deleted file mode 100644
index 71ae3bb6595..00000000000
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/DnsNameResolver.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.provision.persistence;
-
-import com.google.common.collect.ImmutableSet;
-
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.InitialDirContext;
-import java.util.Optional;
-import java.util.Set;
-
-/**
- * Implementation of a name resolver that always use a DNS server to resolve the given name. The intention is to avoid
- * possibly incorrect/incomplete records in /etc/hosts.
- *
- * @author mpolden
- */
-public class DnsNameResolver implements NameResolver {
-
- private static final String TYPE_A = "A";
- private static final String TYPE_AAAA = "AAAA";
-
- /** Resolve IP addresses for given host name */
- @Override
- public Set<String> getAllByNameOrThrow(String hostname) {
- try {
- DirContext ctx = new InitialDirContext();
- Attributes attributes = ctx.getAttributes("dns:/" + hostname, new String[] {TYPE_A, TYPE_AAAA});
- Optional<String> inet4Address = getStringAttribute(attributes, TYPE_A);
- Optional<String> inet6Address = getStringAttribute(attributes, TYPE_AAAA);
-
- ImmutableSet.Builder<String> ipAddresses = ImmutableSet.builder();
- inet4Address.ifPresent(ipAddresses::add);
- inet6Address.ifPresent(ipAddresses::add);
- return ipAddresses.build();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- private static Optional<String> getStringAttribute(Attributes attributes, String key) throws NamingException {
- Optional<Attribute> attribute = Optional.ofNullable(attributes.get(key));
- if (attribute.isPresent()) {
- return Optional.ofNullable(attribute.get().get()).map(Object::toString);
- }
- return Optional.empty();
- }
-}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
index ce966942546..9262e8616da 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NameResolver.java
@@ -1,15 +1,32 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.provision.persistence;
+import com.google.common.collect.ImmutableSet;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Arrays;
import java.util.Set;
/**
- * Interface for a basic name to IP address resolver.
+ * Interface for a basic name to IP address resolver. Default implementation delegates to
+ * {@link java.net.InetAddress#getAllByName(String)}.
*
* @author mpolden
*/
public interface NameResolver {
- Set<String> getAllByNameOrThrow(String hostname);
+ /** Resolve IP addresses for given host name */
+ default Set<String> getAllByNameOrThrow(String hostname) {
+ try {
+ ImmutableSet.Builder<String> ipAddresses = ImmutableSet.builder();
+ Arrays.stream(InetAddress.getAllByName(hostname))
+ .map(InetAddress::getHostAddress)
+ .forEach(ipAddresses::add);
+ return ipAddresses.build();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ }
}