diff options
author | Fabricio Voznika <fvoznika@google.com> | 2018-06-28 09:45:52 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-06-28 09:46:50 -0700 |
commit | 1f207de315430fb178b7025a5afd419afdc31449 (patch) | |
tree | 71acf7018db907918a4d9bdf1a32f203a52f408d /runsc/boot | |
parent | 6b6852bceb12900f27a541682ddfe47893911c6e (diff) |
Add option to configure watchdog action
PiperOrigin-RevId: 202494747
Change-Id: I4d4a18e71468690b785060e580a5f83c616bd90f
Diffstat (limited to 'runsc/boot')
-rw-r--r-- | runsc/boot/config.go | 17 | ||||
-rw-r--r-- | runsc/boot/loader.go | 2 |
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. // |