zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/pkg/storage/types/types.go (about)

     1  package types
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"time"
     7  
     8  	storagedriver "github.com/docker/distribution/registry/storage/driver"
     9  	godigest "github.com/opencontainers/go-digest"
    10  	ispec "github.com/opencontainers/image-spec/specs-go/v1"
    11  	artifactspec "github.com/oras-project/artifacts-spec/specs-go/v1"
    12  
    13  	"zotregistry.io/zot/pkg/scheduler"
    14  )
    15  
    16  type StoreController interface {
    17  	GetImageStore(name string) ImageStore
    18  	GetDefaultImageStore() ImageStore
    19  	GetImageSubStores() map[string]ImageStore
    20  }
    21  
    22  type ImageStore interface { //nolint:interfacebloat
    23  	Name() string
    24  	DirExists(d string) bool
    25  	RootDir() string
    26  	RLock(*time.Time)
    27  	RUnlock(*time.Time)
    28  	Lock(*time.Time)
    29  	Unlock(*time.Time)
    30  	InitRepo(name string) error
    31  	ValidateRepo(name string) (bool, error)
    32  	GetRepositories() ([]string, error)
    33  	GetNextRepository(repo string) (string, error)
    34  	GetImageTags(repo string) ([]string, error)
    35  	GetImageManifest(repo, reference string) ([]byte, godigest.Digest, string, error)
    36  	PutImageManifest(repo, reference, mediaType string, body []byte) (godigest.Digest, godigest.Digest, error)
    37  	DeleteImageManifest(repo, reference string, detectCollision bool) error
    38  	BlobUploadPath(repo, uuid string) string
    39  	NewBlobUpload(repo string) (string, error)
    40  	GetBlobUpload(repo, uuid string) (int64, error)
    41  	PutBlobChunkStreamed(repo, uuid string, body io.Reader) (int64, error)
    42  	PutBlobChunk(repo, uuid string, from, to int64, body io.Reader) (int64, error)
    43  	BlobUploadInfo(repo, uuid string) (int64, error)
    44  	FinishBlobUpload(repo, uuid string, body io.Reader, digest godigest.Digest) error
    45  	FullBlobUpload(repo string, body io.Reader, digest godigest.Digest) (string, int64, error)
    46  	DedupeBlob(src string, dstDigest godigest.Digest, dstRepo, dst string) error
    47  	DeleteBlobUpload(repo, uuid string) error
    48  	BlobPath(repo string, digest godigest.Digest) string
    49  	CheckBlob(repo string, digest godigest.Digest) (bool, int64, error)
    50  	StatBlob(repo string, digest godigest.Digest) (bool, int64, time.Time, error)
    51  	GetBlob(repo string, digest godigest.Digest, mediaType string) (io.ReadCloser, int64, error)
    52  	GetBlobPartial(repo string, digest godigest.Digest, mediaType string, from, to int64,
    53  	) (io.ReadCloser, int64, int64, error)
    54  	DeleteBlob(repo string, digest godigest.Digest) error
    55  	CleanupRepo(repo string, blobs []godigest.Digest, removeRepo bool) (int, error)
    56  	GetIndexContent(repo string) ([]byte, error)
    57  	PutIndexContent(repo string, index ispec.Index) error
    58  	StatIndex(repo string) (bool, int64, time.Time, error)
    59  	GetBlobContent(repo string, digest godigest.Digest) ([]byte, error)
    60  	GetReferrers(repo string, digest godigest.Digest, artifactTypes []string) (ispec.Index, error)
    61  	GetOrasReferrers(repo string, digest godigest.Digest, artifactType string) ([]artifactspec.Descriptor, error)
    62  	RunDedupeBlobs(interval time.Duration, sch *scheduler.Scheduler)
    63  	RunDedupeForDigest(ctx context.Context, digest godigest.Digest, dedupe bool, duplicateBlobs []string) error
    64  	GetNextDigestWithBlobPaths(repos []string, lastDigests []godigest.Digest) (godigest.Digest, []string, error)
    65  	GetAllBlobs(repo string) ([]string, error)
    66  	PopulateStorageMetrics(interval time.Duration, sch *scheduler.Scheduler)
    67  }
    68  
    69  type Driver interface { //nolint:interfacebloat
    70  	Name() string
    71  	EnsureDir(path string) error
    72  	DirExists(path string) bool
    73  	Reader(path string, offset int64) (io.ReadCloser, error)
    74  	ReadFile(path string) ([]byte, error)
    75  	Delete(path string) error
    76  	Stat(path string) (storagedriver.FileInfo, error)
    77  	Writer(filepath string, append bool) (storagedriver.FileWriter, error) //nolint: predeclared
    78  	WriteFile(filepath string, content []byte) (int, error)
    79  	Walk(path string, f storagedriver.WalkFn) error
    80  	List(fullpath string) ([]string, error)
    81  	Move(sourcePath string, destPath string) error
    82  	SameFile(path1, path2 string) bool
    83  	Link(src, dest string) error
    84  }