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