Merge pull request #5879 from rhatdan/pull

Pull images when doing podman create
This commit is contained in:
OpenShift Merge Robot
2020-04-20 13:18:59 -04:00
committed by GitHub
2 changed files with 32 additions and 19 deletions

View File

@ -3,6 +3,7 @@ package containers
import (
"fmt"
"github.com/containers/common/pkg/config"
"github.com/containers/libpod/cmd/podman/common"
"github.com/containers/libpod/cmd/podman/registry"
"github.com/containers/libpod/pkg/domain/entities"
@ -61,6 +62,11 @@ func create(cmd *cobra.Command, args []string) error {
if err := createInit(cmd); err != nil {
return err
}
if err := pullImage(args[0]); err != nil {
return err
}
//TODO rootfs still
s := specgen.NewSpecGenerator(rawImageInput)
if err := common.FillOutSpecGen(s, &cliVals, args); err != nil {
@ -100,3 +106,27 @@ func createInit(c *cobra.Command) error {
return nil
}
func pullImage(imageName string) error {
br, err := registry.ImageEngine().Exists(registry.GetContext(), imageName)
if err != nil {
return err
}
pullPolicy, err := config.ValidatePullPolicy(cliVals.Pull)
if err != nil {
return err
}
if !br.Value || pullPolicy == config.PullImageAlways {
if pullPolicy == config.PullImageNever {
return errors.New("unable to find a name and tag match for busybox in repotags: no such image")
}
_, pullErr := registry.ImageEngine().Pull(registry.GetContext(), imageName, entities.ImagePullOptions{
Authfile: cliVals.Authfile,
Quiet: cliVals.Quiet,
})
if pullErr != nil {
return pullErr
}
}
return nil
}

View File

@ -5,7 +5,6 @@ import (
"os"
"strings"
"github.com/containers/common/pkg/config"
"github.com/containers/libpod/cmd/podman/common"
"github.com/containers/libpod/cmd/podman/registry"
"github.com/containers/libpod/libpod/define"
@ -72,26 +71,10 @@ func run(cmd *cobra.Command, args []string) error {
return err
}
br, err := registry.ImageEngine().Exists(registry.GetContext(), args[0])
if err != nil {
if err := pullImage(args[0]); err != nil {
return err
}
pullPolicy, err := config.ValidatePullPolicy(cliVals.Pull)
if err != nil {
return err
}
if !br.Value || pullPolicy == config.PullImageAlways {
if pullPolicy == config.PullImageNever {
return errors.New("unable to find a name and tag match for busybox in repotags: no such image")
}
_, pullErr := registry.ImageEngine().Pull(registry.GetContext(), args[0], entities.ImagePullOptions{
Authfile: cliVals.Authfile,
Quiet: cliVals.Quiet,
})
if pullErr != nil {
return pullErr
}
}
// If -i is not set, clear stdin
if !cliVals.Interactive {
runOpts.InputStream = nil