mirror of
https://github.com/containers/podman.git
synced 2025-06-06 15:00:40 +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
|
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...)
|
ctr, err := r.NewContainer(ctx, runtimeSpec, options...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -232,6 +232,10 @@ type ContainerConfig struct {
|
|||||||
// ID of this container's lock
|
// ID of this container's lock
|
||||||
LockID uint32 `json:"lockID"`
|
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
|
// TODO consider breaking these subsections up into smaller structs
|
||||||
|
|
||||||
// UID/GID mappings used by the storage
|
// UID/GID mappings used by the storage
|
||||||
|
@ -174,6 +174,9 @@ type InspectContainerConfig struct {
|
|||||||
StopSignal uint `json:"StopSignal"`
|
StopSignal uint `json:"StopSignal"`
|
||||||
// Configured healthcheck for the container
|
// Configured healthcheck for the container
|
||||||
Healthcheck *manifest.Schema2HealthConfig `json:"Healthcheck,omitempty"`
|
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
|
// InspectContainerHostConfig holds information used when the container was
|
||||||
@ -947,6 +950,8 @@ func (c *Container) generateInspectContainerConfig(spec *spec.Spec) (*InspectCon
|
|||||||
// leak.
|
// leak.
|
||||||
ctrConfig.Healthcheck = c.config.HealthCheckConfig
|
ctrConfig.Healthcheck = c.config.HealthCheckConfig
|
||||||
|
|
||||||
|
ctrConfig.CreateCommand = c.config.CreateCommand
|
||||||
|
|
||||||
return ctrConfig, nil
|
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
|
// Volume Creation Options
|
||||||
|
|
||||||
// WithVolumeName sets the name of the volume.
|
// WithVolumeName sets the name of the volume.
|
||||||
|
@ -117,6 +117,18 @@ var _ = Describe("Podman inspect", func() {
|
|||||||
Expect(len(result.OutputToStringArray())).To(Equal(1))
|
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() {
|
It("podman inspect -l with additional input should fail", func() {
|
||||||
SkipIfRemote()
|
SkipIfRemote()
|
||||||
result := podmanTest.Podman([]string{"inspect", "-l", "1234foobar"})
|
result := podmanTest.Podman([]string{"inspect", "-l", "1234foobar"})
|
||||||
|
Reference in New Issue
Block a user