mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 04:17:55 +08:00
feat(repodb): sync-repodb WIP (#1241)
Signed-off-by: Laurentiu Niculae <niculae.laurentiu1@gmail.com>
This commit is contained in:
@@ -79,7 +79,7 @@ func NewBoltDBWrapper(params DBParameters) (*DBWrapper, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestData repodb.ManifestData) error {
|
||||
func (bdw *DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestData repodb.ManifestData) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
buck := tx.Bucket([]byte(repodb.ManifestDataBucket))
|
||||
|
||||
@@ -99,7 +99,7 @@ func (bdw DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestDat
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.ManifestData, error) {
|
||||
func (bdw *DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.ManifestData, error) {
|
||||
var manifestData repodb.ManifestData
|
||||
|
||||
err := bdw.DB.View(func(tx *bolt.Tx) error {
|
||||
@@ -122,7 +122,7 @@ func (bdw DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.Man
|
||||
return manifestData, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest, manifestMeta repodb.ManifestMetadata,
|
||||
func (bdw *DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest, manifestMeta repodb.ManifestMetadata,
|
||||
) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
dataBuck := tx.Bucket([]byte(repodb.ManifestDataBucket))
|
||||
@@ -169,7 +169,7 @@ func (bdw DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest) (repodb.ManifestMetadata, error) {
|
||||
func (bdw *DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest) (repodb.ManifestMetadata, error) {
|
||||
var manifestMetadata repodb.ManifestMetadata
|
||||
|
||||
err := bdw.DB.View(func(tx *bolt.Tx) error {
|
||||
@@ -214,7 +214,7 @@ func (bdw DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest
|
||||
return manifestMetadata, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SetIndexData(indexDigest godigest.Digest, indexMetadata repodb.IndexData) error {
|
||||
func (bdw *DBWrapper) SetIndexData(indexDigest godigest.Digest, indexMetadata repodb.IndexData) error {
|
||||
// we make the assumption that the oci layout is consistent and all manifests refferenced inside the
|
||||
// index are present
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
@@ -236,7 +236,7 @@ func (bdw DBWrapper) SetIndexData(indexDigest godigest.Digest, indexMetadata rep
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData, error) {
|
||||
func (bdw *DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData, error) {
|
||||
var indexMetadata repodb.IndexData
|
||||
|
||||
err := bdw.DB.View(func(tx *bolt.Tx) error {
|
||||
@@ -259,10 +259,10 @@ func (bdw DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData
|
||||
return indexMetadata, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest.Digest,
|
||||
func (bdw *DBWrapper) SetRepoReference(repo string, reference string, manifestDigest godigest.Digest,
|
||||
mediaType string,
|
||||
) error {
|
||||
if err := common.ValidateRepoTagInput(repo, tag, manifestDigest); err != nil {
|
||||
if err := common.ValidateRepoReferenceInput(repo, reference, manifestDigest); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -273,29 +273,17 @@ func (bdw DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest
|
||||
|
||||
// object not found
|
||||
if len(repoMetaBlob) == 0 {
|
||||
// create a new object
|
||||
repoMeta := repodb.RepoMetadata{
|
||||
Name: repo,
|
||||
Tags: map[string]repodb.Descriptor{
|
||||
tag: {
|
||||
Digest: manifestDigest.String(),
|
||||
MediaType: mediaType,
|
||||
},
|
||||
},
|
||||
Statistics: map[string]repodb.DescriptorStatistics{
|
||||
manifestDigest.String(): {DownloadCount: 0},
|
||||
},
|
||||
Signatures: map[string]repodb.ManifestSignatures{
|
||||
manifestDigest.String(): {},
|
||||
},
|
||||
}
|
||||
var err error
|
||||
|
||||
repoMetaBlob, err := json.Marshal(repoMeta)
|
||||
repoMetaBlob, err = json.Marshal(repodb.RepoMetadata{
|
||||
Name: repo,
|
||||
Tags: map[string]repodb.Descriptor{},
|
||||
Statistics: map[string]repodb.DescriptorStatistics{},
|
||||
Signatures: map[string]repodb.ManifestSignatures{},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return buck.Put([]byte(repo), repoMetaBlob)
|
||||
}
|
||||
|
||||
// object found
|
||||
@@ -306,11 +294,16 @@ func (bdw DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest
|
||||
return err
|
||||
}
|
||||
|
||||
repoMeta.Tags[tag] = repodb.Descriptor{
|
||||
Digest: manifestDigest.String(),
|
||||
MediaType: mediaType,
|
||||
if !common.ReferenceIsDigest(reference) {
|
||||
repoMeta.Tags[reference] = repodb.Descriptor{
|
||||
Digest: manifestDigest.String(),
|
||||
MediaType: mediaType,
|
||||
}
|
||||
}
|
||||
|
||||
repoMeta.Statistics[manifestDigest.String()] = repodb.DescriptorStatistics{DownloadCount: 0}
|
||||
repoMeta.Signatures[manifestDigest.String()] = repodb.ManifestSignatures{}
|
||||
|
||||
repoMetaBlob, err = json.Marshal(repoMeta)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -322,7 +315,7 @@ func (bdw DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
func (bdw *DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
var repoMeta repodb.RepoMetadata
|
||||
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
@@ -347,7 +340,7 @@ func (bdw DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
return repoMeta, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
func (bdw *DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
buck := tx.Bucket([]byte(repodb.RepoMetadataBucket))
|
||||
|
||||
@@ -383,7 +376,7 @@ func (bdw DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) IncrementRepoStars(repo string) error {
|
||||
func (bdw *DBWrapper) IncrementRepoStars(repo string) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
buck := tx.Bucket([]byte(repodb.RepoMetadataBucket))
|
||||
|
||||
@@ -412,7 +405,7 @@ func (bdw DBWrapper) IncrementRepoStars(repo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) DecrementRepoStars(repo string) error {
|
||||
func (bdw *DBWrapper) DecrementRepoStars(repo string) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
buck := tx.Bucket([]byte(repodb.RepoMetadataBucket))
|
||||
|
||||
@@ -443,7 +436,7 @@ func (bdw DBWrapper) DecrementRepoStars(repo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
func (bdw *DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
stars := 0
|
||||
|
||||
err := bdw.DB.View(func(tx *bolt.Tx) error {
|
||||
@@ -470,7 +463,7 @@ func (bdw DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
return stars, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) GetMultipleRepoMeta(ctx context.Context, filter func(repoMeta repodb.RepoMetadata) bool,
|
||||
func (bdw *DBWrapper) GetMultipleRepoMeta(ctx context.Context, filter func(repoMeta repodb.RepoMetadata) bool,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, error) {
|
||||
var (
|
||||
@@ -515,7 +508,7 @@ func (bdw DBWrapper) GetMultipleRepoMeta(ctx context.Context, filter func(repoMe
|
||||
return foundRepos, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) IncrementImageDownloads(repo string, reference string) error {
|
||||
func (bdw *DBWrapper) IncrementImageDownloads(repo string, reference string) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
buck := tx.Bucket([]byte(repodb.RepoMetadataBucket))
|
||||
|
||||
@@ -559,7 +552,7 @@ func (bdw DBWrapper) IncrementImageDownloads(repo string, reference string) erro
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) AddManifestSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
func (bdw *DBWrapper) AddManifestSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
sygMeta repodb.SignatureMetadata,
|
||||
) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
@@ -616,7 +609,7 @@ func (bdw DBWrapper) AddManifestSignature(repo string, signedManifestDigest godi
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
func (bdw *DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
sigMeta repodb.SignatureMetadata,
|
||||
) error {
|
||||
err := bdw.DB.Update(func(tx *bolt.Tx) error {
|
||||
@@ -670,7 +663,7 @@ func (bdw DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.
|
||||
return err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SearchRepos(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
func (bdw *DBWrapper) SearchRepos(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData, repodb.PageInfo,
|
||||
error,
|
||||
@@ -1020,7 +1013,7 @@ func NewManifestMetadata(manifestDigest string, repoMeta repodb.RepoMetadata,
|
||||
return manifestMeta
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
func (bdw *DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData,
|
||||
repodb.PageInfo, error,
|
||||
@@ -1179,7 +1172,7 @@ func (bdw DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
return foundRepos, foundManifestMetadataMap, foundindexDataMap, pageInfo, err
|
||||
}
|
||||
|
||||
func (bdw DBWrapper) SearchTags(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
func (bdw *DBWrapper) SearchTags(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData, repodb.PageInfo, error) {
|
||||
var (
|
||||
|
||||
@@ -70,7 +70,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
|
||||
Convey("SetRepoTag", func() {
|
||||
Convey("SetRepoReference", func() {
|
||||
err := boltdbWrapper.DB.Update(func(tx *bbolt.Tx) error {
|
||||
repoBuck := tx.Bucket([]byte(repodb.RepoMetadataBucket))
|
||||
|
||||
@@ -78,7 +78,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = boltdbWrapper.SetRepoTag("repo1", "tag", "digest", ispec.MediaTypeImageManifest)
|
||||
err = boltdbWrapper.SetRepoReference("repo1", "tag", "digest", ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
|
||||
@@ -388,7 +388,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("Bad index data", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadIndexData(boltdbWrapper.DB, indexDigest.String())
|
||||
@@ -404,7 +404,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("Bad indexBlob in IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = boltdbWrapper.SetIndexData(indexDigest, repodb.IndexData{
|
||||
@@ -426,7 +426,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
manifestDigestFromIndex2 = digest.FromString("manifestDigestFromIndex2")
|
||||
)
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]digest.Digest{
|
||||
@@ -557,7 +557,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("FilterTags bad IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadIndexData(boltdbWrapper.DB, indexDigest.String())
|
||||
@@ -573,7 +573,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("FilterTags bad indexBlob in IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = boltdbWrapper.SetIndexData(indexDigest, repodb.IndexData{
|
||||
@@ -595,7 +595,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
manifestDigestFromIndex2 = digest.FromString("manifestDigestFromIndex2")
|
||||
)
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]digest.Digest{
|
||||
@@ -631,7 +631,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("Unsuported type", func() {
|
||||
digest := digest.FromString("digest")
|
||||
|
||||
err := boltdbWrapper.SetRepoTag("repo", "tag1", digest, "invalid type") //nolint:contextcheck
|
||||
err := boltdbWrapper.SetRepoReference("repo", "tag1", digest, "invalid type") //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, _, _, _, err = boltdbWrapper.SearchRepos(ctx, "", repodb.Filter{}, repodb.PageInput{})
|
||||
|
||||
@@ -45,12 +45,12 @@ func ReferenceIsDigest(reference string) bool {
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func ValidateRepoTagInput(repo, tag string, manifestDigest godigest.Digest) error {
|
||||
func ValidateRepoReferenceInput(repo, reference string, manifestDigest godigest.Digest) error {
|
||||
if repo == "" {
|
||||
return zerr.ErrEmptyRepoName
|
||||
}
|
||||
|
||||
if tag == "" {
|
||||
if reference == "" {
|
||||
return zerr.ErrEmptyTag
|
||||
}
|
||||
|
||||
|
||||
@@ -55,13 +55,13 @@ func TestIterator(t *testing.T) {
|
||||
So(dynamoWrapper.ResetManifestDataTable(), ShouldBeNil)
|
||||
So(dynamoWrapper.ResetRepoMetaTable(), ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetRepoTag("repo1", "tag1", "manifestType", "manifestDigest1")
|
||||
err = dynamoWrapper.SetRepoReference("repo1", "tag1", "manifestType", "manifestDigest1")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetRepoTag("repo2", "tag2", "manifestType", "manifestDigest2")
|
||||
err = dynamoWrapper.SetRepoReference("repo2", "tag2", "manifestType", "manifestDigest2")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetRepoTag("repo3", "tag3", "manifestType", "manifestDigest3")
|
||||
err = dynamoWrapper.SetRepoReference("repo3", "tag3", "manifestType", "manifestDigest3")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repoMetaAttributeIterator := iterator.NewBaseDynamoAttributesIterator(
|
||||
@@ -196,7 +196,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("GetManifestMeta GetManifestData not found error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag", "dig", "")
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag", "dig", "")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, err = dynamoWrapper.GetManifestMeta("repo", "dig")
|
||||
@@ -270,7 +270,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("IncrementImageDownloads tag not found error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag", "dig", "")
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag", "dig", "")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.IncrementImageDownloads("repo", "notFoundTag")
|
||||
@@ -278,7 +278,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("AddManifestSignature GetRepoMeta error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag", "dig", "")
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag", "dig", "")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.AddManifestSignature("repoNotFound", "tag", repodb.SignatureMetadata{})
|
||||
@@ -286,7 +286,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("AddManifestSignature ManifestSignatures signedManifestDigest not found error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag", "dig", "")
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag", "dig", "")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.AddManifestSignature("repo", "tagNotFound", repodb.SignatureMetadata{})
|
||||
@@ -294,7 +294,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("AddManifestSignature SignatureType repodb.NotationType", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag", "dig", "")
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag", "dig", "")
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.AddManifestSignature("repo", "tagNotFound", repodb.SignatureMetadata{
|
||||
@@ -349,7 +349,8 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("SearchRepos GetManifestMeta error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "notFoundDigest", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "notFoundDigest", //nolint:contextcheck
|
||||
ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, _, _, _, err = dynamoWrapper.SearchRepos(ctx, "", repodb.Filter{}, repodb.PageInput{})
|
||||
@@ -358,7 +359,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("SearchRepos config unmarshal error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "dig1", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "dig1", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetManifestData("dig1", repodb.ManifestData{ //nolint:contextcheck
|
||||
@@ -375,7 +376,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("Unsuported type", func() {
|
||||
digest := digest.FromString("digest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", digest, "invalid type") //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", digest, "invalid type") //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, _, _, _, err = dynamoWrapper.SearchRepos(ctx, "", repodb.Filter{}, repodb.PageInput{})
|
||||
@@ -395,7 +396,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("SearchRepos bad index data", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadIndexData(dynamoWrapper.Client, indexDataTablename, indexDigest.String()) //nolint:contextcheck
|
||||
@@ -408,7 +409,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("SearchRepos bad indexBlob in IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetIndexData(indexDigest, repodb.IndexData{ //nolint:contextcheck
|
||||
@@ -427,7 +428,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
manifestDigestFromIndex2 = digest.FromString("manifestDigestFromIndex2")
|
||||
)
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]digest.Digest{
|
||||
@@ -466,7 +467,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("SearchTags GetManifestMeta error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "manifestNotFound", //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "manifestNotFound", //nolint:contextcheck
|
||||
ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
@@ -476,7 +477,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("SearchTags config unmarshal error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "dig1", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "dig1", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetManifestData( //nolint:contextcheck
|
||||
@@ -496,7 +497,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("SearchTags bad index data", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadIndexData(dynamoWrapper.Client, indexDataTablename, indexDigest.String()) //nolint:contextcheck
|
||||
@@ -509,7 +510,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("SearchTags bad indexBlob in IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetIndexData(indexDigest, repodb.IndexData{ //nolint:contextcheck
|
||||
@@ -528,7 +529,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
manifestDigestFromIndex2 = digest.FromString("manifestDigestFromIndex2")
|
||||
)
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]digest.Digest{
|
||||
@@ -573,7 +574,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("FilterTags manifestMeta not found", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "manifestNotFound", //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "manifestNotFound", //nolint:contextcheck
|
||||
ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
@@ -589,7 +590,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
})
|
||||
|
||||
Convey("FilterTags manifestMeta unmarshal error", func() {
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", "dig", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", "dig", ispec.MediaTypeImageManifest) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadManifestData(dynamoWrapper.Client, manifestDataTablename, "dig") //nolint:contextcheck
|
||||
@@ -609,7 +610,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("FilterTags bad IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = setBadIndexData(dynamoWrapper.Client, indexDataTablename, indexDigest.String()) //nolint:contextcheck
|
||||
@@ -625,7 +626,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
Convey("FilterTags bad indexBlob in IndexData", func() {
|
||||
indexDigest := digest.FromString("indexDigest")
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = dynamoWrapper.SetIndexData(indexDigest, repodb.IndexData{ //nolint:contextcheck
|
||||
@@ -647,7 +648,7 @@ func TestWrapperErrors(t *testing.T) {
|
||||
manifestDigestFromIndex2 = digest.FromString("manifestDigestFromIndex2")
|
||||
)
|
||||
|
||||
err := dynamoWrapper.SetRepoTag("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
err := dynamoWrapper.SetRepoReference("repo", "tag1", indexDigest, ispec.MediaTypeImageIndex) //nolint:contextcheck
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]digest.Digest{
|
||||
|
||||
@@ -91,7 +91,7 @@ func NewDynamoDBWrapper(params dynamoParams.DBDriverParameters) (*DBWrapper, err
|
||||
return &dynamoWrapper, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestData repodb.ManifestData) error {
|
||||
func (dwr *DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestData repodb.ManifestData) error {
|
||||
mdAttributeValue, err := attributevalue.Marshal(manifestData)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -116,7 +116,7 @@ func (dwr DBWrapper) SetManifestData(manifestDigest godigest.Digest, manifestDat
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.ManifestData, error) {
|
||||
func (dwr *DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.ManifestData, error) {
|
||||
resp, err := dwr.Client.GetItem(context.Background(), &dynamodb.GetItemInput{
|
||||
TableName: aws.String(dwr.ManifestDataTablename),
|
||||
Key: map[string]types.AttributeValue{
|
||||
@@ -141,7 +141,7 @@ func (dwr DBWrapper) GetManifestData(manifestDigest godigest.Digest) (repodb.Man
|
||||
return manifestData, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest, manifestMeta repodb.ManifestMetadata,
|
||||
func (dwr *DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest, manifestMeta repodb.ManifestMetadata,
|
||||
) error {
|
||||
if manifestMeta.Signatures == nil {
|
||||
manifestMeta.Signatures = repodb.ManifestSignatures{}
|
||||
@@ -179,7 +179,7 @@ func (dwr DBWrapper) SetManifestMeta(repo string, manifestDigest godigest.Digest
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest,
|
||||
func (dwr *DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest,
|
||||
) (repodb.ManifestMetadata, error) { //nolint:contextcheck
|
||||
manifestData, err := dwr.GetManifestData(manifestDigest)
|
||||
if err != nil {
|
||||
@@ -218,7 +218,7 @@ func (dwr DBWrapper) GetManifestMeta(repo string, manifestDigest godigest.Digest
|
||||
return manifestMetadata, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) IncrementRepoStars(repo string) error {
|
||||
func (dwr *DBWrapper) IncrementRepoStars(repo string) error {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -231,7 +231,7 @@ func (dwr DBWrapper) IncrementRepoStars(repo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) DecrementRepoStars(repo string) error {
|
||||
func (dwr *DBWrapper) DecrementRepoStars(repo string) error {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -246,7 +246,7 @@ func (dwr DBWrapper) DecrementRepoStars(repo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
func (dwr *DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
@@ -255,7 +255,7 @@ func (dwr DBWrapper) GetRepoStars(repo string) (int, error) {
|
||||
return repoMeta.Stars, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SetIndexData(indexDigest godigest.Digest, indexData repodb.IndexData) error {
|
||||
func (dwr *DBWrapper) SetIndexData(indexDigest godigest.Digest, indexData repodb.IndexData) error {
|
||||
indexAttributeValue, err := attributevalue.Marshal(indexData)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -280,7 +280,7 @@ func (dwr DBWrapper) SetIndexData(indexDigest godigest.Digest, indexData repodb.
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData, error) {
|
||||
func (dwr *DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData, error) {
|
||||
resp, err := dwr.Client.GetItem(context.TODO(), &dynamodb.GetItemInput{
|
||||
TableName: aws.String(dwr.IndexDataTablename),
|
||||
Key: map[string]types.AttributeValue{
|
||||
@@ -307,8 +307,10 @@ func (dwr DBWrapper) GetIndexData(indexDigest godigest.Digest) (repodb.IndexData
|
||||
return indexData, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest.Digest, mediaType string) error {
|
||||
if err := common.ValidateRepoTagInput(repo, tag, manifestDigest); err != nil {
|
||||
func (dwr *DBWrapper) SetRepoReference(repo string, reference string, manifestDigest godigest.Digest,
|
||||
mediaType string,
|
||||
) error {
|
||||
if err := common.ValidateRepoReferenceInput(repo, reference, manifestDigest); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -336,17 +338,22 @@ func (dwr DBWrapper) SetRepoTag(repo string, tag string, manifestDigest godigest
|
||||
}
|
||||
}
|
||||
|
||||
repoMeta.Tags[tag] = repodb.Descriptor{
|
||||
Digest: manifestDigest.String(),
|
||||
MediaType: mediaType,
|
||||
if !common.ReferenceIsDigest(reference) {
|
||||
repoMeta.Tags[reference] = repodb.Descriptor{
|
||||
Digest: manifestDigest.String(),
|
||||
MediaType: mediaType,
|
||||
}
|
||||
}
|
||||
|
||||
repoMeta.Statistics[manifestDigest.String()] = repodb.DescriptorStatistics{DownloadCount: 0}
|
||||
repoMeta.Signatures[manifestDigest.String()] = repodb.ManifestSignatures{}
|
||||
|
||||
err = dwr.setRepoMeta(repo, repoMeta)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
func (dwr *DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
resp, err := dwr.Client.GetItem(context.TODO(), &dynamodb.GetItemInput{
|
||||
TableName: aws.String(dwr.RepoMetaTablename),
|
||||
Key: map[string]types.AttributeValue{
|
||||
@@ -405,7 +412,7 @@ func (dwr DBWrapper) DeleteRepoTag(repo string, tag string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
func (dwr *DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
resp, err := dwr.Client.GetItem(context.TODO(), &dynamodb.GetItemInput{
|
||||
TableName: aws.String(dwr.RepoMetaTablename),
|
||||
Key: map[string]types.AttributeValue{
|
||||
@@ -430,7 +437,7 @@ func (dwr DBWrapper) GetRepoMeta(repo string) (repodb.RepoMetadata, error) {
|
||||
return repoMeta, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) IncrementImageDownloads(repo string, reference string) error {
|
||||
func (dwr *DBWrapper) IncrementImageDownloads(repo string, reference string) error {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -456,7 +463,7 @@ func (dwr DBWrapper) IncrementImageDownloads(repo string, reference string) erro
|
||||
return dwr.setRepoMeta(repo, repoMeta)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) AddManifestSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
func (dwr *DBWrapper) AddManifestSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
sygMeta repodb.SignatureMetadata,
|
||||
) error {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
@@ -497,7 +504,7 @@ func (dwr DBWrapper) AddManifestSignature(repo string, signedManifestDigest godi
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
func (dwr *DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.Digest,
|
||||
sigMeta repodb.SignatureMetadata,
|
||||
) error {
|
||||
repoMeta, err := dwr.GetRepoMeta(repo)
|
||||
@@ -535,7 +542,7 @@ func (dwr DBWrapper) DeleteSignature(repo string, signedManifestDigest godigest.
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) GetMultipleRepoMeta(ctx context.Context,
|
||||
func (dwr *DBWrapper) GetMultipleRepoMeta(ctx context.Context,
|
||||
filter func(repoMeta repodb.RepoMetadata) bool, requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, error) {
|
||||
var (
|
||||
@@ -583,7 +590,7 @@ func (dwr DBWrapper) GetMultipleRepoMeta(ctx context.Context,
|
||||
return foundRepos, err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SearchRepos(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
func (dwr *DBWrapper) SearchRepos(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData, repodb.PageInfo, error) {
|
||||
var (
|
||||
@@ -743,7 +750,7 @@ func (dwr DBWrapper) SearchRepos(ctx context.Context, searchText string, filter
|
||||
return foundRepos, foundManifestMetadataMap, foundindexDataMap, pageInfo, err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) fetchManifestMetaWithCheck(repoName string, manifestDigest string,
|
||||
func (dwr *DBWrapper) fetchManifestMetaWithCheck(repoName string, manifestDigest string,
|
||||
manifestMetadataMap map[string]repodb.ManifestMetadata,
|
||||
) (repodb.ManifestMetadata, error) {
|
||||
var (
|
||||
@@ -796,7 +803,7 @@ func collectImageManifestFilterData(digest string, repoMeta repodb.RepoMetadata,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) fetchIndexDataWithCheck(indexDigest string, indexDataMap map[string]repodb.IndexData,
|
||||
func (dwr *DBWrapper) fetchIndexDataWithCheck(indexDigest string, indexDataMap map[string]repodb.IndexData,
|
||||
) (repodb.IndexData, error) {
|
||||
var (
|
||||
indexData repodb.IndexData
|
||||
@@ -816,7 +823,7 @@ func (dwr DBWrapper) fetchIndexDataWithCheck(indexDigest string, indexDataMap ma
|
||||
return indexData, err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) collectImageIndexFilterInfo(indexDigest string, repoMeta repodb.RepoMetadata,
|
||||
func (dwr *DBWrapper) collectImageIndexFilterInfo(indexDigest string, repoMeta repodb.RepoMetadata,
|
||||
indexData repodb.IndexData, manifestMetadataMap map[string]repodb.ManifestMetadata,
|
||||
) (repodb.FilterData, error) {
|
||||
var indexContent ispec.Index
|
||||
@@ -871,7 +878,7 @@ func (dwr DBWrapper) collectImageIndexFilterInfo(indexDigest string, repoMeta re
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
func (dwr *DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData, repodb.PageInfo, error) {
|
||||
var (
|
||||
@@ -1009,7 +1016,7 @@ func (dwr DBWrapper) FilterTags(ctx context.Context, filter repodb.FilterFunc,
|
||||
return foundRepos, foundManifestMetadataMap, foundindexDataMap, pageInfo, err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) SearchTags(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
func (dwr *DBWrapper) SearchTags(ctx context.Context, searchText string, filter repodb.Filter,
|
||||
requestedPage repodb.PageInput,
|
||||
) ([]repodb.RepoMetadata, map[string]repodb.ManifestMetadata, map[string]repodb.IndexData, repodb.PageInfo, error) {
|
||||
var (
|
||||
@@ -1244,7 +1251,7 @@ func (dwr *DBWrapper) PatchDB() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) setRepoMeta(repo string, repoMeta repodb.RepoMetadata) error {
|
||||
func (dwr *DBWrapper) setRepoMeta(repo string, repoMeta repodb.RepoMetadata) error {
|
||||
repoAttributeValue, err := attributevalue.Marshal(repoMeta)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1269,7 +1276,7 @@ func (dwr DBWrapper) setRepoMeta(repo string, repoMeta repodb.RepoMetadata) erro
|
||||
return err
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) createRepoMetaTable() error {
|
||||
func (dwr *DBWrapper) createRepoMetaTable() error {
|
||||
_, err := dwr.Client.CreateTable(context.Background(), &dynamodb.CreateTableInput{
|
||||
TableName: aws.String(dwr.RepoMetaTablename),
|
||||
AttributeDefinitions: []types.AttributeDefinition{
|
||||
@@ -1294,7 +1301,7 @@ func (dwr DBWrapper) createRepoMetaTable() error {
|
||||
return dwr.waitTableToBeCreated(dwr.RepoMetaTablename)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) deleteRepoMetaTable() error {
|
||||
func (dwr *DBWrapper) deleteRepoMetaTable() error {
|
||||
_, err := dwr.Client.DeleteTable(context.Background(), &dynamodb.DeleteTableInput{
|
||||
TableName: aws.String(dwr.RepoMetaTablename),
|
||||
})
|
||||
@@ -1306,7 +1313,7 @@ func (dwr DBWrapper) deleteRepoMetaTable() error {
|
||||
return dwr.waitTableToBeDeleted(dwr.RepoMetaTablename)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) ResetRepoMetaTable() error {
|
||||
func (dwr *DBWrapper) ResetRepoMetaTable() error {
|
||||
err := dwr.deleteRepoMetaTable()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -1315,7 +1322,7 @@ func (dwr DBWrapper) ResetRepoMetaTable() error {
|
||||
return dwr.createRepoMetaTable()
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) waitTableToBeCreated(tableName string) error {
|
||||
func (dwr *DBWrapper) waitTableToBeCreated(tableName string) error {
|
||||
const maxWaitTime = 20 * time.Second
|
||||
|
||||
waiter := dynamodb.NewTableExistsWaiter(dwr.Client)
|
||||
@@ -1325,7 +1332,7 @@ func (dwr DBWrapper) waitTableToBeCreated(tableName string) error {
|
||||
}, maxWaitTime)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) waitTableToBeDeleted(tableName string) error {
|
||||
func (dwr *DBWrapper) waitTableToBeDeleted(tableName string) error {
|
||||
const maxWaitTime = 20 * time.Second
|
||||
|
||||
waiter := dynamodb.NewTableNotExistsWaiter(dwr.Client)
|
||||
@@ -1335,7 +1342,7 @@ func (dwr DBWrapper) waitTableToBeDeleted(tableName string) error {
|
||||
}, maxWaitTime)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) createManifestDataTable() error {
|
||||
func (dwr *DBWrapper) createManifestDataTable() error {
|
||||
_, err := dwr.Client.CreateTable(context.Background(), &dynamodb.CreateTableInput{
|
||||
TableName: aws.String(dwr.ManifestDataTablename),
|
||||
AttributeDefinitions: []types.AttributeDefinition{
|
||||
@@ -1360,7 +1367,7 @@ func (dwr DBWrapper) createManifestDataTable() error {
|
||||
return dwr.waitTableToBeCreated(dwr.ManifestDataTablename)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) createIndexDataTable() error {
|
||||
func (dwr *DBWrapper) createIndexDataTable() error {
|
||||
_, err := dwr.Client.CreateTable(context.Background(), &dynamodb.CreateTableInput{
|
||||
TableName: aws.String(dwr.IndexDataTablename),
|
||||
AttributeDefinitions: []types.AttributeDefinition{
|
||||
@@ -1470,7 +1477,7 @@ func (dwr *DBWrapper) getDBVersion() (string, error) {
|
||||
return version, nil
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) deleteManifestDataTable() error {
|
||||
func (dwr *DBWrapper) deleteManifestDataTable() error {
|
||||
_, err := dwr.Client.DeleteTable(context.Background(), &dynamodb.DeleteTableInput{
|
||||
TableName: aws.String(dwr.ManifestDataTablename),
|
||||
})
|
||||
@@ -1482,7 +1489,7 @@ func (dwr DBWrapper) deleteManifestDataTable() error {
|
||||
return dwr.waitTableToBeDeleted(dwr.ManifestDataTablename)
|
||||
}
|
||||
|
||||
func (dwr DBWrapper) ResetManifestDataTable() error {
|
||||
func (dwr *DBWrapper) ResetManifestDataTable() error {
|
||||
err := dwr.deleteManifestDataTable()
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -35,8 +35,8 @@ type RepoDB interface { //nolint:interfacebloat
|
||||
// GetRepoStars returns the total number of stars a repo has
|
||||
GetRepoStars(repo string) (int, error)
|
||||
|
||||
// SetRepoTag sets the tag of a manifest in the tag list of a repo
|
||||
SetRepoTag(repo string, tag string, manifestDigest godigest.Digest, mediaType string) error
|
||||
// SetRepoReference sets the reference of a manifest in the tag list of a repo
|
||||
SetRepoReference(repo string, reference string, manifestDigest godigest.Digest, mediaType string) error
|
||||
|
||||
// DeleteRepoTag delets the tag from the tag list of a repo
|
||||
DeleteRepoTag(repo string, tag string) error
|
||||
|
||||
@@ -176,7 +176,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
})
|
||||
|
||||
Convey("Test SetRepoTag", func() {
|
||||
Convey("Test SetRepoReference", func() {
|
||||
// test behaviours
|
||||
var (
|
||||
repo1 = "repo1"
|
||||
@@ -189,18 +189,33 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
)
|
||||
|
||||
Convey("Setting a good repo", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repoMeta, err := repoDB.GetRepoMeta(repo1)
|
||||
So(err, ShouldBeNil)
|
||||
So(repoMeta.Name, ShouldResemble, repo1)
|
||||
So(repoMeta.Tags[tag1].Digest, ShouldEqual, manifestDigest1)
|
||||
})
|
||||
|
||||
Convey("Set multiple tags for repo", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
Convey("Setting a good repo using a digest", func() {
|
||||
_, err := repoDB.GetRepoMeta(repo1)
|
||||
So(err, ShouldNotBeNil)
|
||||
|
||||
digest := godigest.FromString("digest")
|
||||
err = repoDB.SetRepoReference(repo1, digest.String(), digest,
|
||||
ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
|
||||
repoMeta, err := repoDB.GetRepoMeta(repo1)
|
||||
So(err, ShouldBeNil)
|
||||
So(repoMeta.Name, ShouldResemble, repo1)
|
||||
})
|
||||
|
||||
Convey("Set multiple tags for repo", func() {
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repoMeta, err := repoDB.GetRepoMeta(repo1)
|
||||
@@ -210,9 +225,9 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Set multiple repos", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repoMeta1, err := repoDB.GetRepoMeta(repo1)
|
||||
@@ -226,17 +241,17 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
|
||||
Convey("Setting a repo with invalid fields", func() {
|
||||
Convey("Repo name is not valid", func() {
|
||||
err := repoDB.SetRepoTag("", tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference("", tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
|
||||
Convey("Tag is not valid", func() {
|
||||
err := repoDB.SetRepoTag(repo1, "", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, "", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
|
||||
Convey("Manifest Digest is not valid", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, "", ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, "", ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldNotBeNil)
|
||||
})
|
||||
})
|
||||
@@ -255,10 +270,10 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
InexistentRepo = "InexistentRepo"
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
Convey("Get a existent repo", func() {
|
||||
@@ -287,10 +302,10 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest2 = godigest.FromString("fake-manifest2")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
Convey("Delete from repo a tag", func() {
|
||||
@@ -352,13 +367,13 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest2 = godigest.FromString("fake-manifest2")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
Convey("Get all Repometa", func() {
|
||||
@@ -407,7 +422,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest1 = godigest.FromString("fake-manifest1")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.IncrementRepoStars(repo1)
|
||||
@@ -439,7 +454,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest1 = godigest.FromString("fake-manifest1")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.IncrementRepoStars(repo1)
|
||||
@@ -474,7 +489,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest1 = godigest.FromString("fake-manifest1")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.IncrementRepoStars(repo1)
|
||||
@@ -508,7 +523,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
|
||||
manifestDigest := godigest.FromBytes(manifestBlob)
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, tag1, manifestDigest, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag1, manifestDigest, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest, repodb.ManifestMetadata{
|
||||
@@ -544,7 +559,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest1 = godigest.FromString("fake-manifest1")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, repodb.ManifestMetadata{})
|
||||
@@ -572,7 +587,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest1 = godigest.FromString("fake-manifest1")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, repodb.ManifestMetadata{})
|
||||
@@ -633,11 +648,11 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
}
|
||||
|
||||
Convey("Search all repos", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
@@ -657,7 +672,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Search a repo by name", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
@@ -671,10 +686,10 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Search non-existing repo by name", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repos, manifestMetaMap, _, _, err := repoDB.SearchRepos(ctx, "RepoThatDoesntExist", repodb.Filter{},
|
||||
@@ -685,11 +700,11 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Search with partial match", func() {
|
||||
err := repoDB.SetRepoTag("alpine", tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference("alpine", tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag("pine", tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference("pine", tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag("golang", tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference("golang", tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta("alpine", manifestDigest1, emptyRepoMeta)
|
||||
@@ -708,11 +723,11 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Search multiple repos that share manifests", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
@@ -729,11 +744,11 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
|
||||
Convey("Search repos with access control", func() {
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
@@ -789,7 +804,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
}
|
||||
repoName := "repo" + strconv.Itoa(i)
|
||||
|
||||
err = repoDB.SetRepoTag(repoName, tag1, manifestDigest, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repoName, tag1, manifestDigest, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repoName, manifestDigest, manifestMeta)
|
||||
@@ -972,10 +987,10 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag("repo", tag4, indexDigest, ispec.MediaTypeImageIndex)
|
||||
err = repoDB.SetRepoReference("repo", tag4, indexDigest, ispec.MediaTypeImageIndex)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag("repo", tag5, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference("repo", tag5, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repos, manifestMetaMap, indexDataMap, _, err := repoDB.SearchRepos(ctx, "repo", repodb.Filter{}, repodb.PageInput{})
|
||||
@@ -1015,17 +1030,17 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
ConfigBlob: emptyConfigBlob,
|
||||
}
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, "0.0.1", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.0.1", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "0.0.2", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.0.2", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "0.1.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.1.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "1.0.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "1.0.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "1.0.1", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "1.0.1", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, "0.0.1", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, "0.0.1", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
@@ -1093,11 +1108,11 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
tag3 = "0.0.3"
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
config := ispec.Image{}
|
||||
@@ -1199,13 +1214,13 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag("repo", tag4, indexDigest, ispec.MediaTypeImageIndex)
|
||||
err = repoDB.SetRepoReference("repo", tag4, indexDigest, ispec.MediaTypeImageIndex)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag("repo", tag5, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference("repo", tag5, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag("repo", tag6, manifestDigest4, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference("repo", tag6, manifestDigest4, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
repos, manifestMetaMap, indexDataMap, _, err := repoDB.SearchTags(ctx, "repo:0.0", repodb.Filter{},
|
||||
@@ -1236,15 +1251,15 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
tag5 = "0.0.5"
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag3, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag4, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag4, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag5, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag5, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
config := ispec.Image{}
|
||||
@@ -1309,15 +1324,15 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestDigest3 = godigest.FromString("fake-manifest3")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err := repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag1, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag1, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
config1 := ispec.Image{
|
||||
@@ -1433,7 +1448,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
manifestFromIndexDigest2 = godigest.FromString("fake-manifestFromIndexDigest2")
|
||||
)
|
||||
|
||||
err := repoDB.SetRepoTag(repo1, tag3, indexDigest, ispec.MediaTypeImageIndex)
|
||||
err := repoDB.SetRepoReference(repo1, tag3, indexDigest, ispec.MediaTypeImageIndex)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests(
|
||||
@@ -1449,15 +1464,15 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag1, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag1, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
config1 := ispec.Image{
|
||||
@@ -1561,7 +1576,7 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
ConfigBlob: emptyConfigBlob,
|
||||
}
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, "2.0.0", indexDigest, ispec.MediaTypeImageIndex)
|
||||
err = repoDB.SetRepoReference(repo1, "2.0.0", indexDigest, ispec.MediaTypeImageIndex)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
indexBlob, err := test.GetIndexBlobWithManifests([]godigest.Digest{
|
||||
@@ -1575,17 +1590,17 @@ func RunRepoDBTests(repoDB repodb.RepoDB, preparationFuncs ...func() error) {
|
||||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, "0.0.1", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.0.1", manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "0.0.2", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.0.2", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "0.1.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "0.1.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "1.0.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "1.0.0", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, "1.0.1", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, "1.0.1", manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, "0.0.1", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, "0.0.1", manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyManifestMeta)
|
||||
@@ -1797,15 +1812,15 @@ func TestRelevanceSorting(t *testing.T) {
|
||||
ConfigBlob: emptyConfigBlob,
|
||||
}
|
||||
|
||||
err = repoDB.SetRepoTag(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag1, manifestDigest1, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo1, tag2, manifestDigest2, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo2, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo2, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo3, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo3, tag3, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
err = repoDB.SetRepoTag(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
err = repoDB.SetRepoReference(repo4, tag1, manifestDigest3, ispec.MediaTypeImageManifest)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
err = repoDB.SetManifestMeta(repo1, manifestDigest1, emptyRepoMeta)
|
||||
|
||||
@@ -82,7 +82,7 @@ func SyncRepo(repo string, repoDB RepoDB, storeController storage.StoreControlle
|
||||
}
|
||||
|
||||
if manifestMetaIsPresent && hasTag {
|
||||
err = repoDB.SetRepoTag(repo, tag, manifest.Digest, manifest.MediaType)
|
||||
err = repoDB.SetRepoReference(repo, tag, manifest.Digest, manifest.MediaType)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msgf("sync-repo: failed to set repo tag for %s:%s", repo, tag)
|
||||
|
||||
@@ -132,7 +132,7 @@ func SyncRepo(repo string, repoDB RepoDB, storeController storage.StoreControlle
|
||||
}
|
||||
|
||||
err = SetMetadataFromInput(repo, reference, manifest.MediaType, manifest.Digest, manifestBlob,
|
||||
storeController, repoDB, log)
|
||||
imageStore, repoDB, log)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msgf("sync-repo: failed to set metadata for %s:%s", repo, tag)
|
||||
|
||||
@@ -220,7 +220,7 @@ func isManifestMetaPresent(repo string, manifest ispec.Descriptor, repoDB RepoDB
|
||||
}
|
||||
|
||||
// NewManifestMeta takes raw data about an image and createa a new ManifestMetadate object.
|
||||
func NewManifestData(repoName string, manifestBlob []byte, storeController storage.StoreController,
|
||||
func NewManifestData(repoName string, manifestBlob []byte, imgStore storage.ImageStore,
|
||||
) (ManifestData, error) {
|
||||
var (
|
||||
manifestContent ispec.Manifest
|
||||
@@ -228,8 +228,6 @@ func NewManifestData(repoName string, manifestBlob []byte, storeController stora
|
||||
manifestData ManifestData
|
||||
)
|
||||
|
||||
imgStore := storeController.GetImageStore(repoName)
|
||||
|
||||
err := json.Unmarshal(manifestBlob, &manifestContent)
|
||||
if err != nil {
|
||||
return ManifestData{}, err
|
||||
@@ -251,7 +249,7 @@ func NewManifestData(repoName string, manifestBlob []byte, storeController stora
|
||||
return manifestData, nil
|
||||
}
|
||||
|
||||
func NewIndexData(repoName string, indexBlob []byte, storeController storage.StoreController,
|
||||
func NewIndexData(repoName string, indexBlob []byte,
|
||||
) IndexData {
|
||||
indexData := IndexData{}
|
||||
|
||||
@@ -263,11 +261,11 @@ func NewIndexData(repoName string, indexBlob []byte, storeController storage.Sto
|
||||
// SetMetadataFromInput tries to set manifest metadata and update repo metadata by adding the current tag
|
||||
// (in case the reference is a tag). The function expects image manifests and indexes (multi arch images).
|
||||
func SetMetadataFromInput(repo, reference, mediaType string, digest godigest.Digest, descriptorBlob []byte,
|
||||
storeController storage.StoreController, repoDB RepoDB, log log.Logger,
|
||||
imageStore storage.ImageStore, repoDB RepoDB, log log.Logger,
|
||||
) error {
|
||||
switch mediaType {
|
||||
case ispec.MediaTypeImageManifest:
|
||||
imageData, err := NewManifestData(repo, descriptorBlob, storeController)
|
||||
imageData, err := NewManifestData(repo, descriptorBlob, imageStore)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -279,7 +277,7 @@ func SetMetadataFromInput(repo, reference, mediaType string, digest godigest.Dig
|
||||
return err
|
||||
}
|
||||
case ispec.MediaTypeImageIndex:
|
||||
indexData := NewIndexData(repo, descriptorBlob, storeController)
|
||||
indexData := NewIndexData(repo, descriptorBlob)
|
||||
|
||||
err := repoDB.SetIndexData(digest, indexData)
|
||||
if err != nil {
|
||||
@@ -289,11 +287,7 @@ func SetMetadataFromInput(repo, reference, mediaType string, digest godigest.Dig
|
||||
}
|
||||
}
|
||||
|
||||
if refferenceIsDigest(reference) {
|
||||
return nil
|
||||
}
|
||||
|
||||
err := repoDB.SetRepoTag(repo, reference, digest, mediaType)
|
||||
err := repoDB.SetRepoReference(repo, reference, digest, mediaType)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("repodb: error while putting repo meta")
|
||||
|
||||
@@ -302,9 +296,3 @@ func SetMetadataFromInput(repo, reference, mediaType string, digest godigest.Dig
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func refferenceIsDigest(reference string) bool {
|
||||
_, err := godigest.Parse(reference)
|
||||
|
||||
return err == nil
|
||||
}
|
||||
|
||||
@@ -178,8 +178,8 @@ func TestSyncRepoDBErrors(t *testing.T) {
|
||||
return indexBlob, nil
|
||||
}
|
||||
|
||||
Convey("repoDB.SetRepoTag", func() {
|
||||
repoDB.SetRepoTagFn = func(repo, tag string, manifestDigest godigest.Digest, mediaType string) error {
|
||||
Convey("repoDB.SetRepoReference", func() {
|
||||
repoDB.SetRepoReferenceFn = func(repo, tag string, manifestDigest godigest.Digest, mediaType string) error {
|
||||
return ErrTestError
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ func OnUpdateManifest(name, reference, mediaType string, digest godigest.Digest,
|
||||
}
|
||||
} else {
|
||||
err := repodb.SetMetadataFromInput(name, reference, mediaType, digest, body,
|
||||
storeController, repoDB, log)
|
||||
imgStore, repoDB, log)
|
||||
if err != nil {
|
||||
metadataSuccessfullySet = false
|
||||
}
|
||||
@@ -152,7 +152,7 @@ func OnGetManifest(name, reference string, digest godigest.Digest, body []byte,
|
||||
if !isSignature {
|
||||
err := repoDB.IncrementImageDownloads(name, reference)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("unexpected error")
|
||||
log.Error().Err(err).Msgf("unexpected error for '%s:%s'", name, reference)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -181,12 +181,11 @@ func TestUpdateErrors(t *testing.T) {
|
||||
|
||||
Convey("SetMetadataFromInput", func() {
|
||||
imageStore := mocks.MockedImageStore{}
|
||||
storeController := storage.StoreController{DefaultStore: &imageStore}
|
||||
repoDB := mocks.RepoDBMock{}
|
||||
log := log.NewLogger("debug", "")
|
||||
|
||||
err := repodb.SetMetadataFromInput("repo", "ref", ispec.MediaTypeImageManifest, "digest",
|
||||
[]byte("BadManifestBlob"), storeController, repoDB, log)
|
||||
[]byte("BadManifestBlob"), imageStore, repoDB, log)
|
||||
So(err, ShouldNotBeNil)
|
||||
|
||||
// reference is digest
|
||||
@@ -203,7 +202,7 @@ func TestUpdateErrors(t *testing.T) {
|
||||
}
|
||||
|
||||
err = repodb.SetMetadataFromInput("repo", string(godigest.FromString("reference")), "", "digest",
|
||||
manifestBlob, storeController, repoDB, log)
|
||||
manifestBlob, imageStore, repoDB, log)
|
||||
So(err, ShouldBeNil)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user