{"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
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)
}
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",
"-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{}
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",
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) {