app/imageoper, app/maindb: one image - one arch; app/storage: blob to name subdir
This commit is contained in:
+25
-11
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user