From 3c6603a2f88ab5ba38bf58334417aaa90c458c06 Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Tue, 25 Aug 2020 07:33:44 -0400 Subject: Add support for variant when pulling images Signed-off-by: Daniel J Walsh --- pkg/api/handlers/libpod/images.go | 12 +++++++----- pkg/api/server/register_images.go | 8 ++++++-- pkg/bindings/images/images.go | 1 + pkg/domain/entities/images.go | 2 ++ pkg/domain/infra/abi/images.go | 1 + 5 files changed, 17 insertions(+), 7 deletions(-) (limited to 'pkg') diff --git a/pkg/api/handlers/libpod/images.go b/pkg/api/handlers/libpod/images.go index 51013acf1..8d3fc4e00 100644 --- a/pkg/api/handlers/libpod/images.go +++ b/pkg/api/handlers/libpod/images.go @@ -338,11 +338,12 @@ func ImagesPull(w http.ResponseWriter, r *http.Request) { runtime := r.Context().Value("runtime").(*libpod.Runtime) decoder := r.Context().Value("decoder").(*schema.Decoder) query := struct { - Reference string `schema:"reference"` - OverrideOS string `schema:"overrideOS"` - OverrideArch string `schema:"overrideArch"` - TLSVerify bool `schema:"tlsVerify"` - AllTags bool `schema:"allTags"` + Reference string `schema:"reference"` + OverrideOS string `schema:"overrideOS"` + OverrideArch string `schema:"overrideArch"` + OverrideVariant string `schema:"overrideVariant"` + TLSVerify bool `schema:"tlsVerify"` + AllTags bool `schema:"allTags"` }{ TLSVerify: true, } @@ -393,6 +394,7 @@ func ImagesPull(w http.ResponseWriter, r *http.Request) { DockerRegistryCreds: authConf, OSChoice: query.OverrideOS, ArchitectureChoice: query.OverrideArch, + VariantChoice: query.OverrideVariant, } if _, found := r.URL.Query()["tlsVerify"]; found { dockerRegistryOptions.DockerInsecureSkipTLSVerify = types.NewOptionalBool(!query.TLSVerify) diff --git a/pkg/api/server/register_images.go b/pkg/api/server/register_images.go index 748e3fb11..64258a073 100644 --- a/pkg/api/server/register_images.go +++ b/pkg/api/server/register_images.go @@ -905,12 +905,16 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error { // description: "username:password for the registry" // type: string // - in: query + // name: overrideArch + // description: Pull image for the specified architecture. + // type: string + // - in: query // name: overrideOS // description: Pull image for the specified operating system. // type: string // - in: query - // name: overrideArch - // description: Pull image for the specified architecture. + // name: overrideVariant + // description: Pull image for the specified variant. // type: string // - in: query // name: tlsVerify diff --git a/pkg/bindings/images/images.go b/pkg/bindings/images/images.go index 12d1a9ce9..9f6e78b79 100644 --- a/pkg/bindings/images/images.go +++ b/pkg/bindings/images/images.go @@ -365,6 +365,7 @@ func Pull(ctx context.Context, rawImage string, options entities.ImagePullOption params.Set("reference", rawImage) params.Set("overrideArch", options.OverrideArch) params.Set("overrideOS", options.OverrideOS) + params.Set("overrideVariant", options.OverrideVariant) if options.SkipTLSVerify != types.OptionalBoolUndefined { // Note: we have to verify if skipped is false. verifyTLS := bool(options.SkipTLSVerify == types.OptionalBoolFalse) diff --git a/pkg/domain/entities/images.go b/pkg/domain/entities/images.go index cb970b09a..3a12a4e22 100644 --- a/pkg/domain/entities/images.go +++ b/pkg/domain/entities/images.go @@ -137,6 +137,8 @@ type ImagePullOptions struct { // OverrideOS will overwrite the local operating system (OS) for image // pulls. OverrideOS string + // OverrideVariant will overwrite the local variant for image pulls. + OverrideVariant string // Quiet can be specified to suppress pull progress when pulling. Ignored // for remote calls. Quiet bool diff --git a/pkg/domain/infra/abi/images.go b/pkg/domain/infra/abi/images.go index 70d740bb5..6b94ca9c0 100644 --- a/pkg/domain/infra/abi/images.go +++ b/pkg/domain/infra/abi/images.go @@ -251,6 +251,7 @@ func (ir *ImageEngine) Pull(ctx context.Context, rawImage string, options entiti DockerCertPath: options.CertDir, OSChoice: options.OverrideOS, ArchitectureChoice: options.OverrideArch, + VariantChoice: options.OverrideVariant, DockerInsecureSkipTLSVerify: options.SkipTLSVerify, } -- cgit v1.2.3-54-g00ecf