diff options
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/net/HostName.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/net/HostName.java b/vespajlib/src/main/java/com/yahoo/net/HostName.java new file mode 100644 index 00000000000..7446771f57c --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/net/HostName.java @@ -0,0 +1,42 @@ +package com.yahoo.net; + +import java.util.Optional; + +/** + * This class has utilities for getting the hostname of the system running the JVM. + * Detection of the hostname is now done before starting any Vespa + * programs and provided in the environment variable VESPA_HOSTNAME; + * if that variable isn't set a default of "localhost" is always returned. + * + * @author arnej + */ +public class HostName { + + private static String preferredHostName = null; + + /** + * Return a public and fully qualified hostname for localhost that + * resolves to an IP address on a network interface. + * + * @return the preferred name of localhost + */ + public static synchronized String getLocalhost() { + if (preferredHostName == null) { + preferredHostName = getPreferredHostName(); + } + return preferredHostName; + } + + static private String getPreferredHostName() { + Optional<String> vespaHostEnv = Optional.ofNullable(System.getenv("VESPA_HOSTNAME")); + if (vespaHostEnv.isPresent() && ! vespaHostEnv.get().trim().isEmpty()) { + return vespaHostEnv.get().trim(); + } + return "localhost"; + } + + public static void setHostNameForTestingOnly(String hostName) { + preferredHostName = hostName; + } + +} |