aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2023-02-27 08:12:05 +0100
committerGitHub <noreply@github.com>2023-02-27 08:12:05 +0100
commit15617a8797fb79ea1ff2cb9accacbab73bb2bf9c (patch)
treee0e037cb515cc528687edae3cffa9005bfc82522 /client
parentc16825629640c818d149061f21796de43c4f4455 (diff)
parentb925044ea4a89477d0e006c800998d99ac5e8244 (diff)
Merge pull request #26151 from vespa-engine/arnej/less-magic-for-hostname-detection
remove complicated code trying to find a good hostname
Diffstat (limited to 'client')
-rw-r--r--client/go/internal/vespa/detect_hostname.go72
-rw-r--r--client/go/internal/vespa/detect_hostname_test.go14
2 files changed, 2 insertions, 84 deletions
diff --git a/client/go/internal/vespa/detect_hostname.go b/client/go/internal/vespa/detect_hostname.go
index 9729fd80400..9d32ae1a2fd 100644
--- a/client/go/internal/vespa/detect_hostname.go
+++ b/client/go/internal/vespa/detect_hostname.go
@@ -4,14 +4,10 @@
package vespa
import (
- "fmt"
"net"
"os"
- "strings"
"github.com/vespa-engine/vespa/client/go/internal/admin/envvars"
- "github.com/vespa-engine/vespa/client/go/internal/admin/trace"
- "github.com/vespa-engine/vespa/client/go/internal/util"
)
// detect if this host is IPv6-only, in which case we want to pass
@@ -56,76 +52,8 @@ func FindOurHostname() (string, error) {
if err != nil {
name = "localhost"
}
- name, err = findOurHostnameFrom(name)
if err == nil {
os.Setenv(envvars.VESPA_HOSTNAME, name)
}
return name, err
}
-
-func validateHostname(name string) bool {
- ipAddrs, _ := net.LookupIP(name)
- trace.Debug("lookupIP", name, "=>", ipAddrs)
- if len(ipAddrs) < 1 {
- return false
- }
- myIpAddresses := make(map[string]bool)
- interfaceAddrs, _ := net.InterfaceAddrs()
- for _, ifAddr := range interfaceAddrs {
- // note: ifAddr.String() is typically "127.0.0.1/8"
- if ipnet, ok := ifAddr.(*net.IPNet); ok {
- myIpAddresses[ipnet.IP.String()] = true
- }
- }
- trace.Debug("validate with interfaces =>", myIpAddresses)
- someGood := false
- for _, addr := range ipAddrs {
- if len(myIpAddresses) == 0 {
- // no validation possible, assume OK
- return true
- }
- if myIpAddresses[addr.String()] {
- someGood = true
- } else {
- return false
- }
- }
- return someGood
-}
-
-func goodHostname(name string) (result string, good bool) {
- result = strings.TrimSpace(name)
- result = strings.TrimSuffix(result, ".")
- if name != result {
- trace.Trace("trimmed hostname", name, "=>", result)
- }
- good = strings.Contains(result, ".") && validateHostname(result)
- trace.Debug("hostname:", result, "good =>", good)
- return
-}
-
-func findOurHostnameFrom(name string) (string, error) {
- trimmed, good := goodHostname(name)
- if good {
- return trimmed, nil
- }
- backticks := util.BackTicksIgnoreStderr
- out, err := backticks.Run("vespa-detect-hostname")
- if err != nil {
- out, err = backticks.Run("hostname", "-f")
- }
- if err != nil {
- out, err = backticks.Run("hostname")
- }
- alternate, good := goodHostname(out)
- if err == nil && good {
- return alternate, nil
- }
- if validateHostname(trimmed) {
- return trimmed, nil
- }
- if validateHostname(alternate) {
- return alternate, nil
- }
- return "localhost", fmt.Errorf("fallback to localhost [os.Hostname was '%s']", name)
-}
diff --git a/client/go/internal/vespa/detect_hostname_test.go b/client/go/internal/vespa/detect_hostname_test.go
index 324701efb6f..4afb139743d 100644
--- a/client/go/internal/vespa/detect_hostname_test.go
+++ b/client/go/internal/vespa/detect_hostname_test.go
@@ -4,7 +4,6 @@ package vespa
import (
"fmt"
"os"
- "strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -18,16 +17,7 @@ func TestDetectHostname(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, "foo.bar", got)
os.Unsetenv("VESPA_HOSTNAME")
- got, err = findOurHostnameFrom("bar.foo.123")
- fmt.Fprintln(os.Stderr, "findOurHostname from bar.foo.123 returns:", got, "with error:", err)
+ got, _ = FindOurHostname()
assert.NotEqual(t, "", got)
- parts := strings.Split(got, ".")
- if len(parts) > 1 {
- expanded, err2 := findOurHostnameFrom(parts[0])
- fmt.Fprintln(os.Stderr, "findOurHostname from", parts[0], "returns:", expanded, "with error:", err2)
- assert.Equal(t, got, expanded)
- }
- got, err = findOurHostnameFrom("")
- assert.NotEqual(t, "", got)
- fmt.Fprintln(os.Stderr, "findOurHostname('') returns:", got, "with error:", err)
+ fmt.Fprintln(os.Stderr, "FindOurHostname() returns:", got, "with error:", err)
}