mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 20:38:08 +08:00
refactor(digests): standardise representation of digests to digest.Digest (#898)
- Digests were represented by different ways
- We needed a uniform way to represent the digests and enforce a format
- also replace usage of github.com/google/go-containerregistry/pkg/v1
with github.com/opencontainers/image-spec/specs-go/v1
Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
(cherry picked from commit 96b2f29d6d57070a913ce419149cd481c0723815)
(cherry picked from commit 3d41b583daea654c98378ce3dcb78937d71538e8)
Co-authored-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
This commit is contained in:
@@ -11,7 +11,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/opencontainers/go-digest"
|
||||
godigest "github.com/opencontainers/go-digest"
|
||||
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
|
||||
@@ -267,7 +267,7 @@ func TestUploadImage(t *testing.T) {
|
||||
test.WaitTillServerReady(baseURL)
|
||||
|
||||
layerBlob := []byte("test")
|
||||
layerBlobDigest := digest.FromBytes(layerBlob)
|
||||
layerBlobDigest := godigest.FromBytes(layerBlob)
|
||||
layerPath := path.Join(tempDir, "test", "blobs", "sha256")
|
||||
|
||||
if _, err := os.Stat(layerPath); os.IsNotExist(err) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"io"
|
||||
"time"
|
||||
|
||||
"github.com/opencontainers/go-digest"
|
||||
godigest "github.com/opencontainers/go-digest"
|
||||
artifactspec "github.com/oras-project/artifacts-spec/specs-go/v1"
|
||||
|
||||
"zotregistry.io/zot/pkg/scheduler"
|
||||
@@ -18,8 +18,8 @@ type MockedImageStore struct {
|
||||
GetRepositoriesFn func() ([]string, error)
|
||||
GetNextRepositoryFn func(repo string) (string, error)
|
||||
GetImageTagsFn func(repo string) ([]string, error)
|
||||
GetImageManifestFn func(repo string, reference string) ([]byte, string, string, error)
|
||||
PutImageManifestFn func(repo string, reference string, mediaType string, body []byte) (string, error)
|
||||
GetImageManifestFn func(repo string, reference string) ([]byte, godigest.Digest, string, error)
|
||||
PutImageManifestFn func(repo string, reference string, mediaType string, body []byte) (godigest.Digest, error)
|
||||
DeleteImageManifestFn func(repo string, reference string) error
|
||||
BlobUploadPathFn func(repo string, uuid string) string
|
||||
NewBlobUploadFn func(repo string) (string, error)
|
||||
@@ -27,19 +27,19 @@ type MockedImageStore struct {
|
||||
BlobUploadInfoFn func(repo string, uuid string) (int64, error)
|
||||
PutBlobChunkStreamedFn func(repo string, uuid string, body io.Reader) (int64, error)
|
||||
PutBlobChunkFn func(repo string, uuid string, from int64, to int64, body io.Reader) (int64, error)
|
||||
FinishBlobUploadFn func(repo string, uuid string, body io.Reader, digest string) error
|
||||
FullBlobUploadFn func(repo string, body io.Reader, digest string) (string, int64, error)
|
||||
DedupeBlobFn func(src string, dstDigest digest.Digest, dst string) error
|
||||
FinishBlobUploadFn func(repo string, uuid string, body io.Reader, digest godigest.Digest) error
|
||||
FullBlobUploadFn func(repo string, body io.Reader, digest godigest.Digest) (string, int64, error)
|
||||
DedupeBlobFn func(src string, dstDigest godigest.Digest, dst string) error
|
||||
DeleteBlobUploadFn func(repo string, uuid string) error
|
||||
BlobPathFn func(repo string, digest digest.Digest) string
|
||||
CheckBlobFn func(repo string, digest string) (bool, int64, error)
|
||||
GetBlobPartialFn func(repo string, digest string, mediaType string, from, to int64,
|
||||
BlobPathFn func(repo string, digest godigest.Digest) string
|
||||
CheckBlobFn func(repo string, digest godigest.Digest) (bool, int64, error)
|
||||
GetBlobPartialFn func(repo string, digest godigest.Digest, mediaType string, from, to int64,
|
||||
) (io.ReadCloser, int64, int64, error)
|
||||
GetBlobFn func(repo string, digest string, mediaType string) (io.ReadCloser, int64, error)
|
||||
DeleteBlobFn func(repo string, digest string) error
|
||||
GetBlobFn func(repo string, digest godigest.Digest, mediaType string) (io.ReadCloser, int64, error)
|
||||
DeleteBlobFn func(repo string, digest godigest.Digest) error
|
||||
GetIndexContentFn func(repo string) ([]byte, error)
|
||||
GetBlobContentFn func(repo, digest string) ([]byte, error)
|
||||
GetReferrersFn func(repo, digest string, mediaType string) ([]artifactspec.Descriptor, error)
|
||||
GetBlobContentFn func(repo string, digest godigest.Digest) ([]byte, error)
|
||||
GetReferrersFn func(repo string, digest godigest.Digest, mediaType string) ([]artifactspec.Descriptor, error)
|
||||
URLForPathFn func(path string) (string, error)
|
||||
RunGCRepoFn func(repo string) error
|
||||
RunGCPeriodicallyFn func(interval time.Duration, sch *scheduler.Scheduler)
|
||||
@@ -105,7 +105,7 @@ func (is MockedImageStore) GetNextRepository(repo string) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) GetImageManifest(repo string, reference string) ([]byte, string, string, error) {
|
||||
func (is MockedImageStore) GetImageManifest(repo string, reference string) ([]byte, godigest.Digest, string, error) {
|
||||
if is.GetImageManifestFn != nil {
|
||||
return is.GetImageManifestFn(repo, reference)
|
||||
}
|
||||
@@ -118,7 +118,7 @@ func (is MockedImageStore) PutImageManifest(
|
||||
reference string,
|
||||
mediaType string,
|
||||
body []byte,
|
||||
) (string, error) {
|
||||
) (godigest.Digest, error) {
|
||||
if is.PutImageManifestFn != nil {
|
||||
return is.PutImageManifestFn(repo, reference, mediaType, body)
|
||||
}
|
||||
@@ -196,7 +196,7 @@ func (is MockedImageStore) PutBlobChunk(
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) FinishBlobUpload(repo string, uuid string, body io.Reader, digest string) error {
|
||||
func (is MockedImageStore) FinishBlobUpload(repo string, uuid string, body io.Reader, digest godigest.Digest) error {
|
||||
if is.FinishBlobUploadFn != nil {
|
||||
return is.FinishBlobUploadFn(repo, uuid, body, digest)
|
||||
}
|
||||
@@ -204,7 +204,7 @@ func (is MockedImageStore) FinishBlobUpload(repo string, uuid string, body io.Re
|
||||
return nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) FullBlobUpload(repo string, body io.Reader, digest string) (string, int64, error) {
|
||||
func (is MockedImageStore) FullBlobUpload(repo string, body io.Reader, digest godigest.Digest) (string, int64, error) {
|
||||
if is.FullBlobUploadFn != nil {
|
||||
return is.FullBlobUploadFn(repo, body, digest)
|
||||
}
|
||||
@@ -212,7 +212,7 @@ func (is MockedImageStore) FullBlobUpload(repo string, body io.Reader, digest st
|
||||
return "", 0, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) DedupeBlob(src string, dstDigest digest.Digest, dst string) error {
|
||||
func (is MockedImageStore) DedupeBlob(src string, dstDigest godigest.Digest, dst string) error {
|
||||
if is.DedupeBlobFn != nil {
|
||||
return is.DedupeBlobFn(src, dstDigest, dst)
|
||||
}
|
||||
@@ -220,7 +220,7 @@ func (is MockedImageStore) DedupeBlob(src string, dstDigest digest.Digest, dst s
|
||||
return nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) DeleteBlob(repo string, digest string) error {
|
||||
func (is MockedImageStore) DeleteBlob(repo string, digest godigest.Digest) error {
|
||||
if is.DeleteBlobFn != nil {
|
||||
return is.DeleteBlobFn(repo, digest)
|
||||
}
|
||||
@@ -228,7 +228,7 @@ func (is MockedImageStore) DeleteBlob(repo string, digest string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) BlobPath(repo string, digest digest.Digest) string {
|
||||
func (is MockedImageStore) BlobPath(repo string, digest godigest.Digest) string {
|
||||
if is.BlobPathFn != nil {
|
||||
return is.BlobPathFn(repo, digest)
|
||||
}
|
||||
@@ -236,7 +236,7 @@ func (is MockedImageStore) BlobPath(repo string, digest digest.Digest) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (is MockedImageStore) CheckBlob(repo string, digest string) (bool, int64, error) {
|
||||
func (is MockedImageStore) CheckBlob(repo string, digest godigest.Digest) (bool, int64, error) {
|
||||
if is.CheckBlobFn != nil {
|
||||
return is.CheckBlobFn(repo, digest)
|
||||
}
|
||||
@@ -244,7 +244,7 @@ func (is MockedImageStore) CheckBlob(repo string, digest string) (bool, int64, e
|
||||
return true, 0, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) GetBlobPartial(repo string, digest string, mediaType string, from, to int64,
|
||||
func (is MockedImageStore) GetBlobPartial(repo string, digest godigest.Digest, mediaType string, from, to int64,
|
||||
) (io.ReadCloser, int64, int64, error) {
|
||||
if is.GetBlobPartialFn != nil {
|
||||
return is.GetBlobPartialFn(repo, digest, mediaType, from, to)
|
||||
@@ -253,7 +253,8 @@ func (is MockedImageStore) GetBlobPartial(repo string, digest string, mediaType
|
||||
return io.NopCloser(&io.LimitedReader{}), 0, 0, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) GetBlob(repo string, digest string, mediaType string) (io.ReadCloser, int64, error) {
|
||||
func (is MockedImageStore) GetBlob(repo string, digest godigest.Digest, mediaType string,
|
||||
) (io.ReadCloser, int64, error) {
|
||||
if is.GetBlobFn != nil {
|
||||
return is.GetBlobFn(repo, digest, mediaType)
|
||||
}
|
||||
@@ -261,9 +262,9 @@ func (is MockedImageStore) GetBlob(repo string, digest string, mediaType string)
|
||||
return io.NopCloser(&io.LimitedReader{}), 0, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) DeleteBlobUpload(repo string, digest string) error {
|
||||
func (is MockedImageStore) DeleteBlobUpload(repo string, uuid string) error {
|
||||
if is.DeleteBlobUploadFn != nil {
|
||||
return is.DeleteBlobUploadFn(repo, digest)
|
||||
return is.DeleteBlobUploadFn(repo, uuid)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -277,7 +278,7 @@ func (is MockedImageStore) GetIndexContent(repo string) ([]byte, error) {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
func (is MockedImageStore) GetBlobContent(repo string, digest string) ([]byte, error) {
|
||||
func (is MockedImageStore) GetBlobContent(repo string, digest godigest.Digest) ([]byte, error) {
|
||||
if is.GetBlobContentFn != nil {
|
||||
return is.GetBlobContentFn(repo, digest)
|
||||
}
|
||||
@@ -287,7 +288,7 @@ func (is MockedImageStore) GetBlobContent(repo string, digest string) ([]byte, e
|
||||
|
||||
func (is MockedImageStore) GetReferrers(
|
||||
repo string,
|
||||
digest string,
|
||||
digest godigest.Digest,
|
||||
mediaType string,
|
||||
) ([]artifactspec.Descriptor, error) {
|
||||
if is.GetReferrersFn != nil {
|
||||
|
||||
+13
-13
@@ -1,7 +1,6 @@
|
||||
package mocks
|
||||
|
||||
import (
|
||||
v1 "github.com/google/go-containerregistry/pkg/v1"
|
||||
godigest "github.com/opencontainers/go-digest"
|
||||
ispec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
|
||||
@@ -9,10 +8,10 @@ import (
|
||||
)
|
||||
|
||||
type OciLayoutUtilsMock struct {
|
||||
GetImageManifestFn func(repo string, reference string) (ispec.Manifest, string, error)
|
||||
GetImageManifestsFn func(image string) ([]ispec.Descriptor, error)
|
||||
GetImageBlobManifestFn func(imageDir string, digest godigest.Digest) (v1.Manifest, error)
|
||||
GetImageInfoFn func(imageDir string, hash v1.Hash) (ispec.Image, error)
|
||||
GetImageManifestFn func(repo string, reference string) (ispec.Manifest, godigest.Digest, error)
|
||||
GetImageManifestsFn func(repo string) ([]ispec.Descriptor, error)
|
||||
GetImageBlobManifestFn func(repo string, digest godigest.Digest) (ispec.Manifest, error)
|
||||
GetImageInfoFn func(repo string, digest godigest.Digest) (ispec.Image, error)
|
||||
GetImageTagsWithTimestampFn func(repo string) ([]common.TagInfo, error)
|
||||
GetImagePlatformFn func(imageInfo ispec.Image) (string, string)
|
||||
GetImageVendorFn func(imageInfo ispec.Image) string
|
||||
@@ -25,7 +24,8 @@ type OciLayoutUtilsMock struct {
|
||||
GetRepositoriesFn func() ([]string, error)
|
||||
}
|
||||
|
||||
func (olum OciLayoutUtilsMock) GetImageManifest(repo string, reference string) (ispec.Manifest, string, error) {
|
||||
func (olum OciLayoutUtilsMock) GetImageManifest(repo string, reference string,
|
||||
) (ispec.Manifest, godigest.Digest, error) {
|
||||
if olum.GetImageManifestFn != nil {
|
||||
return olum.GetImageManifestFn(repo, reference)
|
||||
}
|
||||
@@ -41,25 +41,25 @@ func (olum OciLayoutUtilsMock) GetRepositories() ([]string, error) {
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
func (olum OciLayoutUtilsMock) GetImageManifests(image string) ([]ispec.Descriptor, error) {
|
||||
func (olum OciLayoutUtilsMock) GetImageManifests(repo string) ([]ispec.Descriptor, error) {
|
||||
if olum.GetImageManifestsFn != nil {
|
||||
return olum.GetImageManifestsFn(image)
|
||||
return olum.GetImageManifestsFn(repo)
|
||||
}
|
||||
|
||||
return []ispec.Descriptor{}, nil
|
||||
}
|
||||
|
||||
func (olum OciLayoutUtilsMock) GetImageBlobManifest(imageDir string, digest godigest.Digest) (v1.Manifest, error) {
|
||||
func (olum OciLayoutUtilsMock) GetImageBlobManifest(repo string, digest godigest.Digest) (ispec.Manifest, error) {
|
||||
if olum.GetImageBlobManifestFn != nil {
|
||||
return olum.GetImageBlobManifestFn(imageDir, digest)
|
||||
return olum.GetImageBlobManifestFn(repo, digest)
|
||||
}
|
||||
|
||||
return v1.Manifest{}, nil
|
||||
return ispec.Manifest{}, nil
|
||||
}
|
||||
|
||||
func (olum OciLayoutUtilsMock) GetImageInfo(imageDir string, hash v1.Hash) (ispec.Image, error) {
|
||||
func (olum OciLayoutUtilsMock) GetImageInfo(repo string, digest godigest.Digest) (ispec.Image, error) {
|
||||
if olum.GetImageInfoFn != nil {
|
||||
return olum.GetImageInfoFn(imageDir, hash)
|
||||
return olum.GetImageInfoFn(repo, digest)
|
||||
}
|
||||
|
||||
return ispec.Image{}, nil
|
||||
|
||||
Reference in New Issue
Block a user