From 45ac9e1f991f5022d07ba13fcd369213166a5d26 Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Mon, 20 Sep 2021 11:33:23 +0200 Subject: [PATCH] libimage: accept CompressionFormat/CompressionLevel allow to specify the compression format and compression level. Signed-off-by: Giuseppe Scrivano --- common/libimage/copier.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/common/libimage/copier.go b/common/libimage/copier.go index a44f098ad1..7396ed4a1a 100644 --- a/common/libimage/copier.go +++ b/common/libimage/copier.go @@ -12,6 +12,7 @@ import ( "github.com/containers/common/pkg/retry" "github.com/containers/image/v5/copy" "github.com/containers/image/v5/docker/reference" + "github.com/containers/image/v5/pkg/compression" "github.com/containers/image/v5/signature" storageTransport "github.com/containers/image/v5/storage" "github.com/containers/image/v5/types" @@ -40,6 +41,10 @@ type CopyOptions struct { // Allows for customizing the destination reference lookup. This can // be used to use custom blob caches. DestinationLookupReferenceFunc LookupReferenceFunc + // CompressionFormat is the format to use for the compression of the blobs + CompressionFormat *compression.Algorithm + // CompressionLevel specifies what compression level is used + CompressionLevel *int // containers-auth.json(5) file to use when authenticating against // container registries. @@ -242,6 +247,14 @@ func (r *Runtime) newCopier(options *CopyOptions) (*copier, error) { c.systemContext.DockerCertPath = options.CertDirPath } + if options.CompressionFormat != nil { + c.systemContext.CompressionFormat = options.CompressionFormat + } + + if options.CompressionLevel != nil { + c.systemContext.CompressionLevel = options.CompressionLevel + } + policy, err := signature.DefaultPolicy(c.systemContext) if err != nil { return nil, err