github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/domain/infra/abi/images_list.go (about) 1 package abi 2 3 import ( 4 "context" 5 6 libpodImage "github.com/containers/podman/v2/libpod/image" 7 "github.com/containers/podman/v2/pkg/domain/entities" 8 "github.com/pkg/errors" 9 ) 10 11 func (ir *ImageEngine) List(ctx context.Context, opts entities.ImageListOptions) ([]*entities.ImageSummary, error) { 12 images, err := ir.Libpod.ImageRuntime().GetImagesWithFilters(opts.Filter) 13 if err != nil { 14 return nil, err 15 } 16 17 if !opts.All { 18 filter, err := ir.Libpod.ImageRuntime().IntermediateFilter(ctx, images) 19 if err != nil { 20 return nil, err 21 } 22 images = libpodImage.FilterImages(images, []libpodImage.ResultFilter{filter}) 23 } 24 25 summaries := []*entities.ImageSummary{} 26 for _, img := range images { 27 digests := make([]string, len(img.Digests())) 28 for j, d := range img.Digests() { 29 digests[j] = string(d) 30 } 31 32 e := entities.ImageSummary{ 33 ID: img.ID(), 34 ConfigDigest: string(img.ConfigDigest), 35 Created: img.Created().Unix(), 36 Dangling: img.Dangling(), 37 Digest: string(img.Digest()), 38 Digests: digests, 39 History: img.NamesHistory(), 40 Names: img.Names(), 41 ParentId: img.Parent, 42 ReadOnly: img.IsReadOnly(), 43 SharedSize: 0, 44 VirtualSize: img.VirtualSize, 45 RepoTags: img.Names(), // may include tags and digests 46 } 47 e.Labels, err = img.Labels(ctx) 48 if err != nil { 49 return nil, errors.Wrapf(err, "error retrieving label for image %q: you may need to remove the image to resolve the error", img.ID()) 50 } 51 52 ctnrs, err := img.Containers() 53 if err != nil { 54 return nil, errors.Wrapf(err, "error retrieving containers for image %q: you may need to remove the image to resolve the error", img.ID()) 55 } 56 e.Containers = len(ctnrs) 57 58 sz, err := img.Size(ctx) 59 if err != nil { 60 return nil, errors.Wrapf(err, "error retrieving size of image %q: you may need to remove the image to resolve the error", img.ID()) 61 } 62 e.Size = int64(*sz) 63 64 summaries = append(summaries, &e) 65 } 66 return summaries, nil 67 }