diff options
-rw-r--r-- | cmd/podman/containers/create.go | 32 | ||||
-rw-r--r-- | cmd/podman/containers/run.go | 15 | ||||
-rw-r--r-- | pkg/domain/entities/containers.go | 1 | ||||
-rw-r--r-- | pkg/domain/infra/abi/containers.go | 7 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/containers.go | 6 | ||||
-rw-r--r-- | pkg/util/utils.go | 15 |
6 files changed, 33 insertions, 43 deletions
diff --git a/cmd/podman/containers/create.go b/cmd/podman/containers/create.go index e3e1038f4..b7b2a364f 100644 --- a/cmd/podman/containers/create.go +++ b/cmd/podman/containers/create.go @@ -15,11 +15,9 @@ import ( "github.com/containers/podman/v2/cmd/podman/utils" "github.com/containers/podman/v2/libpod/define" "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/util" "github.com/pkg/errors" - "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -94,15 +92,6 @@ func create(cmd *cobra.Command, args []string) error { if err != nil { 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 { return err @@ -139,10 +128,9 @@ func create(cmd *cobra.Command, args []string) error { return err } - if cidFile != nil { - _, err = cidFile.WriteString(report.Id) - if err != nil { - logrus.Error(err) + if cliVals.CIDFile != "" { + if err := util.CreateCidFile(cliVals.CIDFile, report.Id); err != nil { + return err } } @@ -269,20 +257,6 @@ func pullImage(imageName string) (string, error) { 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 // has the form new:ID, the pod ID is created and the name in the spec generator is replaced // with ID. diff --git a/cmd/podman/containers/run.go b/cmd/podman/containers/run.go index 6b294d69a..6cadbc7ec 100644 --- a/cmd/podman/containers/run.go +++ b/cmd/podman/containers/run.go @@ -111,15 +111,8 @@ func run(cmd *cobra.Command, args []string) error { return errors.Wrapf(err, "error checking authfile path %s", af) } } - cidFile, err := openCidFile(cliVals.CIDFile) - if err != nil { - return err - } - if cidFile != nil { - defer errorhandling.CloseQuiet(cidFile) - defer errorhandling.SyncQuiet(cidFile) - } + runOpts.CIDFile = cliVals.CIDFile runOpts.Rm = cliVals.Rm if err := createInit(cmd); err != nil { return err @@ -193,12 +186,6 @@ func run(cmd *cobra.Command, args []string) error { if err != nil { return err } - if cidFile != nil { - _, err = cidFile.WriteString(report.Id) - if err != nil { - logrus.Error(err) - } - } if runOpts.Detach { fmt.Println(report.Id) diff --git a/pkg/domain/entities/containers.go b/pkg/domain/entities/containers.go index 46b169284..3fd7c79f4 100644 --- a/pkg/domain/entities/containers.go +++ b/pkg/domain/entities/containers.go @@ -294,6 +294,7 @@ type ContainerListOptions struct { // ContainerRunOptions describes the options needed // to run a container from the CLI type ContainerRunOptions struct { + CIDFile string Detach bool DetachKeys string ErrorStream *os.File diff --git a/pkg/domain/infra/abi/containers.go b/pkg/domain/infra/abi/containers.go index 60dbbce6c..98b886845 100644 --- a/pkg/domain/infra/abi/containers.go +++ b/pkg/domain/infra/abi/containers.go @@ -29,6 +29,7 @@ import ( "github.com/containers/podman/v2/pkg/signal" "github.com/containers/podman/v2/pkg/specgen" "github.com/containers/podman/v2/pkg/specgen/generate" + "github.com/containers/podman/v2/pkg/util" "github.com/containers/storage" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -846,6 +847,12 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta return nil, err } + if opts.CIDFile != "" { + if err := util.CreateCidFile(opts.CIDFile, ctr.ID()); err != nil { + return nil, err + } + } + var joinPod bool if len(ctr.PodID()) > 0 { joinPod = true diff --git a/pkg/domain/infra/tunnel/containers.go b/pkg/domain/infra/tunnel/containers.go index 7913d79cd..8066e1c00 100644 --- a/pkg/domain/infra/tunnel/containers.go +++ b/pkg/domain/infra/tunnel/containers.go @@ -21,6 +21,7 @@ import ( "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/util" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -558,6 +559,11 @@ func (ic *ContainerEngine) ContainerRun(ctx context.Context, opts entities.Conta for _, w := range con.Warnings { 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} diff --git a/pkg/util/utils.go b/pkg/util/utils.go index 91aba9fa7..a9aad657d 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -638,3 +638,18 @@ func ValidateSysctls(strSlice []string) (map[string]string, error) { func DefaultContainerConfig() *config.Config { 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 +} |