diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2023-02-27 08:12:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-27 08:12:05 +0100 |
commit | 15617a8797fb79ea1ff2cb9accacbab73bb2bf9c (patch) | |
tree | e0e037cb515cc528687edae3cffa9005bfc82522 /client | |
parent | c16825629640c818d149061f21796de43c4f4455 (diff) | |
parent | b925044ea4a89477d0e006c800998d99ac5e8244 (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.go | 72 | ||||
-rw-r--r-- | client/go/internal/vespa/detect_hostname_test.go | 14 |
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) } |