storage

package
v1.3.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2021 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BlobUploadDir defines the upload directory for blob uploads.
	BlobUploadDir = ".uploads"
	SchemaVersion = 2
)
View Source
const (
	BlobsCache = "blobs"
)
View Source
const (
	S3StorageDriverName = "s3"
)

Variables

This section is empty.

Functions

func DirExists

func DirExists(d string) bool

func IsSupportedMediaType

func IsSupportedMediaType(mediaType string) bool

func Scrub

func Scrub(dir string, fix bool) error

Scrub will clean up all unreferenced blobs. TODO.

func ValidateHardLink(rootDir string) error

Types

type Blob

type Blob struct {
	Path string
}

Blob is a blob record.

type BlobUpload

type BlobUpload struct {
	StoreName string
	ID        string
}

BlobUpload models and upload request.

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

func NewCache

func NewCache(rootDir string, name string, log zlog.Logger) *Cache

func (*Cache) DeleteBlob

func (c *Cache) DeleteBlob(digest string, path string) error

func (*Cache) GetBlob

func (c *Cache) GetBlob(digest string) (string, error)

func (*Cache) HasBlob

func (c *Cache) HasBlob(digest string, blob string) bool

func (*Cache) PutBlob

func (c *Cache) PutBlob(digest string, path string) error

type ImageStore

type ImageStore interface {
	DirExists(d string) bool
	RootDir() string
	RLock()
	RUnlock()
	Lock()
	Unlock()
	InitRepo(name string) error
	ValidateRepo(name string) (bool, error)
	GetRepositories() ([]string, error)
	GetImageTags(repo string) ([]string, error)
	GetImageManifest(repo string, reference string) ([]byte, string, string, error)
	PutImageManifest(repo string, reference string, mediaType string, body []byte) (string, error)
	DeleteImageManifest(repo string, reference string) error
	BlobUploadPath(repo string, uuid string) string
	NewBlobUpload(repo string) (string, error)
	GetBlobUpload(repo string, uuid string) (int64, error)
	PutBlobChunkStreamed(repo string, uuid string, body io.Reader) (int64, error)
	PutBlobChunk(repo string, uuid string, from int64, to int64, body io.Reader) (int64, error)
	BlobUploadInfo(repo string, uuid string) (int64, error)
	FinishBlobUpload(repo string, uuid string, body io.Reader, digest string) error
	FullBlobUpload(repo string, body io.Reader, digest string) (string, int64, error)
	DedupeBlob(src string, dstDigest digest.Digest, dst string) error
	DeleteBlobUpload(repo string, uuid string) error
	BlobPath(repo string, digest digest.Digest) string
	CheckBlob(repo string, digest string) (bool, int64, error)
	GetBlob(repo string, digest string, mediaType string) (io.Reader, int64, error)
	DeleteBlob(repo string, digest string) error
	GetIndexContent(repo string) ([]byte, error)
	GetBlobContent(repo, digest string) ([]byte, error)
	GetReferrers(repo, digest string, mediaType string) ([]notation.Descriptor, error)
}

func NewImageStore

func NewImageStore(rootDir string, gc bool, dedupe bool, log zlog.Logger, m monitoring.MetricServer) ImageStore

NewImageStore returns a new image store backed by a file storage.

type ImageStoreFS

type ImageStoreFS struct {
	// contains filtered or unexported fields
}

ImageStoreFS provides the image storage operations.

func (*ImageStoreFS) BlobPath

func (is *ImageStoreFS) BlobPath(repo string, digest godigest.Digest) string

BlobPath returns the repository path of a blob.

func (*ImageStoreFS) BlobUploadInfo

func (is *ImageStoreFS) BlobUploadInfo(repo string, uuid string) (int64, error)

BlobUploadInfo returns the current blob size in bytes.

func (*ImageStoreFS) BlobUploadPath

func (is *ImageStoreFS) BlobUploadPath(repo string, uuid string) string

BlobUploadPath returns the upload path for a blob in this store.

func (*ImageStoreFS) CheckBlob

func (is *ImageStoreFS) CheckBlob(repo string, digest string) (bool, int64, error)

CheckBlob verifies a blob and returns true if the blob is correct.

func (*ImageStoreFS) DedupeBlob

func (is *ImageStoreFS) DedupeBlob(src string, dstDigest godigest.Digest, dst string) error

func (*ImageStoreFS) DeleteBlob

func (is *ImageStoreFS) DeleteBlob(repo string, digest string) error

DeleteBlob removes the blob from the repository.

func (*ImageStoreFS) DeleteBlobUpload

func (is *ImageStoreFS) DeleteBlobUpload(repo string, uuid string) error

DeleteBlobUpload deletes an existing blob upload that is currently in progress.

func (*ImageStoreFS) DeleteImageManifest

func (is *ImageStoreFS) DeleteImageManifest(repo string, reference string) error

DeleteImageManifest deletes the image manifest from the repository.

func (*ImageStoreFS) DirExists

func (is *ImageStoreFS) DirExists(d string) bool

func (*ImageStoreFS) FinishBlobUpload

func (is *ImageStoreFS) FinishBlobUpload(repo string, uuid string, body io.Reader, digest string) error

FinishBlobUpload finalizes the blob upload and moves blob the repository.

func (*ImageStoreFS) FullBlobUpload

func (is *ImageStoreFS) FullBlobUpload(repo string, body io.Reader, digest string) (string, int64, error)

FullBlobUpload handles a full blob upload, and no partial session is created.

func (*ImageStoreFS) GetBlob

func (is *ImageStoreFS) GetBlob(repo string, digest string, mediaType string) (io.Reader, int64, error)

GetBlob returns a stream to read the blob. FIXME: we should probably parse the manifest and use (digest, mediaType) as a blob selector instead of directly downloading the blob.

func (*ImageStoreFS) GetBlobContent

func (is *ImageStoreFS) GetBlobContent(repo string, digest string) ([]byte, error)

func (*ImageStoreFS) GetBlobUpload

func (is *ImageStoreFS) GetBlobUpload(repo string, uuid string) (int64, error)

GetBlobUpload returns the current size of a blob upload.

func (*ImageStoreFS) GetImageManifest

func (is *ImageStoreFS) GetImageManifest(repo string, reference string) ([]byte, string, string, error)

GetImageManifest returns the image manifest of an image in the specific repository.

func (*ImageStoreFS) GetImageTags

func (is *ImageStoreFS) GetImageTags(repo string) ([]string, error)

GetImageTags returns a list of image tags available in the specified repository.

func (*ImageStoreFS) GetIndexContent

func (is *ImageStoreFS) GetIndexContent(repo string) ([]byte, error)

func (*ImageStoreFS) GetReferrers

func (is *ImageStoreFS) GetReferrers(repo, digest string, mediaType string) ([]notation.Descriptor, error)

func (*ImageStoreFS) GetRepositories

func (is *ImageStoreFS) GetRepositories() ([]string, error)

GetRepositories returns a list of all the repositories under this store.

func (*ImageStoreFS) InitRepo

func (is *ImageStoreFS) InitRepo(name string) error

InitRepo creates an image repository under this store.

func (*ImageStoreFS) Lock

func (is *ImageStoreFS) Lock()

Lock write-lock.

func (*ImageStoreFS) NewBlobUpload

func (is *ImageStoreFS) NewBlobUpload(repo string) (string, error)

NewBlobUpload returns the unique ID for an upload in progress.

func (*ImageStoreFS) PutBlobChunk

func (is *ImageStoreFS) PutBlobChunk(repo string, uuid string, from int64, to int64,
	body io.Reader) (int64, error)

PutBlobChunk writes another chunk of data to the specified blob. It returns the number of actual bytes to the blob.

func (*ImageStoreFS) PutBlobChunkStreamed

func (is *ImageStoreFS) PutBlobChunkStreamed(repo string, uuid string, body io.Reader) (int64, error)

PutBlobChunkStreamed appends another chunk of data to the specified blob. It returns the number of actual bytes to the blob.

func (*ImageStoreFS) PutImageManifest

func (is *ImageStoreFS) PutImageManifest(repo string, reference string, mediaType string,
	body []byte) (string, error)

PutImageManifest adds an image manifest to the repository.

func (*ImageStoreFS) RLock

func (is *ImageStoreFS) RLock()

RLock read-lock.

func (*ImageStoreFS) RUnlock

func (is *ImageStoreFS) RUnlock()

RUnlock read-unlock.

func (*ImageStoreFS) RootDir

func (is *ImageStoreFS) RootDir() string

func (*ImageStoreFS) Unlock

func (is *ImageStoreFS) Unlock()

Unlock write-unlock.

func (*ImageStoreFS) ValidateRepo

func (is *ImageStoreFS) ValidateRepo(name string) (bool, error)

ValidateRepo validates that the repository layout is complaint with the OCI repo layout.

type ScrubImageResult added in v1.3.6

type ScrubImageResult struct {
	ImageName string `json:"image_name"`
	Tag       string `json:"tag"`
	Status    string `json:"status"`
	Error     string `json:"error"`
}

type ScrubResults added in v1.3.6

type ScrubResults struct {
	ScrubResults []ScrubImageResult `json:"scrub_results"`
}

func (ScrubResults) PrintScrubResults added in v1.3.6

func (results ScrubResults) PrintScrubResults(resultWriter io.Writer)

type StoreController

type StoreController struct {
	DefaultStore ImageStore
	SubStore     map[string]ImageStore
}

func (StoreController) CheckAllBlobsIntegrity added in v1.3.6

func (sc StoreController) CheckAllBlobsIntegrity() (ScrubResults, error)

func (StoreController) GetImageStore

func (sc StoreController) GetImageStore(name string) ImageStore

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL