Documentation ¶
Overview ¶
Package storage contains storage services for use in the registry application. It should be considered an internal package, as of Go 1.4.
Index ¶
- Variables
- func RegisterLayerHandler(name string, initFunc LayerHandlerInitFunc) error
- type ErrLayerInvalidDigest
- type ErrLayerInvalidSize
- type ErrManifestUnverified
- type ErrManifestVerification
- type ErrUnknownLayer
- type ErrUnknownManifest
- type ErrUnknownManifestRevision
- type ErrUnknownRepository
- type Layer
- type LayerHandler
- type LayerHandlerInitFunc
- type LayerService
- type LayerUpload
- type ManifestService
- type Registry
- type Repository
Constants ¶
This section is empty.
Variables ¶
var ( // ErrLayerExists returned when layer already exists ErrLayerExists = fmt.Errorf("layer exists") // ErrLayerTarSumVersionUnsupported when tarsum is unsupported version. ErrLayerTarSumVersionUnsupported = fmt.Errorf("unsupported tarsum version") // ErrLayerUploadUnknown returned when upload is not found. ErrLayerUploadUnknown = fmt.Errorf("layer upload unknown") // ErrLayerClosed returned when an operation is attempted on a closed // Layer or LayerUpload. ErrLayerClosed = fmt.Errorf("layer closed") )
Functions ¶
func RegisterLayerHandler ¶
func RegisterLayerHandler(name string, initFunc LayerHandlerInitFunc) error
RegisterLayerHandler is used to register an LayerHandlerInitFunc for a LayerHandler backend with the given name.
Types ¶
type ErrLayerInvalidDigest ¶
ErrLayerInvalidDigest returned when tarsum check fails.
func (ErrLayerInvalidDigest) Error ¶
func (err ErrLayerInvalidDigest) Error() string
type ErrLayerInvalidSize ¶
type ErrLayerInvalidSize struct {
Size int64
}
ErrLayerInvalidSize returned when length check fails.
func (ErrLayerInvalidSize) Error ¶
func (err ErrLayerInvalidSize) Error() string
type ErrManifestUnverified ¶
type ErrManifestUnverified struct{}
ErrManifestUnverified is returned when the registry is unable to verify the manifest.
func (ErrManifestUnverified) Error ¶
func (ErrManifestUnverified) Error() string
type ErrManifestVerification ¶
type ErrManifestVerification []error
ErrManifestVerification provides a type to collect errors encountered during manifest verification. Currently, it accepts errors of all types, but it may be narrowed to those involving manifest verification.
func (ErrManifestVerification) Error ¶
func (errs ErrManifestVerification) Error() string
type ErrUnknownLayer ¶
ErrUnknownLayer returned when layer cannot be found.
func (ErrUnknownLayer) Error ¶
func (err ErrUnknownLayer) Error() string
type ErrUnknownManifest ¶
ErrUnknownManifest is returned if the manifest is not known by the registry.
func (ErrUnknownManifest) Error ¶
func (err ErrUnknownManifest) Error() string
type ErrUnknownManifestRevision ¶
ErrUnknownManifestRevision is returned when a manifest cannot be found by revision within a repository.
func (ErrUnknownManifestRevision) Error ¶
func (err ErrUnknownManifestRevision) Error() string
type ErrUnknownRepository ¶
type ErrUnknownRepository struct {
Name string
}
ErrUnknownRepository is returned if the named repository is not known by the registry.
func (ErrUnknownRepository) Error ¶
func (err ErrUnknownRepository) Error() string
type Layer ¶
type Layer interface { // http.ServeContent requires an efficient implementation of // ReadSeeker.Seek(0, os.SEEK_END). io.ReadSeeker io.Closer // Name returns the repository under which this layer is linked. Name() string // TODO(stevvooe): struggling with nomenclature: should this be "repo" or "name"? // Digest returns the unique digest of the blob, which is the tarsum for // layers. Digest() digest.Digest // CreatedAt returns the time this layer was created. CreatedAt() time.Time }
Layer provides a readable and seekable layer object. Typically, implementations are *not* goroutine safe.
type LayerHandler ¶
type LayerHandler interface { // Resolve returns an http.Handler which can serve the contents of a given // Layer if possible, or nil and an error when unsupported. This may // directly serve the contents of the layer or issue a redirect to another // URL hosting the content. Resolve(layer Layer) (http.Handler, error) }
LayerHandler provides middleware for serving the contents of a Layer.
func GetLayerHandler ¶
func GetLayerHandler(name string, options map[string]interface{}, storageDriver storagedriver.StorageDriver) (LayerHandler, error)
GetLayerHandler constructs a LayerHandler with the given options using the named backend.
type LayerHandlerInitFunc ¶
type LayerHandlerInitFunc func(storageDriver storagedriver.StorageDriver, options map[string]interface{}) (LayerHandler, error)
LayerHandlerInitFunc is the type of a LayerHandler factory function and is used to register the contsructor for different LayerHandler backends.
type LayerService ¶
type LayerService interface { // Exists returns true if the layer exists. Exists(digest digest.Digest) (bool, error) // Fetch the layer identifed by TarSum. Fetch(digest digest.Digest) (Layer, error) // Upload begins a layer upload to repository identified by name, // returning a handle. Upload() (LayerUpload, error) // Resume continues an in progress layer upload, returning a handle to the // upload. The caller should seek to the latest desired upload location // before proceeding. Resume(uuid string) (LayerUpload, error) }
LayerService provides operations on layer files in a backend storage.
type LayerUpload ¶
type LayerUpload interface { io.WriteSeeker io.Closer // Name of the repository under which the layer will be linked. Name() string // UUID returns the identifier for this upload. UUID() string // StartedAt returns the time this layer upload was started. StartedAt() time.Time // Finish marks the upload as completed, returning a valid handle to the // uploaded layer. The digest is validated against the contents of the // uploaded layer. Finish(digest digest.Digest) (Layer, error) // Cancel the layer upload process. Cancel() error }
LayerUpload provides a handle for working with in-progress uploads. Instances can be obtained from the LayerService.Upload and LayerService.Resume.
type ManifestService ¶
type ManifestService interface { // Tags lists the tags under the named repository. Tags() ([]string, error) // Exists returns true if the manifest exists. Exists(tag string) (bool, error) // Get retrieves the named manifest, if it exists. Get(tag string) (*manifest.SignedManifest, error) // Put creates or updates the named manifest. // Put(tag string, manifest *manifest.SignedManifest) (digest.Digest, error) Put(tag string, manifest *manifest.SignedManifest) error // Delete removes the named manifest, if it exists. Delete(tag string) error }
ManifestService provides operations on image manifests.
type Registry ¶
type Registry interface { // Repository should return a reference to the named repository. The // registry may or may not have the repository but should always return a // reference. Repository(name string) Repository }
Registry represents a collection of repositories, addressable by name.
func NewRegistryWithDriver ¶
func NewRegistryWithDriver(driver storagedriver.StorageDriver) Registry
NewRegistryWithDriver creates a new registry instance from the provided driver. The resulting registry may be shared by multiple goroutines but is cheap to allocate.
type Repository ¶
type Repository interface { // Name returns the name of the repository. Name() string // Manifests returns a reference to this repository's manifest service. Manifests() ManifestService // Layers returns a reference to this repository's layers service. Layers() LayerService }
Repository is a named collection of manifests and layers.