diff options
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/inspect/inspect.go | 1 | ||||
-rw-r--r-- | pkg/spec/createconfig.go | 22 | ||||
-rw-r--r-- | pkg/varlinkapi/containers_create.go | 2 |
3 files changed, 23 insertions, 2 deletions
diff --git a/pkg/inspect/inspect.go b/pkg/inspect/inspect.go index 765ee43a7..61776f1e2 100644 --- a/pkg/inspect/inspect.go +++ b/pkg/inspect/inspect.go @@ -167,6 +167,7 @@ type ContainerInspectData struct { Mounts []specs.Mount `json:"Mounts"` Dependencies []string `json:"Dependencies"` NetworkSettings *NetworkSettings `json:"NetworkSettings"` //TODO + ExitCommand []string `json:"ExitCommand"` } // ContainerInspectState represents the state of a container. diff --git a/pkg/spec/createconfig.go b/pkg/spec/createconfig.go index af0a62c65..27df0c395 100644 --- a/pkg/spec/createconfig.go +++ b/pkg/spec/createconfig.go @@ -316,8 +316,25 @@ func (c *CreateConfig) GetTmpfsMounts() []spec.Mount { return m } +func createExitCommand(runtime *libpod.Runtime) []string { + config := runtime.GetConfig() + + cmd, _ := os.Executable() + command := []string{cmd, + "--root", config.StorageConfig.GraphRoot, + "--runroot", config.StorageConfig.RunRoot, + "--log-level", logrus.GetLevel().String(), + "--cgroup-manager", config.CgroupManager, + "--tmpdir", config.TmpDir, + } + if config.StorageConfig.GraphDriverName != "" { + command = append(command, []string{"--storage-driver", config.StorageConfig.GraphDriverName}...) + } + return append(command, []string{"container", "cleanup"}...) +} + // GetContainerCreateOptions takes a CreateConfig and returns a slice of CtrCreateOptions -func (c *CreateConfig) GetContainerCreateOptions() ([]libpod.CtrCreateOption, error) { +func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]libpod.CtrCreateOption, error) { var options []libpod.CtrCreateOption var portBindings []ocicni.PortMapping var err error @@ -434,6 +451,9 @@ func (c *CreateConfig) GetContainerCreateOptions() ([]libpod.CtrCreateOption, er if c.CgroupParent != "" { options = append(options, libpod.WithCgroupParent(c.CgroupParent)) } + if c.Detach { + options = append(options, libpod.WithExitCommand(createExitCommand(runtime))) + } return options, nil } diff --git a/pkg/varlinkapi/containers_create.go b/pkg/varlinkapi/containers_create.go index 8268a3fdd..da6707248 100644 --- a/pkg/varlinkapi/containers_create.go +++ b/pkg/varlinkapi/containers_create.go @@ -47,7 +47,7 @@ func (i *LibpodAPI) CreateContainer(call ioprojectatomicpodman.VarlinkCall, conf return call.ReplyErrorOccurred(err.Error()) } - options, err := createConfig.GetContainerCreateOptions() + options, err := createConfig.GetContainerCreateOptions(runtime) if err != nil { return call.ReplyErrorOccurred(err.Error()) } |