diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-08-17 09:39:19 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-17 09:39:19 +0000 |
commit | a9131050cfca0844aabae505a3df6d43426a9fed (patch) | |
tree | b7306b2f742a6ef2bd2efa31db11e5705a4957e1 /pkg/domain | |
parent | fd0142d8ee78ac2fce6157f9e72b20c007b585ce (diff) | |
parent | 7e7a79b075f7d65657d95169f02c2c1c03198b93 (diff) | |
download | podman-a9131050cfca0844aabae505a3df6d43426a9fed.tar.gz podman-a9131050cfca0844aabae505a3df6d43426a9fed.tar.bz2 podman-a9131050cfca0844aabae505a3df6d43426a9fed.zip |
Merge pull request #15350 from nalind/manifest-amend
podman manifest create: accept --amend and --insecure flags
Diffstat (limited to 'pkg/domain')
-rw-r--r-- | pkg/domain/entities/manifest.go | 5 | ||||
-rw-r--r-- | pkg/domain/infra/abi/manifest.go | 10 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/manifest.go | 2 |
3 files changed, 15 insertions, 2 deletions
diff --git a/pkg/domain/entities/manifest.go b/pkg/domain/entities/manifest.go index 126b76c62..f17079271 100644 --- a/pkg/domain/entities/manifest.go +++ b/pkg/domain/entities/manifest.go @@ -4,7 +4,12 @@ import "github.com/containers/image/v5/types" // ManifestCreateOptions provides model for creating manifest type ManifestCreateOptions struct { + // True when adding lists to include all images All bool `schema:"all"` + // Amend an extant list if there's already one with the desired name + Amend bool `schema:"amend"` + // Should TLS registry certificate be verified? + SkipTLSVerify types.OptionalBool `json:"-" schema:"-"` } // ManifestAddOptions provides model for adding digests to manifest list diff --git a/pkg/domain/infra/abi/manifest.go b/pkg/domain/infra/abi/manifest.go index e0c11267e..7e8c86526 100644 --- a/pkg/domain/infra/abi/manifest.go +++ b/pkg/domain/infra/abi/manifest.go @@ -32,7 +32,15 @@ func (ir *ImageEngine) ManifestCreate(ctx context.Context, name string, images [ manifestList, err := ir.Libpod.LibimageRuntime().CreateManifestList(name) if err != nil { - return "", err + if errors.Is(err, storage.ErrDuplicateName) && opts.Amend { + amendList, amendErr := ir.Libpod.LibimageRuntime().LookupManifestList(name) + if amendErr != nil { + return "", err + } + manifestList = amendList + } else { + return "", err + } } addOptions := &libimage.ManifestListAddOptions{All: opts.All} diff --git a/pkg/domain/infra/tunnel/manifest.go b/pkg/domain/infra/tunnel/manifest.go index 2a514861d..2e6134051 100644 --- a/pkg/domain/infra/tunnel/manifest.go +++ b/pkg/domain/infra/tunnel/manifest.go @@ -15,7 +15,7 @@ import ( // ManifestCreate implements manifest create via ImageEngine func (ir *ImageEngine) ManifestCreate(ctx context.Context, name string, images []string, opts entities.ManifestCreateOptions) (string, error) { - options := new(manifests.CreateOptions).WithAll(opts.All) + options := new(manifests.CreateOptions).WithAll(opts.All).WithAmend(opts.Amend) imageID, err := manifests.Create(ir.ClientCtx, name, images, options) if err != nil { return imageID, fmt.Errorf("error creating manifest: %w", err) |