mirror of
https://github.com/containers/podman.git
synced 2025-11-02 23:39:52 +08:00
Vendor in latest containers/common
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
29
vendor/github.com/containers/common/libimage/push.go
generated
vendored
29
vendor/github.com/containers/common/libimage/push.go
generated
vendored
@ -4,10 +4,14 @@ package libimage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
dockerArchiveTransport "github.com/containers/image/v5/docker/archive"
|
||||
dockerDaemonTransport "github.com/containers/image/v5/docker/daemon"
|
||||
"github.com/containers/image/v5/docker/reference"
|
||||
"github.com/containers/image/v5/manifest"
|
||||
"github.com/containers/image/v5/transports/alltransports"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
@ -31,6 +35,23 @@ func (r *Runtime) Push(ctx context.Context, source, destination string, options
|
||||
options = &PushOptions{}
|
||||
}
|
||||
|
||||
defaultConfig, err := config.Default()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if options.MaxRetries == nil {
|
||||
options.MaxRetries = &defaultConfig.Engine.Retry
|
||||
}
|
||||
if options.RetryDelay == nil {
|
||||
if defaultConfig.Engine.RetryDelay != "" {
|
||||
duration, err := time.ParseDuration(defaultConfig.Engine.RetryDelay)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse containers.conf retry_delay: %w", err)
|
||||
}
|
||||
options.RetryDelay = &duration
|
||||
}
|
||||
}
|
||||
|
||||
// Look up the local image. Note that we need to ignore the platform
|
||||
// and push what the user specified (containers/podman/issues/10344).
|
||||
image, resolvedSource, err := r.LookupImage(source, nil)
|
||||
@ -65,6 +86,14 @@ func (r *Runtime) Push(ctx context.Context, source, destination string, options
|
||||
destRef = dockerRef
|
||||
}
|
||||
|
||||
// docker-archive and only DockerV2Schema2MediaType support Gzip compression
|
||||
if options.CompressionFormat != nil &&
|
||||
(destRef.Transport().Name() == dockerArchiveTransport.Transport.Name() ||
|
||||
destRef.Transport().Name() == dockerDaemonTransport.Transport.Name() ||
|
||||
options.ManifestMIMEType == manifest.DockerV2Schema2MediaType) {
|
||||
options.CompressionFormat = nil
|
||||
}
|
||||
|
||||
if r.eventChannel != nil {
|
||||
defer r.writeEvent(&Event{ID: image.ID(), Name: destination, Time: time.Now(), Type: EventTypeImagePush})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user