summaryrefslogtreecommitdiffhomepage
path: root/runsc/boot
diff options
context:
space:
mode:
authorFabricio Voznika <fvoznika@google.com>2018-06-28 09:45:52 -0700
committerShentubot <shentubot@google.com>2018-06-28 09:46:50 -0700
commit1f207de315430fb178b7025a5afd419afdc31449 (patch)
tree71acf7018db907918a4d9bdf1a32f203a52f408d /runsc/boot
parent6b6852bceb12900f27a541682ddfe47893911c6e (diff)
Add option to configure watchdog action
PiperOrigin-RevId: 202494747 Change-Id: I4d4a18e71468690b785060e580a5f83c616bd90f
Diffstat (limited to 'runsc/boot')
-rw-r--r--runsc/boot/config.go17
-rw-r--r--runsc/boot/loader.go2
2 files changed, 18 insertions, 1 deletions
diff --git a/runsc/boot/config.go b/runsc/boot/config.go
index 24be82906..074cd6a63 100644
--- a/runsc/boot/config.go
+++ b/runsc/boot/config.go
@@ -18,6 +18,8 @@ import (
"fmt"
"strconv"
"strings"
+
+ "gvisor.googlesource.com/gvisor/pkg/sentry/watchdog"
)
// PlatformType tells which platform to use.
@@ -130,6 +132,18 @@ func (n NetworkType) String() string {
}
}
+// MakeWatchdogAction converts type from string.
+func MakeWatchdogAction(s string) (watchdog.Action, error) {
+ switch strings.ToLower(s) {
+ case "log", "logwarning":
+ return watchdog.LogWarning, nil
+ case "panic":
+ return watchdog.Panic, nil
+ default:
+ return 0, fmt.Errorf("invalid watchdog action %q", s)
+ }
+}
+
// Config holds configuration that is not part of the runtime spec.
type Config struct {
// RootDir is the runtime root directory.
@@ -180,6 +194,8 @@ type Config struct {
// MultiContainer enables multiple containers support inside one sandbox.
// TODO: Remove this when multiple container is fully supported.
MultiContainer bool
+
+ WatchdogAction watchdog.Action
}
// ToFlags returns a slice of flags that correspond to the given Config.
@@ -199,5 +215,6 @@ func (c *Config) ToFlags() []string {
"--strace=" + strconv.FormatBool(c.Strace),
"--strace-syscalls=" + strings.Join(c.StraceSyscalls, ","),
"--strace-log-size=" + strconv.Itoa(int(c.StraceLogSize)),
+ "--watchdog-action=" + c.WatchdogAction.String(),
}
}
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go
index 69b982ff8..da95fa0e7 100644
--- a/runsc/boot/loader.go
+++ b/runsc/boot/loader.go
@@ -205,7 +205,7 @@ func New(spec *specs.Spec, conf *Config, controllerFD, restoreFD int, ioFDs []in
}
// Create a watchdog.
- watchdog := watchdog.New(k, watchdog.DefaultTimeout, watchdog.LogWarning)
+ watchdog := watchdog.New(k, watchdog.DefaultTimeout, conf.WatchdogAction)
// Create the control server using the provided FD.
//