mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 20:38:08 +08:00
feat(retention): added image retention policies (#1866)
feat(metaDB): add more image statistics info Signed-off-by: Petu Eusebiu <peusebiu@cisco.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
package sync
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
@@ -164,7 +165,7 @@ func (registry *LocalRegistry) CommitImage(imageReference types.ImageReference,
|
||||
}
|
||||
|
||||
if registry.metaDB != nil {
|
||||
err = meta.SetImageMetaFromInput(repo, reference, mediaType,
|
||||
err = meta.SetImageMetaFromInput(context.Background(), repo, reference, mediaType,
|
||||
manifestDigest, manifestBlob, imageStore, registry.metaDB, registry.log)
|
||||
if err != nil {
|
||||
return fmt.Errorf("metaDB: failed to set metadata for image '%s %s': %w", repo, reference, err)
|
||||
@@ -222,7 +223,7 @@ func (registry *LocalRegistry) copyManifest(repo string, manifestContent []byte,
|
||||
}
|
||||
|
||||
if registry.metaDB != nil {
|
||||
err = meta.SetImageMetaFromInput(repo, reference, ispec.MediaTypeImageManifest,
|
||||
err = meta.SetImageMetaFromInput(context.Background(), repo, reference, ispec.MediaTypeImageManifest,
|
||||
digest, manifestContent, imageStore, registry.metaDB, registry.log)
|
||||
if err != nil {
|
||||
registry.log.Error().Str("errorType", common.TypeOf(err)).
|
||||
|
||||
@@ -153,7 +153,7 @@ func (ref CosignReference) SyncReferences(ctx context.Context, localRepo, remote
|
||||
ref.log.Debug().Str("repository", localRepo).Str("subject", subjectDigestStr).
|
||||
Msg("metaDB: trying to sync cosign reference for image")
|
||||
|
||||
err = meta.SetImageMetaFromInput(localRepo, cosignTag, ispec.MediaTypeImageManifest,
|
||||
err = meta.SetImageMetaFromInput(ctx, localRepo, cosignTag, ispec.MediaTypeImageManifest,
|
||||
referenceDigest, manifestBuf, ref.storeController.GetImageStore(localRepo),
|
||||
ref.metaDB, ref.log)
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ func (ref OciReferences) SyncReferences(ctx context.Context, localRepo, remoteRe
|
||||
ref.log.Debug().Str("repository", localRepo).Str("subject", subjectDigestStr).
|
||||
Msg("metaDB: trying to add oci references for image")
|
||||
|
||||
err = meta.SetImageMetaFromInput(localRepo, referenceDigest.String(), referrer.MediaType,
|
||||
err = meta.SetImageMetaFromInput(ctx, localRepo, referenceDigest.String(), referrer.MediaType,
|
||||
referenceDigest, referenceBuf, ref.storeController.GetImageStore(localRepo),
|
||||
ref.metaDB, ref.log)
|
||||
if err != nil {
|
||||
|
||||
@@ -154,7 +154,8 @@ func (ref ORASReferences) SyncReferences(ctx context.Context, localRepo, remoteR
|
||||
ref.log.Debug().Str("repository", localRepo).Str("subject", subjectDigestStr).
|
||||
Msg("metaDB: trying to sync oras artifact for image")
|
||||
|
||||
err := meta.SetImageMetaFromInput(localRepo, referenceDigest.String(), referrer.MediaType,
|
||||
err := meta.SetImageMetaFromInput(context.Background(), localRepo, //nolint:contextcheck
|
||||
referenceDigest.String(), referrer.MediaType,
|
||||
referenceDigest, orasBuf, ref.storeController.GetImageStore(localRepo),
|
||||
ref.metaDB, ref.log)
|
||||
if err != nil {
|
||||
|
||||
@@ -113,7 +113,7 @@ func (ref TagReferences) SyncReferences(ctx context.Context, localRepo, remoteRe
|
||||
ref.log.Debug().Str("repository", localRepo).Str("subject", subjectDigestStr).
|
||||
Msg("metaDB: trying to add oci references for image")
|
||||
|
||||
err = meta.SetImageMetaFromInput(localRepo, referenceDigest.String(), referrer.MediaType,
|
||||
err = meta.SetImageMetaFromInput(ctx, localRepo, referenceDigest.String(), referrer.MediaType,
|
||||
referenceDigest, referenceBuf, ref.storeController.GetImageStore(localRepo),
|
||||
ref.metaDB, ref.log)
|
||||
if err != nil {
|
||||
|
||||
@@ -337,7 +337,7 @@ func TestLocalRegistry(t *testing.T) {
|
||||
|
||||
Convey("trigger metaDB error on index manifest in CommitImage()", func() {
|
||||
registry := NewLocalRegistry(storage.StoreController{DefaultStore: syncImgStore}, mocks.MetaDBMock{
|
||||
SetRepoReferenceFn: func(repo string, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
SetRepoReferenceFn: func(ctx context.Context, repo string, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
if reference == "1.0" {
|
||||
return zerr.ErrRepoMetaNotFound
|
||||
}
|
||||
@@ -352,7 +352,7 @@ func TestLocalRegistry(t *testing.T) {
|
||||
|
||||
Convey("trigger metaDB error on image manifest in CommitImage()", func() {
|
||||
registry := NewLocalRegistry(storage.StoreController{DefaultStore: syncImgStore}, mocks.MetaDBMock{
|
||||
SetRepoReferenceFn: func(repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
SetRepoReferenceFn: func(ctx context.Context, repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
return zerr.ErrRepoMetaNotFound
|
||||
},
|
||||
}, log)
|
||||
|
||||
@@ -877,7 +877,7 @@ func TestOnDemand(t *testing.T) {
|
||||
|
||||
return nil
|
||||
},
|
||||
SetRepoReferenceFn: func(repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
SetRepoReferenceFn: func(ctx context.Context, repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
if strings.HasPrefix(reference, "sha256-") &&
|
||||
(strings.HasSuffix(reference, remote.SignatureTagSuffix) ||
|
||||
strings.HasSuffix(reference, remote.SBOMTagSuffix)) ||
|
||||
@@ -1017,7 +1017,7 @@ func TestOnDemand(t *testing.T) {
|
||||
|
||||
// metadb fails for syncReferrersTag"
|
||||
dctlr.MetaDB = mocks.MetaDBMock{
|
||||
SetRepoReferenceFn: func(repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
SetRepoReferenceFn: func(ctx context.Context, repo, reference string, imageMeta mTypes.ImageMeta) error {
|
||||
if imageMeta.Digest.String() == ociRefImage.ManifestDescriptor.Digest.String() {
|
||||
return sync.ErrTestError
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user