diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-11-15 15:26:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-15 15:26:49 +0100 |
commit | 6aa28bef33083a3d5c1a4a1ad8b1becbc26bcf12 (patch) | |
tree | c7704b1a6e1fd44a8235d4fb09a9c32eebdee457 /client/go/script-utils/configserver/runserver.go | |
parent | 76d243902ca2f8e6235eee78c4d24e9e78941f82 (diff) | |
parent | 7b063026d3ab58c0faf5cb775ee5ef68d61493ba (diff) |
Merge pull request #24857 from vespa-engine/arnej/add-configserver-startup-in-go
Arnej/add configserver startup in go
Diffstat (limited to 'client/go/script-utils/configserver/runserver.go')
-rw-r--r-- | client/go/script-utils/configserver/runserver.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/client/go/script-utils/configserver/runserver.go b/client/go/script-utils/configserver/runserver.go new file mode 100644 index 00000000000..bf498941128 --- /dev/null +++ b/client/go/script-utils/configserver/runserver.go @@ -0,0 +1,60 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Author: arnej + +package configserver + +import ( + "fmt" + + "github.com/vespa-engine/vespa/client/go/defaults" + "github.com/vespa-engine/vespa/client/go/trace" + "github.com/vespa-engine/vespa/client/go/util" +) + +const ( + PROG_NAME = "vespa-runserver" +) + +type RunServer struct { + ServiceName string + Args []string +} + +func (rs *RunServer) PidFile() string { + varRunDir := defaults.UnderVespaHome("var/run") + return fmt.Sprintf("%s/%s.pid", varRunDir, rs.ServiceName) +} + +func (rs *RunServer) ProgPath() string { + p := fmt.Sprintf("%s/bin64/%s", defaults.VespaHome(), PROG_NAME) + if util.IsExecutableFile(p) { + return p + } + p = fmt.Sprintf("%s/bin/%s", defaults.VespaHome(), PROG_NAME) + if util.IsExecutableFile(p) { + return p + } + panic(fmt.Errorf("not an executable file: %s", p)) +} + +func (rs *RunServer) WouldRun() bool { + backticks := util.BackTicksForwardStderr + out, err := backticks.Run(rs.ProgPath(), "-s", rs.ServiceName, "-p", rs.PidFile(), "-W") + trace.Trace("output from -W:", out, "error:", err) + return err == nil +} + +func (rs *RunServer) Exec(prog string) { + argv := []string{ + PROG_NAME, + "-s", rs.ServiceName, + "-p", rs.PidFile(), + "--", + prog, + } + for _, arg := range rs.Args { + argv = append(argv, arg) + } + err := util.Execvp(rs.ProgPath(), argv) + util.JustExitWith(err) +} |