1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
17 "git.arvados.org/arvados.git/sdk/go/arvados"
20 type runWorkbench2 struct {
24 func (runner runWorkbench2) String() string {
25 return "runWorkbench2"
28 func (runner runWorkbench2) Run(ctx context.Context, fail func(error), super *Supervisor) error {
29 host, port, err := internalPort(runner.svc)
31 return fmt.Errorf("bug: no internalPort for %q: %v (%#v)", runner, err, runner.svc)
33 super.waitShutdown.Add(1)
35 defer super.waitShutdown.Done()
36 if super.ClusterType == "production" {
37 err = super.RunProgram(ctx, "/var/lib/arvados/workbench2", runOptions{
39 }, "arvados-server", "workbench2", super.cluster.Services.Controller.ExternalURL.Host, net.JoinHostPort(host, port), ".")
41 stdinr, stdinw := io.Pipe()
47 if err = os.Mkdir(super.SourcePath+"/services/workbench2/public/_health", 0777); err != nil && !errors.Is(err, fs.ErrExist) {
51 if err = ioutil.WriteFile(super.SourcePath+"/services/workbench2/public/_health/ping", []byte(`{"health":"OK"}`), 0666); err != nil {
55 err = super.RunProgram(ctx, super.SourcePath+"/services/workbench2", runOptions{
60 "REACT_APP_ARVADOS_API_HOST=" + super.cluster.Services.Controller.ExternalURL.Host,
62 // If we don't connect stdin, "yarn start" just exits.
65 fail(errors.New("`yarn start` exited"))