working commit
This commit is contained in:
+11
-8
@@ -15,6 +15,8 @@ import (
|
||||
"net/http"
|
||||
|
||||
"mstore/pkg/descr"
|
||||
|
||||
ocidigest "github.com/opencontainers/go-digest"
|
||||
)
|
||||
|
||||
type DeleteManifestParams struct {
|
||||
@@ -43,26 +45,27 @@ func (oper *Operator) DeleteManifest(ctx context.Context, params *DeleteManifest
|
||||
var exists bool
|
||||
var reference string
|
||||
|
||||
manifestDescr := descr.Manifest{}
|
||||
mandescr := descr.Manifest{}
|
||||
|
||||
// Check manifest by digest as name
|
||||
if stringLikeSHADigest(params.Reference) {
|
||||
digest := normalizeSHADigest(params.Reference)
|
||||
exists, manifestDescr, err = oper.mdb.GetManifestByDigest(ctx, params.Name, digest)
|
||||
|
||||
digobj, err := ocidigest.Parse(params.Reference)
|
||||
if err == nil {
|
||||
exists, mandescr, err = oper.mdb.GetManifestByDigest(ctx, params.Name, digobj.String())
|
||||
if err != nil {
|
||||
return res, http.StatusInternalServerError, err
|
||||
}
|
||||
if !exists {
|
||||
return res, http.StatusNotFound, err
|
||||
}
|
||||
reference = manifestDescr.Reference
|
||||
reference = mandescr.Reference
|
||||
err = oper.deleteManifestObjects(ctx, params.Name, reference)
|
||||
if err != nil {
|
||||
return res, http.StatusInternalServerError, err
|
||||
}
|
||||
} else {
|
||||
// Check manifest by name and reference
|
||||
exists, manifestDescrs, err := oper.mdb.GetManifestsByReference(ctx, params.Name, params.Reference)
|
||||
exists, mandescrs, err := oper.mdb.GetManifestsByReference(ctx, params.Name, params.Reference)
|
||||
if err != nil {
|
||||
return res, http.StatusInternalServerError, err
|
||||
}
|
||||
@@ -70,8 +73,8 @@ func (oper *Operator) DeleteManifest(ctx context.Context, params *DeleteManifest
|
||||
return res, http.StatusNotFound, err
|
||||
}
|
||||
reference = params.Reference
|
||||
for _, manifestDescr := range manifestDescrs {
|
||||
reference = manifestDescr.Reference
|
||||
for _, mandescr := range mandescrs {
|
||||
reference = mandescr.Reference
|
||||
err = oper.deleteManifestObjects(ctx, params.Name, reference)
|
||||
if err != nil {
|
||||
return res, http.StatusInternalServerError, err
|
||||
|
||||
Reference in New Issue
Block a user