Merge pull request #6896 from mheon/fix_remote_createcommand

Fix container and pod create commands for remote create
This commit is contained in:
OpenShift Merge Robot
2020-07-13 13:20:26 +02:00
committed by GitHub
11 changed files with 30 additions and 15 deletions

View File

@ -401,6 +401,9 @@ func FillOutSpecGen(s *specgen.SpecGenerator, c *ContainerCLIOpts, args []string
}
var command []string
// Include the command used to create the container.
s.ContainerCreateCommand = os.Args
// Build the command
// If we have an entry point, it goes first
if c.Entrypoint != nil {

View File

@ -149,6 +149,8 @@ func create(cmd *cobra.Command, args []string) error {
}
}
createOptions.CreateCommand = os.Args
if replace {
if err := replacePod(createOptions.Name); err != nil {
return err

View File

@ -1419,12 +1419,12 @@ func WithPreserveFDs(fd uint) CtrCreateOption {
// WithCreateCommand adds the full command plus arguments of the current
// process to the container config.
func WithCreateCommand() CtrCreateOption {
func WithCreateCommand(cmd []string) CtrCreateOption {
return func(ctr *Container) error {
if ctr.valid {
return define.ErrCtrFinalized
}
ctr.config.CreateCommand = os.Args
ctr.config.CreateCommand = cmd
return nil
}
}
@ -1625,12 +1625,12 @@ func WithPodHostname(hostname string) PodCreateOption {
// WithPodCreateCommand adds the full command plus arguments of the current
// process to the pod config.
func WithPodCreateCommand() PodCreateOption {
func WithPodCreateCommand(createCmd []string) PodCreateOption {
return func(pod *Pod) error {
if pod.valid {
return define.ErrPodFinalized
}
pod.config.CreateCommand = os.Args
pod.config.CreateCommand = createCmd
return nil
}
}

View File

@ -104,6 +104,7 @@ type PodRmReport struct {
type PodCreateOptions struct {
CGroupParent string
CreateCommand []string
Hostname string
Infra bool
InfraImage string
@ -133,6 +134,7 @@ func (p PodCreateOptions) ToPodSpecGen(s *specgen.PodSpecGenerator) {
}
s.InfraImage = p.InfraImage
s.SharedNamespaces = p.Share
s.PodCreateCommand = p.CreateCommand
// Networking config
s.NetNS = p.Net.Network

View File

@ -406,10 +406,6 @@ func CreateContainerFromCreateConfig(ctx context.Context, r *libpod.Runtime, cre
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

View File

@ -78,7 +78,9 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener
}
options := []libpod.CtrCreateOption{}
options = append(options, libpod.WithCreateCommand())
if s.ContainerCreateCommand != nil {
options = append(options, libpod.WithCreateCommand(s.ContainerCreateCommand))
}
var newImage *image.Image
if s.Rootfs != "" {

View File

@ -93,7 +93,9 @@ func createPodOptions(p *specgen.PodSpecGenerator) ([]libpod.PodCreateOption, er
options = append(options, libpod.WithInfraContainerPorts(ports))
}
options = append(options, libpod.WithPodCgroups())
options = append(options, libpod.WithPodCreateCommand())
if p.PodCreateCommand != nil {
options = append(options, libpod.WithPodCreateCommand(p.PodCreateCommand))
}
if len(p.InfraConmonPidFile) > 0 {
options = append(options, libpod.WithInfraConmonPidFile(p.InfraConmonPidFile))
}

View File

@ -49,6 +49,12 @@ type PodBasicConfig struct {
// Conflicts with NoInfra=true.
// Optional.
SharedNamespaces []string `json:"shared_namespaces,omitempty"`
// PodCreateCommand is the command used to create this pod.
// This will be shown in the output of Inspect() on the pod, and may
// also be used by some tools that wish to recreate the pod
// (e.g. `podman generate systemd --new`).
// Optional.
PodCreateCommand []string `json:"pod_create_command,omitempty"`
}
// PodNetworkConfig contains networking configuration for a pod.

View File

@ -135,6 +135,13 @@ type ContainerBasicConfig struct {
// Remove indicates if the container should be removed once it has been started
// and exits
Remove bool `json:"remove,omitempty"`
// ContainerCreateCommand is the command that was used to create this
// container.
// This will be shown in the output of Inspect() on the container, and
// may also be used by some tools that wish to recreate the container
// (e.g. `podman generate systemd --new`).
// Optional.
ContainerCreateCommand []string `json:"containerCreateCommand,omitempty"`
// PreserveFDs is a number of additional file descriptors (in addition
// to 0, 1, 2) that will be passed to the executed process. The total FDs
// passed will be 3 + PreserveFDs.

View File

@ -915,10 +915,6 @@ func CreateContainerFromCreateConfig(ctx context.Context, r *libpod.Runtime, cre
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

View File

@ -59,7 +59,6 @@ var _ = Describe("Podman pod inspect", func() {
})
It("podman pod inspect (CreateCommand)", func() {
Skip(v2remotefail)
podName := "myTestPod"
createCommand := []string{"pod", "create", "--name", podName, "--hostname", "rudolph", "--share", "net"}