summaryrefslogtreecommitdiffstats
path: root/defaults
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2017-09-08 07:27:19 +0000
committerArne Juul <arnej@yahoo-inc.com>2017-09-08 07:27:19 +0000
commitd0339c87070c88aa97ddb44d6e29ba4d0a95ed29 (patch)
treec768b40d101462a693223345304d94edc2dbc75f /defaults
parent9886b87286a16c8385e9642d6f864157cec9ce9d (diff)
add vespaHostname function
Diffstat (limited to 'defaults')
-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
4 files changed, 65 insertions, 2 deletions
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.
*