Skip to content

Commit

Permalink
Merge pull request #815 from tonistiigi/multi-node-push-names
Browse files Browse the repository at this point in the history
imagetools: fix pushing same image with multiple names
  • Loading branch information
tonistiigi authored Oct 28, 2021
2 parents 4690e14 + b497587 commit 81cf206
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
2 changes: 1 addition & 1 deletion util/imagetools/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func (r *Resolver) Combine(ctx context.Context, in string, descs []ocispec.Descr
func (r *Resolver) Push(ctx context.Context, ref reference.Named, desc ocispec.Descriptor, dt []byte) error {
ref = reference.TagNameOnly(ref)

p, err := r.r.Pusher(ctx, ref.String())
p, err := r.resolver().Pusher(ctx, ref.String())
if err != nil {
return err
}
Expand Down
19 changes: 11 additions & 8 deletions util/imagetools/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,29 @@ type Opt struct {
}

type Resolver struct {
r remotes.Resolver
auth docker.Authorizer
}

func New(opt Opt) *Resolver {
resolver := docker.NewResolver(docker.ResolverOptions{
Client: http.DefaultClient,
Credentials: toCredentialsFunc(opt.Auth),
})
return &Resolver{
r: resolver,
auth: docker.NewDockerAuthorizer(docker.WithAuthCreds(toCredentialsFunc(opt.Auth)), docker.WithAuthClient(http.DefaultClient)),
}
}

func (r *Resolver) resolver() remotes.Resolver {
return docker.NewResolver(docker.ResolverOptions{
Authorizer: r.auth,
Client: http.DefaultClient,
})
}

func (r *Resolver) Resolve(ctx context.Context, in string) (string, ocispec.Descriptor, error) {
ref, err := parseRef(in)
if err != nil {
return "", ocispec.Descriptor{}, err
}

in, desc, err := r.r.Resolve(ctx, ref.String())
in, desc, err := r.resolver().Resolve(ctx, ref.String())
if err != nil {
return "", ocispec.Descriptor{}, err
}
Expand All @@ -65,7 +68,7 @@ func (r *Resolver) Get(ctx context.Context, in string) ([]byte, ocispec.Descript
}

func (r *Resolver) GetDescriptor(ctx context.Context, in string, desc ocispec.Descriptor) ([]byte, error) {
fetcher, err := r.r.Fetcher(ctx, in)
fetcher, err := r.resolver().Fetcher(ctx, in)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 81cf206

Please sign in to comment.