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 }