mirror of
https://github.com/containers/podman.git
synced 2025-05-29 14:06:29 +08:00
Merge pull request #4684 from vrothberg/systemd-improvements
container config: add CreateCommand
This commit is contained in:
@ -804,6 +804,10 @@ func CreateContainerFromCreateConfig(r *libpod.Runtime, createConfig *cc.CreateC
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Set the CreateCommand explicitly. Some (future) consumers of libpod
|
||||
// might not want to set it.
|
||||
options = append(options, libpod.WithCreateCommand())
|
||||
|
||||
ctr, err := r.NewContainer(ctx, runtimeSpec, options...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -232,6 +232,10 @@ type ContainerConfig struct {
|
||||
// ID of this container's lock
|
||||
LockID uint32 `json:"lockID"`
|
||||
|
||||
// CreateCommand is the full command plus arguments of the process the
|
||||
// container has been created with.
|
||||
CreateCommand []string `json:"CreateCommand,omitempty"`
|
||||
|
||||
// TODO consider breaking these subsections up into smaller structs
|
||||
|
||||
// UID/GID mappings used by the storage
|
||||
|
@ -174,6 +174,9 @@ type InspectContainerConfig struct {
|
||||
StopSignal uint `json:"StopSignal"`
|
||||
// Configured healthcheck for the container
|
||||
Healthcheck *manifest.Schema2HealthConfig `json:"Healthcheck,omitempty"`
|
||||
// CreateCommand is the full command plus arguments of the process the
|
||||
// container has been created with.
|
||||
CreateCommand []string `json:"CreateCommand,omitempty"`
|
||||
}
|
||||
|
||||
// InspectContainerHostConfig holds information used when the container was
|
||||
@ -947,6 +950,8 @@ func (c *Container) generateInspectContainerConfig(spec *spec.Spec) (*InspectCon
|
||||
// leak.
|
||||
ctrConfig.Healthcheck = c.config.HealthCheckConfig
|
||||
|
||||
ctrConfig.CreateCommand = c.config.CreateCommand
|
||||
|
||||
return ctrConfig, nil
|
||||
}
|
||||
|
||||
|
@ -1413,6 +1413,18 @@ func WithHealthCheck(healthCheck *manifest.Schema2HealthConfig) CtrCreateOption
|
||||
}
|
||||
}
|
||||
|
||||
// WithCreateCommand adds the full command plus arguments of the current
|
||||
// process to the container config.
|
||||
func WithCreateCommand() CtrCreateOption {
|
||||
return func(ctr *Container) error {
|
||||
if ctr.valid {
|
||||
return define.ErrCtrFinalized
|
||||
}
|
||||
ctr.config.CreateCommand = os.Args
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// Volume Creation Options
|
||||
|
||||
// WithVolumeName sets the name of the volume.
|
||||
|
@ -117,6 +117,18 @@ var _ = Describe("Podman inspect", func() {
|
||||
Expect(len(result.OutputToStringArray())).To(Equal(1))
|
||||
})
|
||||
|
||||
It("podman inspect container and filter for CreateCommand", func() {
|
||||
SkipIfRemote()
|
||||
ls, ec, _ := podmanTest.RunLsContainer("")
|
||||
Expect(ec).To(Equal(0))
|
||||
cid := ls.OutputToString()
|
||||
|
||||
result := podmanTest.Podman([]string{"inspect", "--format={{.Config.CreateCommand}}", cid})
|
||||
result.WaitWithDefaultTimeout()
|
||||
Expect(result.ExitCode()).To(Equal(0))
|
||||
Expect(len(result.OutputToStringArray())).To(Equal(1))
|
||||
})
|
||||
|
||||
It("podman inspect -l with additional input should fail", func() {
|
||||
SkipIfRemote()
|
||||
result := podmanTest.Podman([]string{"inspect", "-l", "1234foobar"})
|
||||
|
Reference in New Issue
Block a user