summaryrefslogtreecommitdiffstats
path: root/client/go/script-utils/configserver/runserver.go
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-11-15 15:26:49 +0100
committerGitHub <noreply@github.com>2022-11-15 15:26:49 +0100
commit6aa28bef33083a3d5c1a4a1ad8b1becbc26bcf12 (patch)
treec7704b1a6e1fd44a8235d4fb09a9c32eebdee457 /client/go/script-utils/configserver/runserver.go
parent76d243902ca2f8e6235eee78c4d24e9e78941f82 (diff)
parent7b063026d3ab58c0faf5cb775ee5ef68d61493ba (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.go60
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)
+}