Merge pull request #8094 from rhatdan/cidfile

The cidfile should be created when the container is created
This commit is contained in:
OpenShift Merge Robot
2020-10-27 12:16:28 +01:00
committed by GitHub
6 changed files with 33 additions and 43 deletions

View File

@ -15,11 +15,9 @@ import (
"github.com/containers/podman/v2/cmd/podman/utils" "github.com/containers/podman/v2/cmd/podman/utils"
"github.com/containers/podman/v2/libpod/define" "github.com/containers/podman/v2/libpod/define"
"github.com/containers/podman/v2/pkg/domain/entities" "github.com/containers/podman/v2/pkg/domain/entities"
"github.com/containers/podman/v2/pkg/errorhandling"
"github.com/containers/podman/v2/pkg/specgen" "github.com/containers/podman/v2/pkg/specgen"
"github.com/containers/podman/v2/pkg/util" "github.com/containers/podman/v2/pkg/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/spf13/cobra" "github.com/spf13/cobra"
"github.com/spf13/pflag" "github.com/spf13/pflag"
) )
@ -94,15 +92,6 @@ func create(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
cidFile, err := openCidFile(cliVals.CIDFile)
if err != nil {
return err
}
if cidFile != nil {
defer errorhandling.CloseQuiet(cidFile)
defer errorhandling.SyncQuiet(cidFile)
}
if err := createInit(cmd); err != nil { if err := createInit(cmd); err != nil {
return err return err
@ -139,10 +128,9 @@ func create(cmd *cobra.Command, args []string) error {
return err return err
} }
if cidFile != nil { if cliVals.CIDFile != "" {
_, err = cidFile.WriteString(report.Id) if err := util.CreateCidFile(cliVals.CIDFile, report.Id); err != nil {
if err != nil { return err
logrus.Error(err)
} }
} }
@ -269,20 +257,6 @@ func pullImage(imageName string) (string, error) {
return imageName, nil return imageName, nil
} }
func openCidFile(cidfile string) (*os.File, error) {
if cidfile == "" {
return nil, nil
}
cidFile, err := util.OpenExclusiveFile(cidfile)
if err != nil && os.IsExist(err) {
return nil, errors.Errorf("container id file exists. Ensure another container is not using it or delete %s", cidfile)
}
if err != nil {
return nil, errors.Errorf("error opening cidfile %s", cidfile)
}
return cidFile, nil
}
// createPodIfNecessary automatically creates a pod when requested. if the pod name // createPodIfNecessary automatically creates a pod when requested. if the pod name
// has the form new:ID, the pod ID is created and the name in the spec generator is replaced // has the form new:ID, the pod ID is created and the name in the spec generator is replaced
// with ID. // with ID.

View File

@ -111,15 +111,8 @@ func run(cmd *cobra.Command, args []string) error {
return errors.Wrapf(err, "error checking authfile path %s", af) return errors.Wrapf(err, "error checking authfile path %s", af)
} }
} }
cidFile, err := openCidFile(cliVals.CIDFile)
if err != nil {
return err
}
if cidFile != nil { runOpts.CIDFile = cliVals.CIDFile
defer errorhandling.CloseQuiet(cidFile)
defer errorhandling.SyncQuiet(cidFile)
}
runOpts.Rm = cliVals.Rm runOpts.Rm = cliVals.Rm
if err := createInit(cmd); err != nil { if err := createInit(cmd); err != nil {
return err return err
@ -193,12 +186,6 @@ func run(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
if cidFile != nil {
_, err = cidFile.WriteString(report.Id)
if err != nil {
logrus.Error(err)
}
}
if runOpts.Detach { if runOpts.Detach {
fmt.Println(report.Id) fmt.Println(report.Id)

View File

@ -294,6 +294,7 @@ type ContainerListOptions struct {
// ContainerRunOptions describes the options needed // ContainerRunOptions describes the options needed
// to run a container from the CLI // to run a container from the CLI
type ContainerRunOptions struct { type ContainerRunOptions struct {
CIDFile string
Detach bool Detach bool
DetachKeys string DetachKeys string
ErrorStream *os.File ErrorStream *os.File

View File

@ -29,6 +29,7 @@ import (
"github.com/containers/podman/v2/pkg/signal" "github.com/containers/podman/v2/pkg/signal"
"github.com/containers/podman/v2/pkg/specgen" "github.com/containers/podman/v2/pkg/specgen"
"github.com/containers/podman/v2/pkg/specgen/generate" "github.com/containers/podman/v2/pkg/specgen/generate"
"github.com/containers/podman/v2/pkg/util"
"github.com/containers/storage" "github.com/containers/storage"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
@ -846,6 +847,12 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
return nil, err return nil, err
} }
if opts.CIDFile != "" {
if err := util.CreateCidFile(opts.CIDFile, ctr.ID()); err != nil {
return nil, err
}
}
var joinPod bool var joinPod bool
if len(ctr.PodID()) > 0 { if len(ctr.PodID()) > 0 {
joinPod = true joinPod = true

View File

@ -21,6 +21,7 @@ import (
"github.com/containers/podman/v2/pkg/domain/entities" "github.com/containers/podman/v2/pkg/domain/entities"
"github.com/containers/podman/v2/pkg/errorhandling" "github.com/containers/podman/v2/pkg/errorhandling"
"github.com/containers/podman/v2/pkg/specgen" "github.com/containers/podman/v2/pkg/specgen"
"github.com/containers/podman/v2/pkg/util"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
@ -558,6 +559,11 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta
for _, w := range con.Warnings { for _, w := range con.Warnings {
fmt.Fprintf(os.Stderr, "%s\n", w) fmt.Fprintf(os.Stderr, "%s\n", w)
} }
if opts.CIDFile != "" {
if err := util.CreateCidFile(opts.CIDFile, con.ID); err != nil {
return nil, err
}
}
report := entities.ContainerRunReport{Id: con.ID} report := entities.ContainerRunReport{Id: con.ID}

View File

@ -638,3 +638,18 @@ func ValidateSysctls(strSlice []string) (map[string]string, error) {
func DefaultContainerConfig() *config.Config { func DefaultContainerConfig() *config.Config {
return containerConfig return containerConfig
} }
func CreateCidFile(cidfile string, id string) error {
cidFile, err := OpenExclusiveFile(cidfile)
if err != nil {
if os.IsExist(err) {
return errors.Errorf("container id file exists. Ensure another container is not using it or delete %s", cidfile)
}
return errors.Errorf("error opening cidfile %s", cidfile)
}
if _, err = cidFile.WriteString(id); err != nil {
logrus.Error(err)
}
cidFile.Close()
return nil
}