summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2017-09-08 13:10:46 +0200
committerGitHub <noreply@github.com>2017-09-08 13:10:46 +0200
commit0c956d12ebc311219dc38fb775f2a8984a4039d7 (patch)
tree0431709ecbdaaf64e35fc0124c291571ea46ee8b
parent1983053bd66f712cb2d825b1cd9e566ef7fe341b (diff)
parent05b6862c7ade2c77bc48d5d04874fc51fe6cd19d (diff)
Merge pull request #3370 from vespa-engine/arnej/find-hostname-in-defaults-module
Arnej/find hostname in defaults module
-rwxr-xr-xconfig-proxy/src/main/sh/vespa-config-ctl.sh (renamed from config-proxy/src/main/sh/vespa-config-ctl)13
-rw-r--r--config-proxy/src/main/sh/vespa-config-loadtester.sh (renamed from config-proxy/src/main/sh/vespa-config-loadtester)0
-rw-r--r--config-proxy/src/main/sh/vespa-config-verification.sh (renamed from config-proxy/src/main/sh/vespa-config-verification)0
-rwxr-xr-xconfig/src/apps/vespa-config/vespa-config.pl19
-rw-r--r--config/src/apps/vespa-configproxy-cmd/main.cpp2
-rw-r--r--config/src/apps/vespa-configproxy-cmd/proxycmd.cpp4
-rw-r--r--config/src/apps/vespa-configproxy-cmd/proxycmd.h2
-rw-r--r--defaults/src/apps/printdefault/printdefault.cpp6
-rw-r--r--defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java34
-rw-r--r--defaults/src/vespa/defaults.cpp21
-rw-r--r--defaults/src/vespa/defaults.h6
-rw-r--r--install_java.cmake6
-rw-r--r--vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm4
-rw-r--r--vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp11
-rw-r--r--vespalib/src/vespa/vespalib/util/host_name.cpp11
-rw-r--r--vespalog/pom.xml5
-rw-r--r--vespalog/src/main/java/com/yahoo/log/Util.java23
-rw-r--r--vespalog/src/vespa/log/llparser.cpp7
-rw-r--r--vespalog/src/vespa/log/log.cpp5
19 files changed, 96 insertions, 83 deletions
diff --git a/config-proxy/src/main/sh/vespa-config-ctl b/config-proxy/src/main/sh/vespa-config-ctl.sh
index c1d4b9613e7..db96fe0eadb 100755
--- a/config-proxy/src/main/sh/vespa-config-ctl
+++ b/config-proxy/src/main/sh/vespa-config-ctl.sh
@@ -81,16 +81,7 @@ export VESPA_SENTINEL_PORT
mkdir -p "$LOGDIR"
mkdir -p "$VESPA_LOG_CONTROL_DIR"
-# sanity check hostname
-hname=$(hostname)
-canon=$(perl -e 'use Socket;
- my $hostname = `hostname`; chomp($hostname);
- my ($err, @results) = Socket::getaddrinfo($hostname, 0, {"flags" => Socket::AI_CANONNAME});
- print @results[0]->{"canonname"} . "\n";')
-if [ "$hname" != "$canon" ]; then
- echo "The hostname ($hname) must match with gethostbyname (was $canon)"
- exit 1
-fi
+hname=$(vespa-print-default hostname)
CONFIG_ID="hosts/$hname"
export CONFIG_ID
@@ -120,7 +111,7 @@ case $1 in
fail=true
for ((sleepcount=0;$sleepcount<600;sleepcount=$sleepcount+1)) ; do
usleep 100000
- if [ -f $P_CONFIG_PROXY ] && kill -0 `cat $P_CONFIG_PROXY` && vespa-ping-configproxy -s `hostname` 2>/dev/null
+ if [ -f $P_CONFIG_PROXY ] && kill -0 `cat $P_CONFIG_PROXY` && vespa-ping-configproxy -s $hname 2>/dev/null
then
echo "config proxy started (runserver pid `cat $P_CONFIG_PROXY`)"
fail=false
diff --git a/config-proxy/src/main/sh/vespa-config-loadtester b/config-proxy/src/main/sh/vespa-config-loadtester.sh
index fc0a33d8d49..fc0a33d8d49 100644
--- a/config-proxy/src/main/sh/vespa-config-loadtester
+++ b/config-proxy/src/main/sh/vespa-config-loadtester.sh
diff --git a/config-proxy/src/main/sh/vespa-config-verification b/config-proxy/src/main/sh/vespa-config-verification.sh
index 52174495ee3..52174495ee3 100644
--- a/config-proxy/src/main/sh/vespa-config-verification
+++ b/config-proxy/src/main/sh/vespa-config-verification.sh
diff --git a/config/src/apps/vespa-config/vespa-config.pl b/config/src/apps/vespa-config/vespa-config.pl
index cc0daed3e7d..d54d7af4418 100755
--- a/config/src/apps/vespa-config/vespa-config.pl
+++ b/config/src/apps/vespa-config/vespa-config.pl
@@ -72,6 +72,8 @@ use warnings;
use File::Copy;
use File::Temp;
+my $myHostname = `vespa-print-default hostname`;
+chomp $myHostname;
my $default_configproxy_port = "19090";
my $default_configserver_port = "19070";
my $zk_client_port;
@@ -155,10 +157,7 @@ sub printConfigServerPort {
sub getConfigServers {
my @ret;
- my $hostname = `hostname`;
- chomp $hostname;
-
- my $addr = getVar('addr_configserver', $hostname, 1);
+ my $addr = getVar('addr_configserver', $myHostname, 1);
my $port = getVar('port_configserver_rpc', $default_configserver_port, 0);
my $h;
@@ -253,9 +252,7 @@ sub makeFiledistributorDistributorConfig {
my $cfgFile = $VESPA_HOME . "/conf/filedistributor/filedistributor.cfg";
open(CFG, "> ${cfgFile}.new") or die "Cannot write to '${cfgFile}.new'";
print CFG "torrentport 19093\n";
- my $hostname = `hostname`;
- chomp $hostname;
- print CFG "hostname \"$hostname\"\n";
+ print CFG "hostname \"$myHostname\"\n";
print CFG "filedbpath \"$VESPA_HOME" . "/var/db/vespa/filedistribution\"\n";
print CFG "maxdownloadspeed 0\n";
print CFG "maxuploadspeed 0\n";
@@ -268,9 +265,7 @@ sub makeFiledistributorDistributorConfig {
sub makeFiledistributorRpcConfig {
my $cfgFile = $VESPA_HOME . "/conf/filedistributor/filedistributorrpc.cfg";
open(CFG, "> ${cfgFile}.new") or die "Cannot write to '${cfgFile}.new'";
- my $hostname = `hostname`;
- chomp $hostname;
- print CFG "connectionspec \"tcp/$hostname:19092\"\n";
+ print CFG "connectionspec \"tcp/$myHostname:19092\"\n";
close(CFG);
rename("${cfgFile}.new", ${cfgFile})
or die "Cannot rename '${cfgFile}.new' -> '${cfgFile}': $!\n";
@@ -294,8 +289,6 @@ sub makeFiledistributorConfig {
}
sub isThisAConfigServer {
- my $hostnameForThisHost = `hostname`;
- chomp $hostnameForThisHost;
my $addr;
foreach $addr (getConfigServers()) {
my $host = "";
@@ -303,7 +296,7 @@ sub isThisAConfigServer {
if ($addr =~ /(.*):(\d+)$/) {
$host = $1;
}
- if ($hostnameForThisHost eq $host or $host eq "localhost") {
+ if ($myHostname eq $host or $host eq "localhost") {
print "yes\n";
exit 0;
}
diff --git a/config/src/apps/vespa-configproxy-cmd/main.cpp b/config/src/apps/vespa-configproxy-cmd/main.cpp
index 16ab5e50710..63fa1285bb2 100644
--- a/config/src/apps/vespa-configproxy-cmd/main.cpp
+++ b/config/src/apps/vespa-configproxy-cmd/main.cpp
@@ -28,7 +28,7 @@ Application::parseOpts()
_flags.method = optArg;
break;
case 's':
- _flags.hostname = optArg;
+ _flags.targethost = optArg;
break;
case 'p':
_flags.portnumber = atoi(optArg);
diff --git a/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp b/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
index fb60f9c223c..3407a880ec7 100644
--- a/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
+++ b/config/src/apps/vespa-configproxy-cmd/proxycmd.cpp
@@ -13,7 +13,7 @@ Flags & Flags::operator=(const Flags &) = default;
Flags::Flags()
: method("cache"),
args(),
- hostname("localhost"),
+ targethost("localhost"),
portnumber(19090)
{ }
Flags::~Flags() { }
@@ -62,7 +62,7 @@ void ProxyCmd::printArray(FRT_Values *rvals) {
}
vespalib::string ProxyCmd::makeSpec() {
- return vespalib::make_string("tcp/%s:%d", _flags.hostname.c_str(), _flags.portnumber);
+ return vespalib::make_string("tcp/%s:%d", _flags.targethost.c_str(), _flags.portnumber);
}
void ProxyCmd::autoPrint() {
diff --git a/config/src/apps/vespa-configproxy-cmd/proxycmd.h b/config/src/apps/vespa-configproxy-cmd/proxycmd.h
index fca5903dc79..df8f429a3c9 100644
--- a/config/src/apps/vespa-configproxy-cmd/proxycmd.h
+++ b/config/src/apps/vespa-configproxy-cmd/proxycmd.h
@@ -12,7 +12,7 @@ class FRT_Values;
struct Flags {
vespalib::string method;
std::vector<vespalib::string> args;
- vespalib::string hostname;
+ vespalib::string targethost;
int portnumber;
Flags(const Flags &);
Flags & operator=(const Flags &);
diff --git a/defaults/src/apps/printdefault/printdefault.cpp b/defaults/src/apps/printdefault/printdefault.cpp
index da0c6782d31..73e199fb441 100644
--- a/defaults/src/apps/printdefault/printdefault.cpp
+++ b/defaults/src/apps/printdefault/printdefault.cpp
@@ -7,13 +7,17 @@
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: %s <variable>\n", argv[0]);
- fprintf(stderr, " the variable must be 'home' or 'portbase' currently\n");
+ fprintf(stderr, " variable names are: home, user, hostname, portbase, configservers,\n");
+ fprintf(stderr, " configserver_rpc_port, configservers_rpc\n");
+ fprintf(stderr, " configservers_http, configsources, configproxy_rpc\n");
return 1;
}
if (strcmp(argv[1], "home") == 0) {
printf("%s\n", vespa::Defaults::vespaHome());
} else if (strcmp(argv[1], "user") == 0) {
printf("%s\n", vespa::Defaults::vespaUser());
+ } else if (strcmp(argv[1], "hostname") == 0) {
+ printf("%s\n", vespa::Defaults::vespaHostname());
} else if (strcmp(argv[1], "portbase") == 0) {
printf("%d\n", vespa::Defaults::vespaPortBase());
} else if (strcmp(argv[1], "configserver_rpc_port") == 0) {
diff --git a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
index d8cf0947ef0..8a9be7891ae 100644
--- a/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
+++ b/defaults/src/main/java/com/yahoo/vespa/defaults/Defaults.java
@@ -1,8 +1,14 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.defaults;
-import java.util.Optional;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.nio.charset.StandardCharsets;
import java.util.logging.Logger;
+import java.util.Optional;
+
+
/**
* The defaults of basic Vespa configuration variables.
@@ -18,12 +24,14 @@ public class Defaults {
private final String vespaHome;
private final String vespaUser;
+ private final String vespaHost;
private final int vespaWebServicePort;
private final int vespaPortBase;
private Defaults() {
vespaHome = findVespaHome();
vespaUser = findVespaUser();
+ vespaHost = findVespaHostname();
vespaWebServicePort = findVespaWebServicePort();
vespaPortBase = 19000; // TODO
}
@@ -42,6 +50,23 @@ public class Defaults {
return vespaHome;
}
+ static private String findVespaHostname() {
+ Optional<String> vespaHostEnv = Optional.ofNullable(System.getenv("VESPA_HOSTNAME"));
+ if (vespaHostEnv.isPresent() && ! vespaHostEnv.get().trim().isEmpty()) {
+ return vespaHostEnv.get().trim();
+ }
+ try {
+ Process p = Runtime.getRuntime().exec("hostname");
+ BufferedReader r = new BufferedReader(
+ new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8));
+ String line = r.readLine();
+ if (line != null && ! line.trim().isEmpty()) {
+ return line;
+ }
+ } catch (java.io.IOException e) {}
+ return "localhost";
+ }
+
static private String findVespaUser() {
Optional<String> vespaUserEnv = Optional.ofNullable(System.getenv("VESPA_USER"));
if (! vespaUserEnv.isPresent()) {
@@ -72,6 +97,13 @@ public class Defaults {
**/
public String vespaUser() { return vespaUser; }
+
+ /**
+ * Compute the host name that identifies myself
+ * @return the vespa host name
+ **/
+ public String vespaHostname() { return vespaHost; }
+
/**
* Returns the path to the root under which Vespa should read and write files.
* Will not end with a "/".
diff --git a/defaults/src/vespa/defaults.cpp b/defaults/src/vespa/defaults.cpp
index 730ec4735ca..d10e4064f83 100644
--- a/defaults/src/vespa/defaults.cpp
+++ b/defaults/src/vespa/defaults.cpp
@@ -13,8 +13,12 @@
namespace {
+#define HOST_BUF_SZ 1024
+
const char *defaultHome = "/opt/vespa";
const char *defaultUser = "vespa";
+const char *defaultHost = "localhost";
+char hostbuf[HOST_BUF_SZ];
int defaultWebServicePort = 8080;
int defaultPortBase = 19000;
int defaultPortConfigServerRpc = 19070;
@@ -63,6 +67,16 @@ void findDefaults() {
defaultUser = env;
}
}
+ env = getenv("VESPA_HOSTNAME");
+ if (env != NULL) {
+ defaultHost = env;
+ } else {
+ int err = gethostname(hostbuf, HOST_BUF_SZ);
+ hostbuf[HOST_BUF_SZ-1] = '\0';
+ if (err == 0 && strlen(hostbuf) > 0 && strlen(hostbuf) < HOST_BUF_SZ-1) {
+ defaultHost = hostbuf;
+ }
+ }
long p = getNumFromEnv("VESPA_WEB_SERVICE_PORT");
if (p > 0) {
// fprintf(stderr, "debug\tdefault web service port is '%ld'\n", p);
@@ -180,6 +194,13 @@ Defaults::vespaUser()
return defaultUser;
}
+const char *
+Defaults::vespaHostname()
+{
+ findDefaults();
+ return defaultHost;
+}
+
int
Defaults::vespaWebServicePort()
{
diff --git a/defaults/src/vespa/defaults.h b/defaults/src/vespa/defaults.h
index 53e44b3f526..d0b400ef563 100644
--- a/defaults/src/vespa/defaults.h
+++ b/defaults/src/vespa/defaults.h
@@ -34,6 +34,12 @@ public:
static const char *vespaUser();
/**
+ * Compute the host name that identifies myself
+ * @return the vespa host name
+ **/
+ static const char *vespaHostname();
+
+ /**
* Compute the port number where the Vespa webservice
* container should be available.
*
diff --git a/install_java.cmake b/install_java.cmake
index 3822540e388..79aa927df24 100644
--- a/install_java.cmake
+++ b/install_java.cmake
@@ -52,9 +52,9 @@ install_fat_java_artifact(vespaclient-java)
install_fat_java_artifact(zkfacade)
vespa_install_script(application-preprocessor/src/main/sh/vespa-preprocess-application bin)
-vespa_install_script(config-proxy/src/main/sh/vespa-config-ctl bin)
-vespa_install_script(config-proxy/src/main/sh/vespa-config-loadtester bin)
-vespa_install_script(config-proxy/src/main/sh/vespa-config-verification bin)
+vespa_install_script(config-proxy/src/main/sh/vespa-config-ctl.sh vespa-config-ctl bin)
+vespa_install_script(config-proxy/src/main/sh/vespa-config-loadtester.sh vespa-config-loadtester bin)
+vespa_install_script(config-proxy/src/main/sh/vespa-config-verification.sh vespa-config-verification bin)
vespa_install_script(config-model/src/main/perl/vespa-deploy bin)
vespa_install_script(config-model/src/main/perl/vespa-expand-config.pl bin)
vespa_install_script(config-model/src/main/perl/vespa-replicate-log-stream bin)
diff --git a/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm b/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
index 6e8e965601f..7da65a568b1 100644
--- a/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
+++ b/vespaclient/src/perl/lib/Yahoo/Vespa/Utils.pm
@@ -8,7 +8,6 @@ package Yahoo::Vespa::Utils;
use strict;
use warnings;
use Carp ();
-use Sys::Hostname qw(hostname);
BEGIN { # - Define exports from this module
use base 'Exporter';
@@ -35,9 +34,8 @@ return 1;
# independent of computer they run on.
sub getHostname { # ()
if (!defined $HOSTNAME) {
- $HOSTNAME = hostname;
&assertNotUnitTest();
- $HOSTNAME = `hostname`;
+ $HOSTNAME = `vespa-print-default hostname`;
chomp $HOSTNAME;
}
return $HOSTNAME;
diff --git a/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp b/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
index 99c91216d20..b24eb3e0373 100644
--- a/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
+++ b/vespaclient/src/vespa/vespaclient/vdsstates/statesapp.cpp
@@ -1,5 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/defaults.h>
#include <vespa/document/util/stringutil.h>
#include <vespa/fnet/frt/frt.h>
#include <vespa/slobrok/sbmirror.h>
@@ -339,15 +340,7 @@ struct StateApp : public FastOS_Application {
{
indexes.push_back(_options._nodeIndex);
} else {
- std::vector<char> host(HOST_NAME_MAX);
- int result = gethostname(&host[0], host.size());
- if (result != 0) {
- std::cerr << "Failed to retrieve hostname of this node, "
- "thus we cannot figure out what services run "
- "on this node.\n";
- break;
- }
- std::string hostname(&host[0]);
+ std::string hostname(vespa::Defaults::vespaHostname());
FRT_RPCRequest* req = supervisor.AllocRPCRequest();
req->SetMethodName("getNodeList");
target->InvokeSync(req, 10.0);
diff --git a/vespalib/src/vespa/vespalib/util/host_name.cpp b/vespalib/src/vespa/vespalib/util/host_name.cpp
index a33f81b068f..98ac2c80183 100644
--- a/vespalib/src/vespa/vespalib/util/host_name.cpp
+++ b/vespalib/src/vespa/vespalib/util/host_name.cpp
@@ -1,21 +1,14 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "host_name.h"
-#include <vespa/vespalib/util/exceptions.h>
-#include <unistd.h>
+#include <vespa/defaults.h>
namespace vespalib {
namespace {
vespalib::string make_host_name() {
- constexpr size_t max_size = 1024;
- char hostname[max_size + 1];
- memset(hostname, 0, sizeof(hostname));
- if (gethostname(hostname, max_size) != 0) {
- throw FatalException("gethostname failed");
- }
- return hostname;
+ return vespa::Defaults::vespaHostname();
}
} // namespace vespalib::<unnamed>
diff --git a/vespalog/pom.xml b/vespalog/pom.xml
index d300c4c56a2..6cea5ab83d9 100644
--- a/vespalog/pom.xml
+++ b/vespalog/pom.xml
@@ -29,6 +29,11 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa</groupId>
+ <artifactId>defaults</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
<artifactId>annotations</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/vespalog/src/main/java/com/yahoo/log/Util.java b/vespalog/src/main/java/com/yahoo/log/Util.java
index 43e2a2dd321..6259e37f908 100644
--- a/vespalog/src/main/java/com/yahoo/log/Util.java
+++ b/vespalog/src/main/java/com/yahoo/log/Util.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.log;
+import static com.yahoo.vespa.defaults.Defaults.getDefaults;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
@@ -13,28 +14,8 @@ import java.net.InetAddress;
*/
public class Util {
- /**
- * We do not have direct access to the <code>gethostname</code>
- * system call, so we have to fake it.
- */
public static String getHostName () {
- String hostname = "-";
- try {
- Process p = Runtime.getRuntime().exec("hostname");
- BufferedReader r = new BufferedReader(
- new InputStreamReader(p.getInputStream(), "UTF-8"));
- hostname = r.readLine();
- if (hostname != null) {
- return hostname;
- }
- }
- catch (java.io.IOException e) {}
- try {
- hostname = InetAddress.getLocalHost().getHostName();
- return hostname;
- }
- catch (java.net.UnknownHostException e) {}
- return "-";
+ return getDefaults().vespaHostname();
}
/**
diff --git a/vespalog/src/vespa/log/llparser.cpp b/vespalog/src/vespa/log/llparser.cpp
index d239f291c9f..5e48343dfaf 100644
--- a/vespalog/src/vespa/log/llparser.cpp
+++ b/vespalog/src/vespa/log/llparser.cpp
@@ -6,15 +6,15 @@
#include <cstdlib>
#include <unistd.h>
#include <sys/time.h>
+#include <vespa/defaults.h>
namespace ns_log {
static const char *defcomponent = "logger";
static const char *defservice = "-";
-static char defhostname[256] = "localhost";
LLParser::LLParser()
- : _defHostname(defhostname),
+ : _defHostname(vespa::Defaults::vespaHostname()),
_defService(defservice),
_defComponent(defcomponent),
_defLevel(Logger::info),
@@ -37,9 +37,6 @@ LLParser::LLParser()
delete _target;
_target = target;
}
- if (gethostname(defhostname, 256) == 0) {
- _defHostname = defhostname;
- }
snprintf(_defPid, 10, "%d", (int)getpid());
}
diff --git a/vespalog/src/vespa/log/log.cpp b/vespalog/src/vespa/log/log.cpp
index a0977406dc0..7d98c22957d 100644
--- a/vespalog/src/vespa/log/log.cpp
+++ b/vespalog/src/vespa/log/log.cpp
@@ -12,6 +12,7 @@ LOG_SETUP_INDIRECT(".log", "$Id$");
#include "control-file.h"
#include "bufferedlogger.h"
+#include <vespa/defaults.h>
#include <vespa/fastos/thread.h>
#include <cassert>
#include <cstdarg>
@@ -114,9 +115,7 @@ void
Logger::ensureHostname()
{
if (_hostname[0] == '\0') {
- char hn[257];
- snprintf(_hostname, sizeof _hostname, "%s",
- (gethostname(hn, sizeof hn) == 0) ? hn : "-");
+ snprintf(_hostname, sizeof _hostname, "%s", vespa::Defaults::vespaHostname());
}
}