Skip to content

Commit 113d13a

Browse files
KN4CK3R6543
andauthored
Keep download count on Container tag overwrite (#20728) (#20735)
Co-authored-by: 6543 <[email protected]>
1 parent 9ec1c88 commit 113d13a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

integrations/api_packages_container_test.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -275,11 +275,23 @@ func TestPackageContainer(t *testing.T) {
275275
}
276276
}
277277

278-
// Overwrite existing tag
278+
req = NewRequest(t, "GET", fmt.Sprintf("%s/manifests/%s", url, tag))
279+
addTokenAuthHeader(req, userToken)
280+
MakeRequest(t, req, http.StatusOK)
281+
282+
pv, err = packages_model.GetVersionByNameAndVersion(db.DefaultContext, user.ID, packages_model.TypeContainer, image, tag)
283+
assert.NoError(t, err)
284+
assert.EqualValues(t, 1, pv.DownloadCount)
285+
286+
// Overwrite existing tag should keep the download count
279287
req = NewRequestWithBody(t, "PUT", fmt.Sprintf("%s/manifests/%s", url, tag), strings.NewReader(manifestContent))
280288
addTokenAuthHeader(req, userToken)
281289
req.Header.Set("Content-Type", oci.MediaTypeDockerManifest)
282290
MakeRequest(t, req, http.StatusCreated)
291+
292+
pv, err = packages_model.GetVersionByNameAndVersion(db.DefaultContext, user.ID, packages_model.TypeContainer, image, tag)
293+
assert.NoError(t, err)
294+
assert.EqualValues(t, 1, pv.DownloadCount)
283295
})
284296

285297
t.Run("HeadManifest", func(t *testing.T) {

routers/api/packages/container/manifest.go

+3
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,9 @@ func createPackageAndVersion(ctx context.Context, mci *manifestCreationInfo, met
312312
return nil, err
313313
}
314314

315+
// keep download count on overwrite
316+
_pv.DownloadCount = pv.DownloadCount
317+
315318
if pv, err = packages_model.GetOrInsertVersion(ctx, _pv); err != nil {
316319
log.Error("Error inserting package: %v", err)
317320
return nil, err

0 commit comments

Comments
 (0)