Keep download count on Container tag overwrite (#20728)
Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
parent
1b2cd4c4e1
commit
920481340b
2 changed files with 16 additions and 1 deletions
|
@ -276,11 +276,23 @@ func TestPackageContainer(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overwrite existing tag
|
req = NewRequest(t, "GET", fmt.Sprintf("%s/manifests/%s", url, tag))
|
||||||
|
addTokenAuthHeader(req, userToken)
|
||||||
|
MakeRequest(t, req, http.StatusOK)
|
||||||
|
|
||||||
|
pv, err = packages_model.GetVersionByNameAndVersion(db.DefaultContext, user.ID, packages_model.TypeContainer, image, tag)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, pv.DownloadCount)
|
||||||
|
|
||||||
|
// Overwrite existing tag should keep the download count
|
||||||
req = NewRequestWithBody(t, "PUT", fmt.Sprintf("%s/manifests/%s", url, tag), strings.NewReader(manifestContent))
|
req = NewRequestWithBody(t, "PUT", fmt.Sprintf("%s/manifests/%s", url, tag), strings.NewReader(manifestContent))
|
||||||
addTokenAuthHeader(req, userToken)
|
addTokenAuthHeader(req, userToken)
|
||||||
req.Header.Set("Content-Type", oci.MediaTypeDockerManifest)
|
req.Header.Set("Content-Type", oci.MediaTypeDockerManifest)
|
||||||
MakeRequest(t, req, http.StatusCreated)
|
MakeRequest(t, req, http.StatusCreated)
|
||||||
|
|
||||||
|
pv, err = packages_model.GetVersionByNameAndVersion(db.DefaultContext, user.ID, packages_model.TypeContainer, image, tag)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, pv.DownloadCount)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("HeadManifest", func(t *testing.T) {
|
t.Run("HeadManifest", func(t *testing.T) {
|
||||||
|
|
|
@ -312,6 +312,9 @@ func createPackageAndVersion(ctx context.Context, mci *manifestCreationInfo, met
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// keep download count on overwrite
|
||||||
|
_pv.DownloadCount = pv.DownloadCount
|
||||||
|
|
||||||
if pv, err = packages_model.GetOrInsertVersion(ctx, _pv); err != nil {
|
if pv, err = packages_model.GetOrInsertVersion(ctx, _pv); err != nil {
|
||||||
log.Error("Error inserting package: %v", err)
|
log.Error("Error inserting package: %v", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
Loading…
Reference in a new issue