mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 04:17:55 +08:00
refactor(scrub): replace umoci logic in scrub implementation (#1845)
- implement scrub also for S3 storage by replacing umoci - change scrub implementation for ImageIndex - take the `Subject` into consideration when running scrub - remove test code relying on the umoci library. Since we started relying on images in test/data, and we create our own images using go code we can obtain digests by other means. (cherry picked from commit 489d4e2d23c1b4e48799283f8281024bbef6123f) Signed-off-by: Andrei Aaron <aaaron@luxoft.com> Signed-off-by: Andreea-Lupu <andreealupu1470@yahoo.com>
This commit is contained in:
@@ -28,25 +28,19 @@ func EnableScrubExtension(config *config.Config, log log.Logger, storeController
|
||||
log.Warn().Msg("Scrub interval set to too-short interval < 2h, changing scrub duration to 2 hours and continuing.") //nolint:lll // gofumpt conflicts with lll
|
||||
}
|
||||
|
||||
// is local imagestore (because of umoci dependency which works only locally)
|
||||
if config.Storage.StorageDriver == nil {
|
||||
generator := &taskGenerator{
|
||||
imgStore: storeController.DefaultStore,
|
||||
log: log,
|
||||
}
|
||||
sch.SubmitGenerator(generator, config.Extensions.Scrub.Interval, scheduler.LowPriority)
|
||||
generator := &taskGenerator{
|
||||
imgStore: storeController.DefaultStore,
|
||||
log: log,
|
||||
}
|
||||
sch.SubmitGenerator(generator, config.Extensions.Scrub.Interval, scheduler.LowPriority)
|
||||
|
||||
if config.Storage.SubPaths != nil {
|
||||
for route := range config.Storage.SubPaths {
|
||||
// is local imagestore (because of umoci dependency which works only locally)
|
||||
if config.Storage.SubPaths[route].StorageDriver == nil {
|
||||
generator := &taskGenerator{
|
||||
imgStore: storeController.SubStore[route],
|
||||
log: log,
|
||||
}
|
||||
sch.SubmitGenerator(generator, config.Extensions.Scrub.Interval, scheduler.LowPriority)
|
||||
generator := &taskGenerator{
|
||||
imgStore: storeController.SubStore[route],
|
||||
log: log,
|
||||
}
|
||||
sch.SubmitGenerator(generator, config.Extensions.Scrub.Interval, scheduler.LowPriority)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -39,6 +39,7 @@ func RunScrubRepo(ctx context.Context, imgStore storageTypes.ImageStore, repo st
|
||||
Str("image", result.ImageName).
|
||||
Str("tag", result.Tag).
|
||||
Str("status", result.Status).
|
||||
Str("affected blob", result.AffectedBlob).
|
||||
Str("error", result.Error).
|
||||
Msg("scrub: blobs/manifest affected")
|
||||
}
|
||||
|
||||
@@ -381,19 +381,21 @@ func TestRepoListWithNewestImage(t *testing.T) {
|
||||
ctlrManager.StartAndWait(port)
|
||||
defer ctlrManager.StopServer()
|
||||
|
||||
config, layers, manifest, err := GetImageComponents(100)
|
||||
config, layers, _, err := GetImageComponents(100)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "zot-cve-test", "0.0.1")
|
||||
uploadedImage := CreateImageWith().LayerBlobs(layers).ImageConfig(config).Build()
|
||||
|
||||
err = UploadImage(uploadedImage, baseURL, "zot-cve-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "a/zot-cve-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "a/zot-cve-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "zot-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "zot-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "a/zot-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "a/zot-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
resp, err := resty.R().Get(baseURL + "/v2/")
|
||||
@@ -590,9 +592,8 @@ func TestRepoListWithNewestImage(t *testing.T) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
var manifestDigest godigest.Digest
|
||||
var configDigest godigest.Digest
|
||||
manifestDigest, configDigest, _ = GetOciLayoutDigests(path.Join(subRootDir, "a/zot-test"))
|
||||
manifestDigest := uploadedImage.ManifestDescriptor.Digest
|
||||
configDigest := uploadedImage.ConfigDescriptor.Digest
|
||||
|
||||
// Delete config blob and try.
|
||||
err = os.Remove(path.Join(subRootDir, "a/zot-test/blobs/sha256", configDigest.Encoded()))
|
||||
@@ -1269,22 +1270,25 @@ func TestExpandedRepoInfo(t *testing.T) {
|
||||
ctlrManager.StartAndWait(port)
|
||||
defer ctlrManager.StopServer()
|
||||
|
||||
config, layers, manifest, err := GetImageComponents(100)
|
||||
config, layers, _, err := GetImageComponents(100)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
manifest.Annotations = make(map[string]string)
|
||||
manifest.Annotations["org.opencontainers.image.vendor"] = "zot"
|
||||
annotations := make(map[string]string)
|
||||
annotations["org.opencontainers.image.vendor"] = "zot"
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "zot-cve-test", "0.0.1")
|
||||
uploadedImage := CreateImageWith().LayerBlobs(layers).ImageConfig(config).
|
||||
Annotations(annotations).Build()
|
||||
|
||||
err = UploadImage(uploadedImage, baseURL, "zot-cve-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "a/zot-cve-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "a/zot-cve-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "zot-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "zot-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = UploadImage(Image{Manifest: manifest, Config: config, Layers: layers}, baseURL, "a/zot-test", "0.0.1")
|
||||
err = UploadImage(uploadedImage, baseURL, "a/zot-test", "0.0.1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
log := log.NewLogger("debug", "")
|
||||
@@ -1455,8 +1459,7 @@ func TestExpandedRepoInfo(t *testing.T) {
|
||||
}
|
||||
So(found, ShouldEqual, true)
|
||||
|
||||
var manifestDigest godigest.Digest
|
||||
manifestDigest, _, _ = GetOciLayoutDigests(path.Join(rootDir, "zot-test"))
|
||||
manifestDigest := uploadedImage.ManifestDescriptor.Digest
|
||||
|
||||
err = os.Remove(path.Join(rootDir, "zot-test/blobs/sha256", manifestDigest.Encoded()))
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
Reference in New Issue
Block a user