Skip to content

Commit

Permalink
revert /remote
Browse files Browse the repository at this point in the history
  • Loading branch information
thesayyn committed Mar 18, 2024
1 parent 13f2238 commit 9a1cd79
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 41 deletions.
4 changes: 2 additions & 2 deletions pkg/v1/remote/catalog.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func CatalogPage(target name.Registry, last string, n int, options ...Option) ([
return nil, err
}

f, err := makeFetcher(o.context, target, o)
f, err := newPuller(o).fetcher(o.context, target)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -83,7 +83,7 @@ func Catalog(ctx context.Context, target name.Registry, options ...Option) ([]st
ctx = o.context
}

return newPuller(o).Catalog(ctx, target)
return newPuller(o).catalog(ctx, target, o.pageSize)
}

func (f *fetcher) catalogPage(ctx context.Context, reg name.Registry, next string, pageSize int) (*Catalogs, error) {
Expand Down
4 changes: 2 additions & 2 deletions pkg/v1/remote/descriptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ func Head(ref name.Reference, options ...Option) (*v1.Descriptor, error) {
// Handle options and fetch the manifest with the acceptable MediaTypes in the
// Accept header.
func get(ref name.Reference, acceptable []types.MediaType, options ...Option) (*Descriptor, error) {
o, err := makeOptions(append(options, WithAcceptableMediaTypes(acceptable))...)
o, err := makeOptions(options...)
if err != nil {
return nil, err
}
return newPuller(o).Get(o.context, ref)
return newPuller(o).get(o.context, ref, acceptable, o.platform)
}

// Image converts the Descriptor into a v1.Image.
Expand Down
15 changes: 15 additions & 0 deletions pkg/v1/remote/fetcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,21 @@ func (f *fetcher) url(resource, identifier string) url.URL {
return u
}

func (f *fetcher) get(ctx context.Context, ref name.Reference, acceptable []types.MediaType, platform v1.Platform) (*Descriptor, error) {
b, desc, err := f.fetchManifest(ctx, ref, acceptable)
if err != nil {
return nil, err
}
return &Descriptor{
ref: ref,
ctx: ctx,
fetcher: *f,
Manifest: b,
Descriptor: *desc,
platform: platform,
}, nil
}

func (f *fetcher) fetchManifest(ctx context.Context, ref name.Reference, acceptable []types.MediaType) ([]byte, *v1.Descriptor, error) {
u := f.url("manifests", ref.Identifier())
req, err := http.NewRequest(http.MethodGet, u.String(), nil)
Expand Down
31 changes: 10 additions & 21 deletions pkg/v1/remote/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"github.com/google/go-containerregistry/pkg/logs"
v1 "github.com/google/go-containerregistry/pkg/v1"
"github.com/google/go-containerregistry/pkg/v1/remote/transport"
"github.com/google/go-containerregistry/pkg/v1/types"
)

// Option is a functional option for remote operations.
Expand All @@ -53,9 +52,8 @@ type options struct {
filter map[string]string

// Set by Reuse, we currently store one or the other.
puller *Puller
pusher *Pusher
acceptableMediaTypes []types.MediaType
puller *Puller
pusher *Pusher
}

var defaultPlatform = v1.Platform{
Expand Down Expand Up @@ -129,15 +127,14 @@ var DefaultTransport http.RoundTripper = &http.Transport{

func makeOptions(opts ...Option) (*options, error) {
o := &options{
transport: DefaultTransport,
platform: defaultPlatform,
acceptableMediaTypes: allManifestMediaTypes,
context: context.Background(),
jobs: defaultJobs,
pageSize: defaultPageSize,
retryPredicate: defaultRetryPredicate,
retryBackoff: defaultRetryBackoff,
retryStatusCodes: defaultRetryStatusCodes,
transport: DefaultTransport,
platform: defaultPlatform,
context: context.Background(),
jobs: defaultJobs,
pageSize: defaultPageSize,
retryPredicate: defaultRetryPredicate,
retryBackoff: defaultRetryBackoff,
retryStatusCodes: defaultRetryStatusCodes,
}

for _, option := range opts {
Expand Down Expand Up @@ -226,14 +223,6 @@ func WithPlatform(p v1.Platform) Option {
}
}

// WithAcceptableMediaTypes sets acceptable media types for artifacts
func WithAcceptableMediaTypes(acceptable []types.MediaType) Option {
return func(o *options) error {
o.acceptableMediaTypes = acceptable
return nil
}
}

// WithContext is a functional option for setting the context in http requests
// performed by a given function. Note that this context is used for _all_
// http requests, not just the initial volley. E.g., for remote.Image, the
Expand Down
23 changes: 8 additions & 15 deletions pkg/v1/remote/puller.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,14 @@ func NewPuller(options ...Option) (*Puller, error) {
if err != nil {
return nil, err
}

return newPuller(o), nil
}

func newPuller(o *options) *Puller {
if o.puller != nil {
return o.puller
}
return &Puller{
o: o,
}
Expand Down Expand Up @@ -91,30 +95,19 @@ func (p *Puller) Head(ctx context.Context, ref name.Reference) (*v1.Descriptor,

// Get is like remote.Get, but avoids re-authenticating when possible.
func (p *Puller) Get(ctx context.Context, ref name.Reference) (*Descriptor, error) {
return p.get(ctx, ref, p.o.acceptableMediaTypes, p.o.platform)
return p.get(ctx, ref, allManifestMediaTypes, p.o.platform)
}

func (p *Puller) get(ctx context.Context, ref name.Reference, acceptable []types.MediaType, platform v1.Platform) (*Descriptor, error) {
f, err := p.fetcher(ctx, ref.Context())
if err != nil {
return nil, err
}
mf, desc, err := f.fetchManifest(ctx, ref, acceptable)
if err != nil {
return nil, err
}
return &Descriptor{
ref: ref,
ctx: ctx,
fetcher: *f,
Manifest: mf,
Descriptor: *desc,
platform: platform,
}, nil
return f.get(ctx, ref, acceptable, platform)
}

func (p *Puller) Artifact(ctx context.Context, ref name.Reference) (partial.Artifact, error) {
return p.artifact(ctx, ref, p.o.acceptableMediaTypes, p.o.platform)
return p.artifact(ctx, ref, allManifestMediaTypes, p.o.platform)
}

func (p *Puller) artifact(ctx context.Context, ref name.Reference, acceptable []types.MediaType, platform v1.Platform) (partial.Artifact, error) {
Expand Down Expand Up @@ -243,7 +236,7 @@ func (p *Puller) catalogger(ctx context.Context, reg name.Registry, pageSize int
}, nil
}

func (p *Puller) Referrers(ctx context.Context, d name.Digest, filter map[string]string) (v1.ImageIndex, error) {
func (p *Puller) referrers(ctx context.Context, d name.Digest, filter map[string]string) (v1.ImageIndex, error) {
f, err := p.fetcher(ctx, d.Context())
if err != nil {
return nil, err
Expand Down
3 changes: 3 additions & 0 deletions pkg/v1/remote/pusher.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ func NewPusher(options ...Option) (*Pusher, error) {
}

func newPusher(o *options) *Pusher {
if o.pusher != nil {
return o.pusher
}
return &Pusher{
o: o,
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/v1/remote/referrers.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func Referrers(d name.Digest, options ...Option) (v1.ImageIndex, error) {
if err != nil {
return nil, err
}
return newPuller(o).Referrers(o.context, d, o.filter)
return newPuller(o).referrers(o.context, d, o.filter)
}

// https://github.com/opencontainers/distribution-spec/blob/main/spec.md#referrers-tag-schema
Expand Down

0 comments on commit 9a1cd79

Please sign in to comment.