MCPcopy
hub / github.com/NVIDIA/aistore / httpbckdelete

Method httpbckdelete

ais/proxy.go:697–789  ·  view source on GitHub ↗

DELETE { action } /v1/buckets

(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

695
696// DELETE { action } /v1/buckets
697func (p *proxy) httpbckdelete(w http.ResponseWriter, r *http.Request) {
698 // 1. request
699 apireq := apiReqAlloc(1, apc.URLPathBuckets.L, false)
700 defer apiReqFree(apireq)
701 if err := p.parseReq(w, r, apireq); err != nil {
702 return
703 }
704 msg, err := p.readActionMsg(w, r)
705 if err != nil {
706 return
707 }
708 perms := apc.AceDestroyBucket
709 if msg.Action == apc.ActDeleteObjects || msg.Action == apc.ActEvictObjects {
710 perms = apc.AceObjDELETE
711 }
712
713 // 2. bucket
714 bck := apireq.bck
715 bckArgs := bckInitArgs{p: p, w: w, r: r, msg: msg, perms: perms, bck: bck, dpq: apireq.dpq, query: apireq.query}
716 bckArgs.createAIS = false
717 bckArgs.headRemB = true
718 if msg.Action == apc.ActEvictRemoteBck {
719 var errCode int
720 bckArgs.headRemB = false
721 bck, errCode, err = bckArgs.init(bck.Name)
722 if err != nil {
723 if errCode != http.StatusNotFound && !cmn.IsErrRemoteBckNotFound(err) {
724 p.writeErr(w, r, err, errCode)
725 }
726 return
727 }
728 } else if bck, err = bckArgs.initAndTry(bck.Name); err != nil {
729 return
730 }
731
732 // 3. action
733 switch msg.Action {
734 case apc.ActEvictRemoteBck:
735 if !bck.IsRemote() {
736 p.writeErrf(w, r, fmtNotRemote, bck.Name)
737 return
738 }
739 keepMD := cos.IsParseBool(apireq.query.Get(apc.QparamKeepBckMD))
740 // HDFS buckets will always keep metadata so they can re-register later
741 if bck.IsHDFS() || keepMD {
742 if err := p.destroyBucketData(msg, bck); err != nil {
743 p.writeErr(w, r, err)
744 }
745 return
746 }
747 if p.forwardCP(w, r, msg, bck.Name) {
748 return
749 }
750 if err := p.destroyBucket(msg, bck); err != nil {
751 p.writeErr(w, r, err)
752 }
753 case apc.ActDestroyBck:
754 if p.forwardCP(w, r, msg, bck.Name) {

Callers 1

bucketHandlerMethod · 0.95

Calls 15

initMethod · 0.95
initAndTryMethod · 0.95
destroyBucketDataMethod · 0.95
forwardCPMethod · 0.95
destroyBucketMethod · 0.95
reverseReqRemoteMethod · 0.95
doListRangeMethod · 0.95
IsErrRemoteBckNotFoundFunction · 0.92
IsParseBoolFunction · 0.92
IsErrBckNotFoundFunction · 0.92
InfofFunction · 0.92
apiReqAllocFunction · 0.85

Tested by

no test coverage detected