diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-14 14:51:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-14 14:51:39 +0200 |
commit | 85c352d8bcffbf1593964e047763947d76d466e3 (patch) | |
tree | baf14f0d0433c0ab2b25dc5ea788e7cb66780c0c /pkg/domain/infra/abi/images.go | |
parent | 004826653f2a8b064af8c1f055b1a402f4060d1c (diff) | |
parent | ff52b7524a8b6db7bb58eeda2b9328730a54c611 (diff) | |
download | podman-85c352d8bcffbf1593964e047763947d76d466e3.tar.gz podman-85c352d8bcffbf1593964e047763947d76d466e3.tar.bz2 podman-85c352d8bcffbf1593964e047763947d76d466e3.zip |
Merge pull request #5709 from vrothberg/v2-search
podmanV2: implement search
Diffstat (limited to 'pkg/domain/infra/abi/images.go')
-rw-r--r-- | pkg/domain/infra/abi/images.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/pkg/domain/infra/abi/images.go b/pkg/domain/infra/abi/images.go index 6fc5eb9e3..402bbb45e 100644 --- a/pkg/domain/infra/abi/images.go +++ b/pkg/domain/infra/abi/images.go @@ -425,3 +425,38 @@ func (ir *ImageEngine) Diff(_ context.Context, nameOrId string, _ entities.DiffO } return &entities.DiffReport{Changes: changes}, nil } + +func (ir *ImageEngine) Search(ctx context.Context, term string, opts entities.ImageSearchOptions) ([]entities.ImageSearchReport, error) { + filter, err := image.ParseSearchFilter(opts.Filters) + if err != nil { + return nil, err + } + + searchOpts := image.SearchOptions{ + Authfile: opts.Authfile, + Filter: *filter, + Limit: opts.Limit, + NoTrunc: opts.NoTrunc, + InsecureSkipTLSVerify: opts.TLSVerify, + } + + searchResults, err := image.SearchImages(term, searchOpts) + if err != nil { + return nil, err + } + + // Convert from image.SearchResults to entities.ImageSearchReport. We don't + // want to leak any low-level packages into the remote client, which + // requires converting. + reports := make([]entities.ImageSearchReport, len(searchResults)) + for i := range searchResults { + reports[i].Index = searchResults[i].Index + reports[i].Name = searchResults[i].Name + reports[i].Description = searchResults[i].Index + reports[i].Stars = searchResults[i].Stars + reports[i].Official = searchResults[i].Official + reports[i].Automated = searchResults[i].Automated + } + + return reports, nil +} |