X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/49ce9a4b07da6ae0da25e19a34e91b4664d8b2a5..995df5b03c9304bc956b02e50225ad2e1f9dfd8d:/lib/boot/supervisor.go diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index 9ed92cb1aa..0f0600f181 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -247,13 +247,9 @@ func (super *Supervisor) runCluster() error { } if super.ListenHost == "" { - if urlhost := super.cluster.Services.Controller.ExternalURL.Host; urlhost != "" { - if h, _, _ := net.SplitHostPort(urlhost); h != "" { - super.ListenHost = h - } else { - super.ListenHost = urlhost - } - } else { + u := url.URL(super.cluster.Services.Controller.ExternalURL) + super.ListenHost = u.Hostname() + if super.ListenHost == "" { super.ListenHost = "0.0.0.0" } } @@ -286,7 +282,7 @@ func (super *Supervisor) runCluster() error { if err != nil { return err } - conffile, err := os.OpenFile(filepath.Join(super.wwwtempdir, "config.yml"), os.O_CREATE|os.O_WRONLY, 0644) + conffile, err := os.OpenFile(filepath.Join(super.wwwtempdir, "config.yml"), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644) if err != nil { return err } @@ -312,6 +308,7 @@ func (super *Supervisor) runCluster() error { if super.ClusterType != "production" { super.prependEnv("PATH", super.tempdir+"/bin:") } + super.setEnv("ARVADOS_SERVER_ADDRESS", super.ListenHost) // Now that we have the config, replace the bootstrap logger // with a new one according to the logging config. @@ -359,20 +356,24 @@ func (super *Supervisor) runCluster() error { createCertificates{}, runPostgreSQL{}, runNginx{}, - runServiceCommand{name: "controller", svc: super.cluster.Services.Controller, depends: []supervisedTask{seedDatabase{}}}, + railsDatabase{}, + runServiceCommand{name: "controller", svc: super.cluster.Services.Controller, depends: []supervisedTask{railsDatabase{}}}, runServiceCommand{name: "git-httpd", svc: super.cluster.Services.GitHTTP}, runServiceCommand{name: "health", svc: super.cluster.Services.Health}, runServiceCommand{name: "keepproxy", svc: super.cluster.Services.Keepproxy, depends: []supervisedTask{runPassenger{src: "services/api"}}}, runServiceCommand{name: "keepstore", svc: super.cluster.Services.Keepstore}, runServiceCommand{name: "keep-web", svc: super.cluster.Services.WebDAV}, - runServiceCommand{name: "ws", svc: super.cluster.Services.Websocket, depends: []supervisedTask{seedDatabase{}}}, + runServiceCommand{name: "ws", svc: super.cluster.Services.Websocket, depends: []supervisedTask{railsDatabase{}}}, installPassenger{src: "services/api", varlibdir: "railsapi"}, - runPassenger{src: "services/api", varlibdir: "railsapi", svc: super.cluster.Services.RailsAPI, depends: []supervisedTask{createCertificates{}, seedDatabase{}, installPassenger{src: "services/api", varlibdir: "railsapi"}}}, - seedDatabase{}, + runPassenger{src: "services/api", varlibdir: "railsapi", svc: super.cluster.Services.RailsAPI, depends: []supervisedTask{ + createCertificates{}, + installPassenger{src: "services/api", varlibdir: "railsapi"}, + railsDatabase{}, + }}, } if !super.NoWorkbench1 { tasks = append(tasks, - installPassenger{src: "apps/workbench", varlibdir: "workbench1", depends: []supervisedTask{seedDatabase{}}}, // dependency ensures workbench doesn't delay api install/startup + installPassenger{src: "apps/workbench", varlibdir: "workbench1", depends: []supervisedTask{railsDatabase{}}}, // dependency ensures workbench doesn't delay api install/startup runPassenger{src: "apps/workbench", varlibdir: "workbench1", svc: super.cluster.Services.Workbench1, depends: []supervisedTask{installPassenger{src: "apps/workbench", varlibdir: "workbench1"}}}, ) }