From 8cf4e185a9521b8e62f4769a5de76c1bd11469ce Mon Sep 17 00:00:00 2001 From: Andrei Aaron Date: Sun, 26 Jan 2025 08:47:45 +0000 Subject: [PATCH] chore(cachedb): move Cache interface to pkg/storage/types Signed-off-by: Andrei Aaron --- pkg/storage/cache.go | 5 +++-- pkg/storage/cache_benchmark_test.go | 11 ++++++----- pkg/storage/imagestore/imagestore.go | 5 ++--- pkg/storage/local/local.go | 3 +-- pkg/storage/s3/s3.go | 3 +-- pkg/storage/s3/s3_test.go | 8 ++++---- pkg/storage/storage_test.go | 10 +++++----- .../{cache/cacheinterface.go => types/cache.go} | 2 +- 8 files changed, 23 insertions(+), 24 deletions(-) rename pkg/storage/{cache/cacheinterface.go => types/cache.go} (98%) diff --git a/pkg/storage/cache.go b/pkg/storage/cache.go index fdfc61e4b..430840ee8 100644 --- a/pkg/storage/cache.go +++ b/pkg/storage/cache.go @@ -7,9 +7,10 @@ import ( zlog "zotregistry.dev/zot/pkg/log" "zotregistry.dev/zot/pkg/storage/cache" "zotregistry.dev/zot/pkg/storage/constants" + storageTypes "zotregistry.dev/zot/pkg/storage/types" ) -func CreateCacheDatabaseDriver(storageConfig config.StorageConfig, log zlog.Logger) (cache.Cache, error) { +func CreateCacheDatabaseDriver(storageConfig config.StorageConfig, log zlog.Logger) (storageTypes.Cache, error) { if !storageConfig.Dedupe && storageConfig.StorageDriver == nil { return nil, nil //nolint:nilnil } @@ -70,7 +71,7 @@ func CreateCacheDatabaseDriver(storageConfig config.StorageConfig, log zlog.Logg return nil, nil //nolint:nilnil } -func Create(dbtype string, parameters interface{}, log zlog.Logger) (cache.Cache, error) { +func Create(dbtype string, parameters interface{}, log zlog.Logger) (storageTypes.Cache, error) { switch dbtype { case "boltdb": { diff --git a/pkg/storage/cache_benchmark_test.go b/pkg/storage/cache_benchmark_test.go index 0b149b59d..7288369a5 100644 --- a/pkg/storage/cache_benchmark_test.go +++ b/pkg/storage/cache_benchmark_test.go @@ -11,6 +11,7 @@ import ( "zotregistry.dev/zot/pkg/log" "zotregistry.dev/zot/pkg/storage" "zotregistry.dev/zot/pkg/storage/cache" + storageTypes "zotregistry.dev/zot/pkg/storage/types" test "zotregistry.dev/zot/pkg/test/common" ) @@ -44,31 +45,31 @@ func generateData() map[godigest.Digest]string { return dataMap } -func helperPutAll(cache cache.Cache, testData map[godigest.Digest]string) { +func helperPutAll(cache storageTypes.Cache, testData map[godigest.Digest]string) { for digest, path := range testData { _ = cache.PutBlob(digest, path) } } -func helperDeleteAll(cache cache.Cache, testData map[godigest.Digest]string) { +func helperDeleteAll(cache storageTypes.Cache, testData map[godigest.Digest]string) { for digest, path := range testData { _ = cache.DeleteBlob(digest, path) } } -func helperHasAll(cache cache.Cache, testData map[godigest.Digest]string) { +func helperHasAll(cache storageTypes.Cache, testData map[godigest.Digest]string) { for digest, path := range testData { _ = cache.HasBlob(digest, path) } } -func helperGetAll(cache cache.Cache, testData map[godigest.Digest]string) { +func helperGetAll(cache storageTypes.Cache, testData map[godigest.Digest]string) { for digest := range testData { _, _ = cache.GetBlob(digest) } } -func helperMix(cache cache.Cache, testData map[godigest.Digest]string, digestSlice []godigest.Digest) { +func helperMix(cache storageTypes.Cache, testData map[godigest.Digest]string, digestSlice []godigest.Digest) { // The test data contains datasetSize entries by default, and each set of operations uses 5 entries for i := 0; i < 1000; i++ { _ = cache.PutBlob(digestSlice[i*5], testData[digestSlice[i*5]]) diff --git a/pkg/storage/imagestore/imagestore.go b/pkg/storage/imagestore/imagestore.go index d37842e0e..ab753f184 100644 --- a/pkg/storage/imagestore/imagestore.go +++ b/pkg/storage/imagestore/imagestore.go @@ -27,7 +27,6 @@ import ( zlog "zotregistry.dev/zot/pkg/log" zreg "zotregistry.dev/zot/pkg/regexp" "zotregistry.dev/zot/pkg/scheduler" - "zotregistry.dev/zot/pkg/storage/cache" common "zotregistry.dev/zot/pkg/storage/common" storageConstants "zotregistry.dev/zot/pkg/storage/constants" storageTypes "zotregistry.dev/zot/pkg/storage/types" @@ -46,7 +45,7 @@ type ImageStore struct { lock *sync.RWMutex log zlog.Logger metrics monitoring.MetricServer - cache cache.Cache + cache storageTypes.Cache dedupe bool linter common.Lint commit bool @@ -70,7 +69,7 @@ func (is *ImageStore) DirExists(d string) bool { // Use the last argument to properly set a cache database, or it will default to boltDB local storage. func NewImageStore(rootDir string, cacheDir string, dedupe, commit bool, log zlog.Logger, metrics monitoring.MetricServer, linter common.Lint, storeDriver storageTypes.Driver, - cacheDriver cache.Cache, compat []compat.MediaCompatibility, + cacheDriver storageTypes.Cache, compat []compat.MediaCompatibility, ) storageTypes.ImageStore { if err := storeDriver.EnsureDir(rootDir); err != nil { log.Error().Err(err).Str("rootDir", rootDir).Msg("failed to create root dir") diff --git a/pkg/storage/local/local.go b/pkg/storage/local/local.go index 3309415c2..3c2e372d0 100644 --- a/pkg/storage/local/local.go +++ b/pkg/storage/local/local.go @@ -4,7 +4,6 @@ import ( "zotregistry.dev/zot/pkg/compat" "zotregistry.dev/zot/pkg/extensions/monitoring" zlog "zotregistry.dev/zot/pkg/log" - "zotregistry.dev/zot/pkg/storage/cache" common "zotregistry.dev/zot/pkg/storage/common" "zotregistry.dev/zot/pkg/storage/imagestore" storageTypes "zotregistry.dev/zot/pkg/storage/types" @@ -13,7 +12,7 @@ import ( // NewImageStore returns a new image store backed by a file storage. // Use the last argument to properly set a cache database, or it will default to boltDB local storage. func NewImageStore(rootDir string, dedupe, commit bool, log zlog.Logger, - metrics monitoring.MetricServer, linter common.Lint, cacheDriver cache.Cache, + metrics monitoring.MetricServer, linter common.Lint, cacheDriver storageTypes.Cache, compat []compat.MediaCompatibility, ) storageTypes.ImageStore { return imagestore.NewImageStore( diff --git a/pkg/storage/s3/s3.go b/pkg/storage/s3/s3.go index 41a8915c7..685e2a3ab 100644 --- a/pkg/storage/s3/s3.go +++ b/pkg/storage/s3/s3.go @@ -9,7 +9,6 @@ import ( "zotregistry.dev/zot/pkg/compat" "zotregistry.dev/zot/pkg/extensions/monitoring" zlog "zotregistry.dev/zot/pkg/log" - "zotregistry.dev/zot/pkg/storage/cache" common "zotregistry.dev/zot/pkg/storage/common" "zotregistry.dev/zot/pkg/storage/imagestore" storageTypes "zotregistry.dev/zot/pkg/storage/types" @@ -20,7 +19,7 @@ import ( // Use the last argument to properly set a cache database, or it will default to boltDB local storage. func NewImageStore(rootDir string, cacheDir string, dedupe, commit bool, log zlog.Logger, metrics monitoring.MetricServer, linter common.Lint, store driver.StorageDriver, - cacheDriver cache.Cache, compat []compat.MediaCompatibility, + cacheDriver storageTypes.Cache, compat []compat.MediaCompatibility, ) storageTypes.ImageStore { return imagestore.NewImageStore( rootDir, diff --git a/pkg/storage/s3/s3_test.go b/pkg/storage/s3/s3_test.go index f21b3ffc8..c9f75eec0 100644 --- a/pkg/storage/s3/s3_test.go +++ b/pkg/storage/s3/s3_test.go @@ -63,7 +63,7 @@ func createMockStorage(rootDir string, cacheDir string, dedupe bool, store drive log := log.Logger{Logger: zerolog.New(os.Stdout)} metrics := monitoring.NewMetricsServer(true, log) - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache // from pkg/cli/server/root.go/applyDefaultValues, s3 magic if _, err := os.Stat(path.Join(cacheDir, @@ -81,7 +81,7 @@ func createMockStorage(rootDir string, cacheDir string, dedupe bool, store drive } func createMockStorageWithMockCache(rootDir string, dedupe bool, store driver.StorageDriver, - cacheDriver cache.Cache, + cacheDriver storageTypes.Cache, ) storageTypes.ImageStore { log := log.Logger{Logger: zerolog.New(os.Stdout)} metrics := monitoring.NewMetricsServer(false, log) @@ -133,7 +133,7 @@ func createObjectsStore(rootDir string, cacheDir string, dedupe bool) ( log := log.Logger{Logger: zerolog.New(os.Stdout)} metrics := monitoring.NewMetricsServer(false, log) - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache var err error @@ -162,7 +162,7 @@ func createObjectsStoreDynamo(rootDir string, cacheDir string, dedupe bool, tabl log := log.Logger{Logger: zerolog.New(os.Stdout)} metrics := monitoring.NewMetricsServer(false, log) - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache // from pkg/cli/server/root.go/applyDefaultValues, s3 magic tableName = strings.ReplaceAll(tableName, "/", "") diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index 875131929..7a1cb8140 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -72,10 +72,10 @@ type createObjectStoreOpts struct { } func createObjectsStore(options createObjectStoreOpts) ( - storageTypes.Driver, storageTypes.ImageStore, cache.Cache, error, + storageTypes.Driver, storageTypes.ImageStore, storageTypes.Cache, error, ) { var ( - cacheDriver cache.Cache + cacheDriver storageTypes.Cache useRelPaths bool ) @@ -1043,7 +1043,7 @@ func TestMandatoryAnnotations(t *testing.T) { testDir = path.Join("/oci-repo-test", uuid.String()) opts.rootDir = testDir - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache store, _, cacheDriver, _ = createObjectsStore(opts) imgStore = imagestore.NewImageStore(testDir, cacheDir, false, false, log, metrics, @@ -1055,7 +1055,7 @@ func TestMandatoryAnnotations(t *testing.T) { defer cleanupStorage(store, testDir) } else { - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache store, _, cacheDriver, _ = createObjectsStore(opts) imgStore = imagestore.NewImageStore(cacheDir, cacheDir, true, true, log, metrics, @@ -1118,7 +1118,7 @@ func TestMandatoryAnnotations(t *testing.T) { }, }, store, nil, nil) } else { - var cacheDriver cache.Cache + var cacheDriver storageTypes.Cache store, _, cacheDriver, _ = createObjectsStore(opts) imgStore = imagestore.NewImageStore(cacheDir, cacheDir, true, true, log, metrics, diff --git a/pkg/storage/cache/cacheinterface.go b/pkg/storage/types/cache.go similarity index 98% rename from pkg/storage/cache/cacheinterface.go rename to pkg/storage/types/cache.go index 8d3ebe679..35bd6703f 100644 --- a/pkg/storage/cache/cacheinterface.go +++ b/pkg/storage/types/cache.go @@ -1,4 +1,4 @@ -package cache +package types import ( godigest "github.com/opencontainers/go-digest"