DELETE /v1/objects/bucket-name/object-name
(w http.ResponseWriter, r *http.Request)
| 665 | |
| 666 | // DELETE /v1/objects/bucket-name/object-name |
| 667 | func (p *proxy) httpobjdelete(w http.ResponseWriter, r *http.Request) { |
| 668 | bckArgs := allocInitBckArgs() |
| 669 | { |
| 670 | bckArgs.p = p |
| 671 | bckArgs.w = w |
| 672 | bckArgs.r = r |
| 673 | bckArgs.perms = apc.AceObjDELETE |
| 674 | bckArgs.createAIS = false |
| 675 | bckArgs.headRemB = true |
| 676 | } |
| 677 | bck, objName, err := p._parseReqTry(w, r, bckArgs) |
| 678 | if err != nil { |
| 679 | return |
| 680 | } |
| 681 | smap := p.owner.smap.get() |
| 682 | si, err := cluster.HrwTarget(bck.MakeUname(objName), &smap.Smap) |
| 683 | if err != nil { |
| 684 | p.writeErr(w, r, err) |
| 685 | return |
| 686 | } |
| 687 | if glog.FastV(4, glog.SmoduleAIS) { |
| 688 | glog.Infof("%s %s/%s => %s", r.Method, bck.Name, objName, si) |
| 689 | } |
| 690 | redirectURL := p.redirectURL(r, si, time.Now() /*started*/, cmn.NetIntraControl) |
| 691 | http.Redirect(w, r, redirectURL, http.StatusTemporaryRedirect) |
| 692 | |
| 693 | p.statsT.Add(stats.DeleteCount, 1) |
| 694 | } |
| 695 | |
| 696 | // DELETE { action } /v1/buckets |
| 697 | func (p *proxy) httpbckdelete(w http.ResponseWriter, r *http.Request) { |
no test coverage detected