From: Tom Clegg Date: Thu, 4 Feb 2021 19:55:25 +0000 (-0500) Subject: 17212: Propagate -listen-host to postgresql and passenger. X-Git-Tag: 2.2.0~136^2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/e85a787d224545accc7ee1e8cdda0145dd9ac806 17212: Propagate -listen-host to postgresql and passenger. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/lib/boot/nginx.go b/lib/boot/nginx.go index d14d051520..dc4aebd528 100644 --- a/lib/boot/nginx.go +++ b/lib/boot/nginx.go @@ -53,12 +53,12 @@ func (runNginx) Run(ctx context.Context, fail func(error), super *Supervisor) er {"WORKBENCH1", super.cluster.Services.Workbench1}, {"WS", super.cluster.Services.Websocket}, } { - port, err := internalPort(cmpt.svc) + host, port, err := internalPort(cmpt.svc) if err != nil { return fmt.Errorf("%s internal port: %w (%v)", cmpt.varname, err, cmpt.svc) } - if ok, err := addrIsLocal(net.JoinHostPort(super.ListenHost, port)); !ok || err != nil { - return fmt.Errorf("urlIsLocal() failed for host %q port %q: %v", super.ListenHost, port, err) + if ok, err := addrIsLocal(net.JoinHostPort(host, port)); !ok || err != nil { + return fmt.Errorf("urlIsLocal() failed for host %q port %q: %v", host, port, err) } vars[cmpt.varname+"PORT"] = port diff --git a/lib/boot/passenger.go b/lib/boot/passenger.go index 4203939975..0340ebc8c6 100644 --- a/lib/boot/passenger.go +++ b/lib/boot/passenger.go @@ -102,7 +102,7 @@ func (runner runPassenger) Run(ctx context.Context, fail func(error), super *Sup if err != nil { return err } - port, err := internalPort(runner.svc) + host, port, err := internalPort(runner.svc) if err != nil { return fmt.Errorf("bug: no internalPort for %q: %v (%#v)", runner, err, runner.svc) } @@ -130,7 +130,9 @@ func (runner runPassenger) Run(ctx context.Context, fail func(error), super *Sup cmdline := []string{ "bundle", "exec", "passenger", "start", - "-p", port, + "--address", host, + "--port", port, + "--log-file", "/dev/stderr", "--log-level", loglevel, "--no-friendly-error-pages", "--disable-anonymous-telemetry", diff --git a/lib/boot/postgresql.go b/lib/boot/postgresql.go index 4ed7603d2a..d105b0b623 100644 --- a/lib/boot/postgresql.go +++ b/lib/boot/postgresql.go @@ -113,6 +113,7 @@ func (runPostgreSQL) Run(ctx context.Context, fail func(error), super *Superviso "-l", // enable ssl "-D", datadir, // data dir "-k", datadir, // socket dir + "-h", super.cluster.PostgreSQL.Connection["host"], "-p", super.cluster.PostgreSQL.Connection["port"], } opts := runOptions{} diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index 77504deb05..961ed55de3 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -734,7 +734,7 @@ func (super *Supervisor) autofillConfig(cfg *arvados.Config) error { if super.OwnTemporaryDatabase { cluster.PostgreSQL.Connection = arvados.PostgreSQLConnection{ "client_encoding": "utf8", - "host": "localhost", + "host": super.ListenHost, "port": nextPort(super.ListenHost), "dbname": "arvados_test", "user": "arvados", @@ -768,21 +768,23 @@ func randomHexString(chars int) string { return fmt.Sprintf("%x", b) } -func internalPort(svc arvados.Service) (string, error) { +func internalPort(svc arvados.Service) (host, port string, err error) { if len(svc.InternalURLs) > 1 { - return "", errors.New("internalPort() doesn't work with multiple InternalURLs") + return "", "", errors.New("internalPort() doesn't work with multiple InternalURLs") } for u := range svc.InternalURLs { u := url.URL(u) - if p := u.Port(); p != "" { - return p, nil - } else if u.Scheme == "https" || u.Scheme == "ws" { - return "443", nil - } else { - return "80", nil + host, port = u.Hostname(), u.Port() + switch { + case port != "": + case u.Scheme == "https", u.Scheme == "ws": + port = "443" + default: + port = "80" } + return } - return "", fmt.Errorf("service has no InternalURLs") + return "", "", fmt.Errorf("service has no InternalURLs") } func externalPort(svc arvados.Service) (string, error) {