Merge pull request #9133 from rhatdan/pull1

Cleanup bindings for image pull
This commit is contained in:
OpenShift Merge Robot 2021-01-29 11:47:20 -05:00 committed by GitHub
commit 0fe3d43ef1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 88 additions and 118 deletions

View File

@ -2,7 +2,6 @@ package images
import (
"github.com/containers/buildah/imagebuildah"
"github.com/containers/common/pkg/config"
)
//go:generate go run ../generator/generator.go RemoveOptions
@ -138,32 +137,25 @@ type PullOptions struct {
// AllTags can be specified to pull all tags of an image. Note
// that this only works if the image does not include a tag.
AllTags *bool
// Arch will overwrite the local architecture for image pulls.
Arch *string
// Authfile is the path to the authentication file. Ignored for remote
// calls.
Authfile *string
// CertDir is the path to certificate directories. Ignored for remote
// calls.
CertDir *string
// Username for authenticating against the registry.
Username *string
// Password for authenticating against the registry.
Password *string
// Arch will overwrite the local architecture for image pulls.
Arch *string
// OS will overwrite the local operating system (OS) for image
// pulls.
OS *string
// Variant will overwrite the local variant for image pulls.
Variant *string
// Password for authenticating against the registry.
Password *string
// Quiet can be specified to suppress pull progress when pulling. Ignored
// for remote calls.
Quiet *bool
// SignaturePolicy to use when pulling. Ignored for remote calls.
SignaturePolicy *string
// SkipTLSVerify to skip HTTPS and certificate verification.
SkipTLSVerify *bool
// PullPolicy whether to pull new image
PullPolicy *config.PullPolicy
// Username for authenticating against the registry.
Username *string
// Variant will overwrite the local variant for image pulls.
Variant *string
}
//BuildOptions are optional options for building images

View File

@ -6,7 +6,6 @@ import (
"strconv"
"strings"
"github.com/containers/common/pkg/config"
jsoniter "github.com/json-iterator/go"
"github.com/pkg/errors"
)
@ -104,70 +103,6 @@ func (o *PullOptions) GetAllTags() bool {
return *o.AllTags
}
// WithAuthfile
func (o *PullOptions) WithAuthfile(value string) *PullOptions {
v := &value
o.Authfile = v
return o
}
// GetAuthfile
func (o *PullOptions) GetAuthfile() string {
var authfile string
if o.Authfile == nil {
return authfile
}
return *o.Authfile
}
// WithCertDir
func (o *PullOptions) WithCertDir(value string) *PullOptions {
v := &value
o.CertDir = v
return o
}
// GetCertDir
func (o *PullOptions) GetCertDir() string {
var certDir string
if o.CertDir == nil {
return certDir
}
return *o.CertDir
}
// WithUsername
func (o *PullOptions) WithUsername(value string) *PullOptions {
v := &value
o.Username = v
return o
}
// GetUsername
func (o *PullOptions) GetUsername() string {
var username string
if o.Username == nil {
return username
}
return *o.Username
}
// WithPassword
func (o *PullOptions) WithPassword(value string) *PullOptions {
v := &value
o.Password = v
return o
}
// GetPassword
func (o *PullOptions) GetPassword() string {
var password string
if o.Password == nil {
return password
}
return *o.Password
}
// WithArch
func (o *PullOptions) WithArch(value string) *PullOptions {
v := &value
@ -184,6 +119,22 @@ func (o *PullOptions) GetArch() string {
return *o.Arch
}
// WithAuthfile
func (o *PullOptions) WithAuthfile(value string) *PullOptions {
v := &value
o.Authfile = v
return o
}
// GetAuthfile
func (o *PullOptions) GetAuthfile() string {
var authfile string
if o.Authfile == nil {
return authfile
}
return *o.Authfile
}
// WithOS
func (o *PullOptions) WithOS(value string) *PullOptions {
v := &value
@ -200,20 +151,20 @@ func (o *PullOptions) GetOS() string {
return *o.OS
}
// WithVariant
func (o *PullOptions) WithVariant(value string) *PullOptions {
// WithPassword
func (o *PullOptions) WithPassword(value string) *PullOptions {
v := &value
o.Variant = v
o.Password = v
return o
}
// GetVariant
func (o *PullOptions) GetVariant() string {
var variant string
if o.Variant == nil {
return variant
// GetPassword
func (o *PullOptions) GetPassword() string {
var password string
if o.Password == nil {
return password
}
return *o.Variant
return *o.Password
}
// WithQuiet
@ -232,22 +183,6 @@ func (o *PullOptions) GetQuiet() bool {
return *o.Quiet
}
// WithSignaturePolicy
func (o *PullOptions) WithSignaturePolicy(value string) *PullOptions {
v := &value
o.SignaturePolicy = v
return o
}
// GetSignaturePolicy
func (o *PullOptions) GetSignaturePolicy() string {
var signaturePolicy string
if o.SignaturePolicy == nil {
return signaturePolicy
}
return *o.SignaturePolicy
}
// WithSkipTLSVerify
func (o *PullOptions) WithSkipTLSVerify(value bool) *PullOptions {
v := &value
@ -264,18 +199,34 @@ func (o *PullOptions) GetSkipTLSVerify() bool {
return *o.SkipTLSVerify
}
// WithPullPolicy
func (o *PullOptions) WithPullPolicy(value config.PullPolicy) *PullOptions {
// WithUsername
func (o *PullOptions) WithUsername(value string) *PullOptions {
v := &value
o.PullPolicy = v
o.Username = v
return o
}
// GetPullPolicy
func (o *PullOptions) GetPullPolicy() config.PullPolicy {
var pullPolicy config.PullPolicy
if o.PullPolicy == nil {
return pullPolicy
// GetUsername
func (o *PullOptions) GetUsername() string {
var username string
if o.Username == nil {
return username
}
return *o.PullPolicy
return *o.Username
}
// WithVariant
func (o *PullOptions) WithVariant(value string) *PullOptions {
v := &value
o.Variant = v
return o
}
// GetVariant
func (o *PullOptions) GetVariant() string {
var variant string
if o.Variant == nil {
return variant
}
return *o.Variant
}

View File

@ -106,8 +106,9 @@ func (ir *ImageEngine) Prune(ctx context.Context, opts entities.ImagePruneOption
func (ir *ImageEngine) Pull(ctx context.Context, rawImage string, opts entities.ImagePullOptions) (*entities.ImagePullReport, error) {
options := new(images.PullOptions)
options.WithAllTags(opts.AllTags).WithAuthfile(opts.Authfile).WithCertDir(opts.CertDir).WithArch(opts.Arch).WithOS(opts.OS)
options.WithVariant(opts.Variant).WithPassword(opts.Password).WithPullPolicy(opts.PullPolicy)
options.WithAllTags(opts.AllTags).WithAuthfile(opts.Authfile).WithArch(opts.Arch).WithOS(opts.OS)
options.WithVariant(opts.Variant).WithPassword(opts.Password)
options.WithQuiet(opts.Quiet).WithUsername(opts.Username)
if s := opts.SkipTLSVerify; s != types.OptionalBoolUndefined {
if s == types.OptionalBoolTrue {
options.WithSkipTLSVerify(true)
@ -115,7 +116,6 @@ func (ir *ImageEngine) Pull(ctx context.Context, rawImage string, opts entities.
options.WithSkipTLSVerify(false)
}
}
options.WithQuiet(opts.Quiet).WithSignaturePolicy(opts.SignaturePolicy).WithUsername(opts.Username)
pulledImages, err := images.Pull(ir.ClientCtx, rawImage, options)
if err != nil {
return nil, err

View File

@ -522,4 +522,31 @@ var _ = Describe("Podman pull", func() {
Expect(data[0].Os).To(Equal(runtime.GOOS))
Expect(data[0].Architecture).To(Equal("arm64"))
})
It("podman pull --arch", func() {
session := podmanTest.Podman([]string{"pull", "--arch=bogus", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(125))
expectedError := "no image found in manifest list for architecture bogus"
Expect(session.ErrorToString()).To(ContainSubstring(expectedError))
session = podmanTest.Podman([]string{"pull", "--arch=arm64", "--os", "windows", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(125))
expectedError = "no image found in manifest list for architecture"
Expect(session.ErrorToString()).To(ContainSubstring(expectedError))
session = podmanTest.Podman([]string{"pull", "-q", "--arch=arm64", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
setup := podmanTest.Podman([]string{"image", "inspect", session.OutputToString()})
setup.WaitWithDefaultTimeout()
Expect(setup.ExitCode()).To(Equal(0))
data := setup.InspectImageJSON() // returns []inspect.ImageData
Expect(len(data)).To(Equal(1))
Expect(data[0].Os).To(Equal(runtime.GOOS))
Expect(data[0].Architecture).To(Equal("arm64"))
})
})