summaryrefslogtreecommitdiffhomepage
path: root/runsc/boot
diff options
context:
space:
mode:
authorNicolas Lacasse <nlacasse@google.com>2018-05-15 10:17:19 -0700
committerShentubot <shentubot@google.com>2018-05-15 10:18:03 -0700
commit205f1027e6beb84101439172b3c776c2671b5be8 (patch)
tree10294e667ee529e140c474c475e7309cb72ea1d8 /runsc/boot
parented02ac4f668ec41063cd51cbbd451baba9e9a6e7 (diff)
Refactor the Sandbox package into Sandbox + Container.
This is a necessary prerequisite for supporting multiple containers in a single sandbox. All the commands (in cmd package) now call operations on Containers (container package). When a Container first starts, it will create a Sandbox with the same ID. The Sandbox class is now simpler, as it only knows how to create boot/gofer processes, and how to forward commands into the running boot process. There are TODOs sprinkled around for additional support for multiple containers. Most notably, we need to detect when a container is intended to run in an existing sandbox (by reading the metadata), and then have some way to signal to the sandbox to start a new container. Other urpc calls into the sandbox need to pass the container ID, so the sandbox can run the operation on the given container. These are only half-plummed through right now. PiperOrigin-RevId: 196688269 Change-Id: I1ecf4abbb9dd8987a53ae509df19341aaf42b5b0
Diffstat (limited to 'runsc/boot')
-rw-r--r--runsc/boot/config.go46
1 files changed, 45 insertions, 1 deletions
diff --git a/runsc/boot/config.go b/runsc/boot/config.go
index f3e33e89a..d5dd400d1 100644
--- a/runsc/boot/config.go
+++ b/runsc/boot/config.go
@@ -14,7 +14,11 @@
package boot
-import "fmt"
+import (
+ "fmt"
+ "strconv"
+ "strings"
+)
// PlatformType tells which platform to use.
type PlatformType int
@@ -131,6 +135,19 @@ type Config struct {
// RootDir is the runtime root directory.
RootDir string
+ // Debug indicates that debug logging should be enabled.
+ Debug bool
+
+ // LogFilename is the filename to log to, if not empty.
+ LogFilename string
+
+ // LogFormat is the log format, "text" or "json".
+ LogFormat string
+
+ // DebugLogDir is the directory to log debug information to, if not
+ // empty.
+ DebugLogDir string
+
// FileAccess indicates how the filesystem is accessed.
FileAccess FileAccessType
@@ -159,4 +176,31 @@ type Config struct {
// DisableSeccomp indicates whether seccomp syscall filters should be
// disabled. Pardon the double negation, but default to enabled is important.
DisableSeccomp bool
+
+ // TestModeNoFlags indicates that the ToFlags method should return
+ // empty. This should only be used in tests, since the test runner does
+ // not know about all the flags.
+ TestModeNoFlags bool
+}
+
+// ToFlags returns a slice of flags that correspond to the given Config.
+func (c *Config) ToFlags() []string {
+ if c.TestModeNoFlags {
+ return nil
+ }
+ return []string{
+ "--root=" + c.RootDir,
+ "--debug=" + strconv.FormatBool(c.Debug),
+ "--log=" + c.LogFilename,
+ "--log-format=" + c.LogFormat,
+ "--debug-log-dir=" + c.DebugLogDir,
+ "--file-access=" + c.FileAccess.String(),
+ "--overlay=" + strconv.FormatBool(c.Overlay),
+ "--network=" + c.Network.String(),
+ "--log-packets=" + strconv.FormatBool(c.LogPackets),
+ "--platform=" + c.Platform.String(),
+ "--strace=" + strconv.FormatBool(c.Strace),
+ "--strace-syscalls=" + strings.Join(c.StraceSyscalls, ","),
+ "--strace-log-size=" + strconv.Itoa(int(c.StraceLogSize)),
+ }
}