summaryrefslogtreecommitdiff
path: root/pkg/domain
diff options
context:
space:
mode:
authorPaul Holzinger <paul.holzinger@web.de>2021-01-22 14:09:55 +0100
committerPaul Holzinger <paul.holzinger@web.de>2021-01-22 20:19:13 +0100
commit6e6a38b4168ed7a528614f6499783243a8668395 (patch)
tree4389f13d6407233e77c84d3557f63bc0fdbc51b2 /pkg/domain
parentf02aba659447ea9198851231d7f11a8bfdfe69ba (diff)
downloadpodman-6e6a38b4168ed7a528614f6499783243a8668395.tar.gz
podman-6e6a38b4168ed7a528614f6499783243a8668395.tar.bz2
podman-6e6a38b4168ed7a528614f6499783243a8668395.zip
podman manifest exists
Add podman manifest exists command with remote support. Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
Diffstat (limited to 'pkg/domain')
-rw-r--r--pkg/domain/entities/engine_image.go1
-rw-r--r--pkg/domain/infra/abi/manifest.go12
-rw-r--r--pkg/domain/infra/tunnel/manifest.go9
3 files changed, 22 insertions, 0 deletions
diff --git a/pkg/domain/entities/engine_image.go b/pkg/domain/entities/engine_image.go
index 935ee6f20..ee611502f 100644
--- a/pkg/domain/entities/engine_image.go
+++ b/pkg/domain/entities/engine_image.go
@@ -32,6 +32,7 @@ type ImageEngine interface {
Unmount(ctx context.Context, images []string, options ImageUnmountOptions) ([]*ImageUnmountReport, error)
Untag(ctx context.Context, nameOrID string, tags []string, options ImageUntagOptions) error
ManifestCreate(ctx context.Context, names, images []string, opts ManifestCreateOptions) (string, error)
+ ManifestExists(ctx context.Context, name string) (*BoolReport, error)
ManifestInspect(ctx context.Context, name string) ([]byte, error)
ManifestAdd(ctx context.Context, opts ManifestAddOptions) (string, error)
ManifestAnnotate(ctx context.Context, names []string, opts ManifestAnnotateOptions) (string, error)
diff --git a/pkg/domain/infra/abi/manifest.go b/pkg/domain/infra/abi/manifest.go
index 139032ad6..626f1f7bf 100644
--- a/pkg/domain/infra/abi/manifest.go
+++ b/pkg/domain/infra/abi/manifest.go
@@ -40,6 +40,18 @@ func (ir *ImageEngine) ManifestCreate(ctx context.Context, names, images []strin
return imageID, err
}
+// ManifestExists checks if a manifest list with the given name exists in local storage
+func (ir *ImageEngine) ManifestExists(ctx context.Context, name string) (*entities.BoolReport, error) {
+ if image, err := ir.Libpod.ImageRuntime().NewFromLocal(name); err == nil {
+ exists, err := image.ExistsManifest()
+ if err != nil && errors.Cause(err) != buildahManifests.ErrManifestTypeNotSupported {
+ return nil, err
+ }
+ return &entities.BoolReport{Value: exists}, nil
+ }
+ return &entities.BoolReport{Value: false}, nil
+}
+
// ManifestInspect returns the content of a manifest list or image
func (ir *ImageEngine) ManifestInspect(ctx context.Context, name string) ([]byte, error) {
if newImage, err := ir.Libpod.ImageRuntime().NewFromLocal(name); err == nil {
diff --git a/pkg/domain/infra/tunnel/manifest.go b/pkg/domain/infra/tunnel/manifest.go
index 22ca44165..c12ba0045 100644
--- a/pkg/domain/infra/tunnel/manifest.go
+++ b/pkg/domain/infra/tunnel/manifest.go
@@ -23,6 +23,15 @@ func (ir *ImageEngine) ManifestCreate(ctx context.Context, names, images []strin
return imageID, err
}
+// ManifestExists checks if a manifest list with the given name exists
+func (ir *ImageEngine) ManifestExists(ctx context.Context, name string) (*entities.BoolReport, error) {
+ exists, err := manifests.Exists(ir.ClientCtx, name, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &entities.BoolReport{Value: exists}, nil
+}
+
// ManifestInspect returns contents of manifest list with given name
func (ir *ImageEngine) ManifestInspect(ctx context.Context, name string) ([]byte, error) {
list, err := manifests.Inspect(ir.ClientCtx, name, nil)