Skip to content

Commit ddfa334

Browse files
authored
Merge pull request containerd#9607 from vvoland/contentprovider
content: Add InfoReaderProvider
2 parents 781d027 + 8235665 commit ddfa334

File tree

5 files changed

+15
-33
lines changed

5 files changed

+15
-33
lines changed

content/content.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ type Status struct {
108108
// WalkFunc defines the callback for a blob walk.
109109
type WalkFunc func(Info) error
110110

111+
// InfoReaderProvider provides both info and reader for the specific content.
112+
type InfoReaderProvider interface {
113+
InfoProvider
114+
Provider
115+
}
116+
111117
// InfoProvider provides info for content inspection.
112118
type InfoProvider interface {
113119
// Info will return metadata about content available in the content store.

images/archive/exporter.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ func WithSkipNonDistributableBlobs() ExportOpt {
148148
// The manifest itself is excluded only if it's not present locally.
149149
// This allows to export multi-platform images if not all platforms are present
150150
// while still persisting the multi-platform index.
151-
func WithSkipMissing(store ContentProvider) ExportOpt {
151+
func WithSkipMissing(store content.InfoReaderProvider) ExportOpt {
152152
return func(ctx context.Context, o *exportOptions) error {
153153
o.blobRecordOptions.childrenHandler = images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) (subdescs []ocispec.Descriptor, err error) {
154154
children, err := images.Children(ctx, store, desc)
@@ -211,14 +211,8 @@ func copySourceLabels(ctx context.Context, infoProvider content.InfoProvider, de
211211
return desc, nil
212212
}
213213

214-
// ContentProvider provides both content and info about content
215-
type ContentProvider interface {
216-
content.Provider
217-
content.InfoProvider
218-
}
219-
220214
// Export implements Exporter.
221-
func Export(ctx context.Context, store ContentProvider, writer io.Writer, opts ...ExportOpt) error {
215+
func Export(ctx context.Context, store content.InfoReaderProvider, writer io.Writer, opts ...ExportOpt) error {
222216
var eo exportOptions
223217
for _, opt := range opts {
224218
if err := opt(ctx, &eo); err != nil {

images/usage/calculator.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,7 @@ func WithManifestUsage() Opt {
7575
}
7676
}
7777

78-
// ContentProvider provides both content and info about content
79-
type ContentProvider interface {
80-
content.Provider
81-
content.InfoProvider
82-
}
83-
84-
func CalculateImageUsage(ctx context.Context, i images.Image, provider ContentProvider, opts ...Opt) (int64, error) {
78+
func CalculateImageUsage(ctx context.Context, i images.Image, provider content.InfoReaderProvider, opts ...Opt) (int64, error) {
8579
var config usageOptions
8680
for _, opt := range opts {
8781
if err := opt(&config); err != nil {

pkg/cri/store/image/image.go

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import (
3232
docker "github.com/distribution/reference"
3333
"k8s.io/apimachinery/pkg/util/sets"
3434

35-
"github.com/opencontainers/go-digest"
3635
imagedigest "github.com/opencontainers/go-digest"
3736
"github.com/opencontainers/go-digest/digestset"
3837
imageidentity "github.com/opencontainers/image-spec/identity"
@@ -56,12 +55,6 @@ type Image struct {
5655
Pinned bool
5756
}
5857

59-
// InfoProvider provides both content and info about content
60-
type InfoProvider interface {
61-
content.Provider
62-
Info(ctx context.Context, dgst digest.Digest) (content.Info, error)
63-
}
64-
6558
// Store stores all images.
6659
type Store struct {
6760
lock sync.RWMutex
@@ -72,7 +65,7 @@ type Store struct {
7265
images images.Store
7366

7467
// content provider
75-
provider InfoProvider
68+
provider content.InfoReaderProvider
7669

7770
// platform represents the currently supported platform for images
7871
// TODO: Make this store multi-platform
@@ -83,7 +76,7 @@ type Store struct {
8376
}
8477

8578
// NewStore creates an image store.
86-
func NewStore(img images.Store, provider InfoProvider, platform platforms.MatchComparer) *Store {
79+
func NewStore(img images.Store, provider content.InfoReaderProvider, platform platforms.MatchComparer) *Store {
8780
return &Store{
8881
refCache: make(map[string]string),
8982
images: img,

pkg/display/manifest_printer.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,6 @@ var LineTreeFormat = TreeFormat{
5858
Spacer: " ",
5959
}
6060

61-
type ContentReader interface {
62-
content.Provider
63-
content.InfoProvider
64-
}
65-
6661
type ImageTreePrinter struct {
6762
verbose bool
6863
w io.Writer
@@ -101,7 +96,7 @@ func NewImageTreePrinter(opts ...PrintOpt) *ImageTreePrinter {
10196
}
10297

10398
// PrintImageTree prints an image and all its sub elements
104-
func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image, store ContentReader) error {
99+
func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image, store content.InfoReaderProvider) error {
105100
fmt.Fprintln(p.w, img.Name)
106101
subchild := p.format.SkipLine
107102
fmt.Fprintf(p.w, "%s Created: %s\n", subchild, img.CreatedAt)
@@ -113,12 +108,12 @@ func (p *ImageTreePrinter) PrintImageTree(ctx context.Context, img images.Image,
113108
}
114109

115110
// PrintManifestTree prints a manifest and all its sub elements
116-
func (p *ImageTreePrinter) PrintManifestTree(ctx context.Context, desc ocispec.Descriptor, store ContentReader) error {
111+
func (p *ImageTreePrinter) PrintManifestTree(ctx context.Context, desc ocispec.Descriptor, store content.InfoReaderProvider) error {
117112
// start displaying tree from the root descriptor perspective, which is a single child view
118113
return p.printManifestTree(ctx, desc, store, p.format.LastDrop, p.format.Spacer)
119114
}
120115

121-
func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.Descriptor, store ContentReader, prefix, childprefix string) error {
116+
func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.Descriptor, store content.InfoReaderProvider, prefix, childprefix string) error {
122117
subprefix := childprefix + p.format.MiddleDrop
123118
subchild := childprefix + p.format.SkipLine
124119
fmt.Fprintf(p.w, "%s%s @%s (%d bytes)\n", prefix, desc.MediaType, desc.Digest, desc.Size)
@@ -177,7 +172,7 @@ func (p *ImageTreePrinter) printManifestTree(ctx context.Context, desc ocispec.D
177172
return nil
178173
}
179174

180-
func (p *ImageTreePrinter) showContent(ctx context.Context, store ContentReader, desc ocispec.Descriptor, prefix string) error {
175+
func (p *ImageTreePrinter) showContent(ctx context.Context, store content.InfoReaderProvider, desc ocispec.Descriptor, prefix string) error {
181176
if p.verbose {
182177
info, err := store.Info(ctx, desc.Digest)
183178
if err != nil {

0 commit comments

Comments
 (0)