mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 12:28:01 +08:00
bcdd9988f5
1. Only scan CVEs for images returned by graphql calls Since pagination was refactored to account for image indexes, we had started to run the CVE scanner before pagination was applied, resulting in decreased ZOT performance if CVE information was requested 2. Increase in medory-cache of cve results to 1m, from 10k digests. 3. Update CVE model to use CVSS severity values in our code. Previously we relied upon the strings returned by trivy directly, and the sorting they implemented. Since CVE severities are standardized, we don't need to pass around an adapter object just for pagination and sorting purposes anymore. This also improves our testing since we don't mock the sorting functions anymore. 4. Fix a flaky CLI test not waiting for the zot service to start. 5. Add the search build label on search/cve tests which were missing it. 6. The boltdb update method was used in a few places where view was supposed to be called. 7. Add logs for start and finish of parsing MetaDB. 8. Avoid unmarshalling twice to obtain annotations for multiarch images. Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
114 lines
3.3 KiB
Go
114 lines
3.3 KiB
Go
package mocks
|
|
|
|
import (
|
|
"zotregistry.io/zot/pkg/common"
|
|
cvemodel "zotregistry.io/zot/pkg/extensions/search/cve/model"
|
|
)
|
|
|
|
type CveInfoMock struct {
|
|
GetImageListForCVEFn func(repo, cveID string) ([]cvemodel.TagInfo, error)
|
|
GetImageListWithCVEFixedFn func(repo, cveID string) ([]cvemodel.TagInfo, error)
|
|
GetCVEListForImageFn func(repo string, reference string, searchedCVE string, pageInput cvemodel.PageInput,
|
|
) ([]cvemodel.CVE, common.PageInfo, error)
|
|
GetCVESummaryForImageFn func(repo string, reference string,
|
|
) (cvemodel.ImageCVESummary, error)
|
|
GetCVESummaryForImageMediaFn func(repo string, digest, mediaType string,
|
|
) (cvemodel.ImageCVESummary, error)
|
|
UpdateDBFn func() error
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) GetImageListForCVE(repo, cveID string) ([]cvemodel.TagInfo, error) {
|
|
if cveInfo.GetImageListForCVEFn != nil {
|
|
return cveInfo.GetImageListForCVEFn(repo, cveID)
|
|
}
|
|
|
|
return []cvemodel.TagInfo{}, nil
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) GetImageListWithCVEFixed(repo, cveID string) ([]cvemodel.TagInfo, error) {
|
|
if cveInfo.GetImageListWithCVEFixedFn != nil {
|
|
return cveInfo.GetImageListWithCVEFixedFn(repo, cveID)
|
|
}
|
|
|
|
return []cvemodel.TagInfo{}, nil
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) GetCVEListForImage(repo string, reference string,
|
|
searchedCVE string, pageInput cvemodel.PageInput,
|
|
) (
|
|
[]cvemodel.CVE,
|
|
common.PageInfo,
|
|
error,
|
|
) {
|
|
if cveInfo.GetCVEListForImageFn != nil {
|
|
return cveInfo.GetCVEListForImageFn(repo, reference, searchedCVE, pageInput)
|
|
}
|
|
|
|
return []cvemodel.CVE{}, common.PageInfo{}, nil
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) GetCVESummaryForImage(repo string, reference string,
|
|
) (cvemodel.ImageCVESummary, error) {
|
|
if cveInfo.GetCVESummaryForImageFn != nil {
|
|
return cveInfo.GetCVESummaryForImageFn(repo, reference)
|
|
}
|
|
|
|
return cvemodel.ImageCVESummary{}, nil
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) GetCVESummaryForImageMedia(repo, digest, mediaType string,
|
|
) (cvemodel.ImageCVESummary, error) {
|
|
if cveInfo.GetCVESummaryForImageMediaFn != nil {
|
|
return cveInfo.GetCVESummaryForImageMediaFn(repo, digest, mediaType)
|
|
}
|
|
|
|
return cvemodel.ImageCVESummary{}, nil
|
|
}
|
|
|
|
func (cveInfo CveInfoMock) UpdateDB() error {
|
|
if cveInfo.UpdateDBFn != nil {
|
|
return cveInfo.UpdateDBFn()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type CveScannerMock struct {
|
|
IsImageFormatScannableFn func(repo string, reference string) (bool, error)
|
|
IsImageMediaScannableFn func(repo string, digest, mediaType string) (bool, error)
|
|
ScanImageFn func(image string) (map[string]cvemodel.CVE, error)
|
|
UpdateDBFn func() error
|
|
}
|
|
|
|
func (scanner CveScannerMock) IsImageFormatScannable(repo string, reference string) (bool, error) {
|
|
if scanner.IsImageFormatScannableFn != nil {
|
|
return scanner.IsImageFormatScannableFn(repo, reference)
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
func (scanner CveScannerMock) IsImageMediaScannable(repo string, digest, mediaType string) (bool, error) {
|
|
if scanner.IsImageMediaScannableFn != nil {
|
|
return scanner.IsImageMediaScannableFn(repo, digest, mediaType)
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
func (scanner CveScannerMock) ScanImage(image string) (map[string]cvemodel.CVE, error) {
|
|
if scanner.ScanImageFn != nil {
|
|
return scanner.ScanImageFn(image)
|
|
}
|
|
|
|
return map[string]cvemodel.CVE{}, nil
|
|
}
|
|
|
|
func (scanner CveScannerMock) UpdateDB() error {
|
|
if scanner.UpdateDBFn != nil {
|
|
return scanner.UpdateDBFn()
|
|
}
|
|
|
|
return nil
|
|
}
|