diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2021-01-28 15:34:35 -0500 |
---|---|---|
committer | Daniel J Walsh <dwalsh@redhat.com> | 2021-01-29 08:48:35 -0500 |
commit | d7c356552e3c3d1710f22da2f710f9ad529c2ad9 (patch) | |
tree | 2143e634af0203c47a10301da6be13518c3a7799 /pkg | |
parent | 0c6a889a7ec93964a12a10870920727e13e438c3 (diff) | |
download | podman-d7c356552e3c3d1710f22da2f710f9ad529c2ad9.tar.gz podman-d7c356552e3c3d1710f22da2f710f9ad529c2ad9.tar.bz2 podman-d7c356552e3c3d1710f22da2f710f9ad529c2ad9.zip |
Podman-remote push can support --format
Fix man page to document podman push --format fully.
Also found that push was not handling the tlsverify so fixed this.
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/api/handlers/compat/images_push.go | 10 | ||||
-rw-r--r-- | pkg/bindings/images/types.go | 2 | ||||
-rw-r--r-- | pkg/bindings/images/types_push_options.go | 16 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/images.go | 2 |
4 files changed, 27 insertions, 3 deletions
diff --git a/pkg/api/handlers/compat/images_push.go b/pkg/api/handlers/compat/images_push.go index 4a8fcdff3..c352ac6cd 100644 --- a/pkg/api/handlers/compat/images_push.go +++ b/pkg/api/handlers/compat/images_push.go @@ -5,6 +5,7 @@ import ( "net/http" "strings" + "github.com/containers/image/v5/types" "github.com/containers/podman/v2/libpod" "github.com/containers/podman/v2/pkg/api/handlers/utils" "github.com/containers/podman/v2/pkg/auth" @@ -27,8 +28,9 @@ func PushImage(w http.ResponseWriter, r *http.Request) { All bool `schema:"all"` Compress bool `schema:"compress"` Destination string `schema:"destination"` - Tag string `schema:"tag"` + Format string `schema:"format"` TLSVerify bool `schema:"tlsVerify"` + Tag string `schema:"tag"` }{ // This is where you can override the golang default value for one of fields TLSVerify: true, @@ -67,8 +69,12 @@ func PushImage(w http.ResponseWriter, r *http.Request) { All: query.All, Authfile: authfile, Compress: query.Compress, - Username: username, + Format: query.Format, Password: password, + Username: username, + } + if _, found := r.URL.Query()["tlsVerify"]; found { + options.SkipTLSVerify = types.NewOptionalBool(!query.TLSVerify) } if err := imageEngine.Push(context.Background(), imageName, query.Destination, options); err != nil { if errors.Cause(err) != storage.ErrImageUnknown { diff --git a/pkg/bindings/images/types.go b/pkg/bindings/images/types.go index 75f1a2f81..2cec9ee71 100644 --- a/pkg/bindings/images/types.go +++ b/pkg/bindings/images/types.go @@ -106,6 +106,8 @@ type PushOptions struct { Authfile *string // Compress tarball image layers when pushing to a directory using the 'dir' transport. Compress *bool + // Manifest type of the pushed image + Format *string // Password for authenticating against the registry. Password *string // SkipTLSVerify to skip HTTPS and certificate verification. diff --git a/pkg/bindings/images/types_push_options.go b/pkg/bindings/images/types_push_options.go index 7f9bb1064..b7d8a6f2d 100644 --- a/pkg/bindings/images/types_push_options.go +++ b/pkg/bindings/images/types_push_options.go @@ -135,6 +135,22 @@ func (o *PushOptions) GetCompress() bool { return *o.Compress } +// WithFormat +func (o *PushOptions) WithFormat(value string) *PushOptions { + v := &value + o.Format = v + return o +} + +// GetFormat +func (o *PushOptions) GetFormat() string { + var format string + if o.Format == nil { + return format + } + return *o.Format +} + // WithPassword func (o *PushOptions) WithPassword(value string) *PushOptions { v := &value diff --git a/pkg/domain/infra/tunnel/images.go b/pkg/domain/infra/tunnel/images.go index 878e7b999..6ba738cb9 100644 --- a/pkg/domain/infra/tunnel/images.go +++ b/pkg/domain/infra/tunnel/images.go @@ -236,7 +236,7 @@ func (ir *ImageEngine) Import(ctx context.Context, opts entities.ImageImportOpti func (ir *ImageEngine) Push(ctx context.Context, source string, destination string, opts entities.ImagePushOptions) error { options := new(images.PushOptions) - options.WithAll(opts.All).WithCompress(opts.Compress).WithUsername(opts.Username).WithPassword(opts.Password).WithAuthfile(opts.Authfile) + options.WithAll(opts.All).WithCompress(opts.Compress).WithUsername(opts.Username).WithPassword(opts.Password).WithAuthfile(opts.Authfile).WithFormat(opts.Format) if s := opts.SkipTLSVerify; s != types.OptionalBoolUndefined { if s == types.OptionalBoolTrue { |