Rename top level registry interface to namespace

Registry is intended to be used as a repository service than an abstract collection of repositories. Namespace better describes a collection of repositories retrievable by name.
The registry service serves any repository in the global scope.

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
This commit is contained in:
Derek McGowan 2015-04-09 19:21:33 -07:00
parent 250e61e2a1
commit e83e37618f
4 changed files with 12 additions and 6 deletions

View file

@ -40,7 +40,7 @@ type App struct {
router *mux.Router // main application router, configured with dispatchers router *mux.Router // main application router, configured with dispatchers
driver storagedriver.StorageDriver // driver maintains the app global storage driver instance. driver storagedriver.StorageDriver // driver maintains the app global storage driver instance.
registry distribution.Registry // registry is the primary registry backend for the app instance. registry distribution.Namespace // registry is the primary registry backend for the app instance.
accessController auth.AccessController // main access controller for application accessController auth.AccessController // main access controller for application
// events contains notification related configuration. // events contains notification related configuration.
@ -541,7 +541,7 @@ func appendAccessRecords(records []auth.Access, method string, repo string) []au
} }
// applyRegistryMiddleware wraps a registry instance with the configured middlewares // applyRegistryMiddleware wraps a registry instance with the configured middlewares
func applyRegistryMiddleware(registry distribution.Registry, middlewares []configuration.Middleware) (distribution.Registry, error) { func applyRegistryMiddleware(registry distribution.Namespace, middlewares []configuration.Middleware) (distribution.Namespace, error) {
for _, mw := range middlewares { for _, mw := range middlewares {
rmw, err := registrymiddleware.Get(mw.Name, mw.Options, registry) rmw, err := registrymiddleware.Get(mw.Name, mw.Options, registry)
if err != nil { if err != nil {

View file

@ -8,7 +8,7 @@ import (
// InitFunc is the type of a RegistryMiddleware factory function and is // InitFunc is the type of a RegistryMiddleware factory function and is
// used to register the constructor for different RegistryMiddleware backends. // used to register the constructor for different RegistryMiddleware backends.
type InitFunc func(registry distribution.Registry, options map[string]interface{}) (distribution.Registry, error) type InitFunc func(registry distribution.Namespace, options map[string]interface{}) (distribution.Namespace, error)
var middlewares map[string]InitFunc var middlewares map[string]InitFunc
@ -28,7 +28,7 @@ func Register(name string, initFunc InitFunc) error {
} }
// Get constructs a RegistryMiddleware with the given options using the named backend. // Get constructs a RegistryMiddleware with the given options using the named backend.
func Get(name string, options map[string]interface{}, registry distribution.Registry) (distribution.Registry, error) { func Get(name string, options map[string]interface{}, registry distribution.Namespace) (distribution.Namespace, error) {
if middlewares != nil { if middlewares != nil {
if initFunc, exists := middlewares[name]; exists { if initFunc, exists := middlewares[name]; exists {
return initFunc(registry, options) return initFunc(registry, options)

View file

@ -21,7 +21,7 @@ import (
type manifestStoreTestEnv struct { type manifestStoreTestEnv struct {
ctx context.Context ctx context.Context
driver driver.StorageDriver driver driver.StorageDriver
registry distribution.Registry registry distribution.Namespace
repository distribution.Repository repository distribution.Repository
name string name string
tag string tag string

View file

@ -20,7 +20,7 @@ type registry struct {
// NewRegistryWithDriver creates a new registry instance from the provided // NewRegistryWithDriver creates a new registry instance from the provided
// driver. The resulting registry may be shared by multiple goroutines but is // driver. The resulting registry may be shared by multiple goroutines but is
// cheap to allocate. // cheap to allocate.
func NewRegistryWithDriver(driver storagedriver.StorageDriver, layerInfoCache cache.LayerInfoCache) distribution.Registry { func NewRegistryWithDriver(driver storagedriver.StorageDriver, layerInfoCache cache.LayerInfoCache) distribution.Namespace {
bs := &blobStore{ bs := &blobStore{
driver: driver, driver: driver,
pm: defaultPathMapper, pm: defaultPathMapper,
@ -36,6 +36,12 @@ func NewRegistryWithDriver(driver storagedriver.StorageDriver, layerInfoCache ca
} }
} }
// Scope returns the namespace scope for a registry. The registry
// will only serve repositories contained within this scope.
func (reg *registry) Scope() distribution.Scope {
return distribution.GlobalScope
}
// Repository returns an instance of the repository tied to the registry. // Repository returns an instance of the repository tied to the registry.
// Instances should not be shared between goroutines but are cheap to // Instances should not be shared between goroutines but are cheap to
// allocate. In general, they should be request scoped. // allocate. In general, they should be request scoped.