app/imageoper, app/maindb: one image - one arch; app/storage: blob to name subdir

This commit is contained in:
2026-03-17 09:40:53 +02:00
parent 13b1905e05
commit 791e04cdf1
28 changed files with 680 additions and 569 deletions
+25 -11
View File
@@ -64,21 +64,35 @@ func (oper *Operator) DeleteManifest(ctx context.Context, params *DeleteManifest
return res, http.StatusInternalServerError, err
}
} else {
/*
// Check manifest by name and reference
exists, mandescrs, err := oper.mdb.GetManifestsByReference(ctx, params.Name, params.Reference)
if err != nil {
return res, http.StatusInternalServerError, err
}
if !exists {
return res, http.StatusNotFound, err
}
reference = params.Reference
for _, mandescr := range mandescrs {
reference = mandescr.Reference
err = oper.deleteManifestObjects(ctx, params.Name, reference)
if err != nil {
return res, http.StatusInternalServerError, err
}
}
*/
// Check manifest by name and reference
exists, mandescrs, err := oper.mdb.GetManifestsByReference(ctx, params.Name, params.Reference)
exists, mandescr, err := oper.mdb.GetManifestByReference(ctx, params.Name, params.Reference)
if err != nil {
return res, http.StatusInternalServerError, err
}
if !exists {
return res, http.StatusNotFound, err
}
reference = params.Reference
for _, mandescr := range mandescrs {
reference = mandescr.Reference
err = oper.deleteManifestObjects(ctx, params.Name, reference)
if err != nil {
return res, http.StatusInternalServerError, err
}
err = oper.deleteManifestObjects(ctx, mandescr.Name, mandescr.Reference)
if err != nil {
return res, http.StatusInternalServerError, err
}
}
// Get blobs associated with the name
@@ -99,19 +113,19 @@ func (oper *Operator) deleteManifestObjects(ctx context.Context, name, reference
return err
}
// Check blob file
exists, _, err := oper.store.BlobExists(blob.Digest)
exists, _, err := oper.store.BlobExists(name, blob.Digest)
if err != nil {
return err
}
if exists {
// Check blob usage
blobUsage, err := oper.mdb.GetBlobUsage(ctx, blob.Digest)
blobUsage, err := oper.mdb.GetBlobUsage(ctx, blob.Name, blob.Digest)
if err != nil {
return err
}
// Delete if blob useless
if blobUsage == 0 {
err = oper.store.DeleteBlob(blob.Digest)
err = oper.store.DeleteBlob(name, blob.Digest)
if err != nil {
return err
}