mirror of
https://github.com/containers/podman.git
synced 2025-06-22 18:08:11 +08:00
Merge pull request #8094 from rhatdan/cidfile
The cidfile should be created when the container is created
This commit is contained in:
@ -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.
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user