Splits up blob create options definitions to be package-specific
Redefines privately in both storage and client packages Signed-off-by: Brian Bland <brian.bland@docker.com>master
							parent
							
								
									e90578b27d
								
							
						
					
					
						commit
						67aef89bc0
					
				|  | @ -18,7 +18,6 @@ import ( | |||
| 	"github.com/docker/distribution/reference" | ||||
| 	"github.com/docker/distribution/registry/api/v2" | ||||
| 	"github.com/docker/distribution/registry/client/transport" | ||||
| 	"github.com/docker/distribution/registry/storage" | ||||
| 	"github.com/docker/distribution/registry/storage/cache" | ||||
| 	"github.com/docker/distribution/registry/storage/cache/memory" | ||||
| ) | ||||
|  | @ -573,8 +572,39 @@ func (bs *blobs) Put(ctx context.Context, mediaType string, p []byte) (distribut | |||
| 	return writer.Commit(ctx, desc) | ||||
| } | ||||
| 
 | ||||
| // createOptions is a collection of blob creation modifiers relevant to general
 | ||||
| // blob storage intended to be configured by the BlobCreateOption.Apply method.
 | ||||
| type createOptions struct { | ||||
| 	Mount struct { | ||||
| 		ShouldMount bool | ||||
| 		From        reference.Canonical | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| type optionFunc func(interface{}) error | ||||
| 
 | ||||
| func (f optionFunc) Apply(v interface{}) error { | ||||
| 	return f(v) | ||||
| } | ||||
| 
 | ||||
| // WithMountFrom returns a BlobCreateOption which designates that the blob should be
 | ||||
| // mounted from the given canonical reference.
 | ||||
| func WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption { | ||||
| 	return optionFunc(func(v interface{}) error { | ||||
| 		opts, ok := v.(*createOptions) | ||||
| 		if !ok { | ||||
| 			return fmt.Errorf("unexpected options type: %T", v) | ||||
| 		} | ||||
| 
 | ||||
| 		opts.Mount.ShouldMount = true | ||||
| 		opts.Mount.From = ref | ||||
| 
 | ||||
| 		return nil | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func (bs *blobs) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { | ||||
| 	var opts storage.CreateOptions | ||||
| 	var opts createOptions | ||||
| 
 | ||||
| 	for _, option := range options { | ||||
| 		err := option.Apply(&opts) | ||||
|  |  | |||
|  | @ -20,7 +20,6 @@ import ( | |||
| 	"github.com/docker/distribution/manifest/schema1" | ||||
| 	"github.com/docker/distribution/reference" | ||||
| 	"github.com/docker/distribution/registry/api/errcode" | ||||
| 	"github.com/docker/distribution/registry/storage" | ||||
| 	"github.com/docker/distribution/testutil" | ||||
| 	"github.com/docker/distribution/uuid" | ||||
| 	"github.com/docker/libtrust" | ||||
|  | @ -523,7 +522,7 @@ func TestBlobMount(t *testing.T) { | |||
| 
 | ||||
| 	l := r.Blobs(ctx) | ||||
| 
 | ||||
| 	bw, err := l.Create(ctx, storage.WithMountFrom(canonicalRef)) | ||||
| 	bw, err := l.Create(ctx, WithMountFrom(canonicalRef)) | ||||
| 	if bw != nil { | ||||
| 		t.Fatalf("Expected blob writer to be nil, was %v", bw) | ||||
| 	} | ||||
|  |  | |||
|  | @ -97,9 +97,9 @@ func (lbs *linkedBlobStore) Put(ctx context.Context, mediaType string, p []byte) | |||
| 	return desc, lbs.linkBlob(ctx, desc) | ||||
| } | ||||
| 
 | ||||
| // CreateOptions is a collection of blob creation modifiers relevant to general
 | ||||
| // createOptions is a collection of blob creation modifiers relevant to general
 | ||||
| // blob storage intended to be configured by the BlobCreateOption.Apply method.
 | ||||
| type CreateOptions struct { | ||||
| type createOptions struct { | ||||
| 	Mount struct { | ||||
| 		ShouldMount bool | ||||
| 		From        reference.Canonical | ||||
|  | @ -116,7 +116,7 @@ func (f optionFunc) Apply(v interface{}) error { | |||
| // mounted from the given canonical reference.
 | ||||
| func WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption { | ||||
| 	return optionFunc(func(v interface{}) error { | ||||
| 		opts, ok := v.(*CreateOptions) | ||||
| 		opts, ok := v.(*createOptions) | ||||
| 		if !ok { | ||||
| 			return fmt.Errorf("unexpected options type: %T", v) | ||||
| 		} | ||||
|  | @ -132,7 +132,7 @@ func WithMountFrom(ref reference.Canonical) distribution.BlobCreateOption { | |||
| func (lbs *linkedBlobStore) Create(ctx context.Context, options ...distribution.BlobCreateOption) (distribution.BlobWriter, error) { | ||||
| 	context.GetLogger(ctx).Debug("(*linkedBlobStore).Writer") | ||||
| 
 | ||||
| 	var opts CreateOptions | ||||
| 	var opts createOptions | ||||
| 
 | ||||
| 	for _, option := range options { | ||||
| 		err := option.Apply(&opts) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue