POST /v1/buckets/bucket-name
(w http.ResponseWriter, r *http.Request)
| 804 | |
| 805 | // POST /v1/buckets/bucket-name |
| 806 | func (t *target) httpbckpost(w http.ResponseWriter, r *http.Request) { |
| 807 | msg, err := t.readAisMsg(w, r) |
| 808 | if err != nil { |
| 809 | return |
| 810 | } |
| 811 | apireq := apiReqAlloc(1, apc.URLPathBuckets.L, false) |
| 812 | defer apiReqFree(apireq) |
| 813 | if err := t.parseReq(w, r, apireq); err != nil { |
| 814 | return |
| 815 | } |
| 816 | |
| 817 | t.ensureLatestBMD(msg, r) |
| 818 | |
| 819 | if err := apireq.bck.Init(t.owner.bmd); err != nil { |
| 820 | if cmn.IsErrRemoteBckNotFound(err) { |
| 821 | t.BMDVersionFixup(r) |
| 822 | err = apireq.bck.Init(t.owner.bmd) |
| 823 | } |
| 824 | if err != nil { |
| 825 | t.writeErr(w, r, err) |
| 826 | return |
| 827 | } |
| 828 | } |
| 829 | |
| 830 | switch msg.Action { |
| 831 | case apc.ActPrefetchObjects: |
| 832 | var ( |
| 833 | err error |
| 834 | lrMsg = &cmn.SelectObjsMsg{} |
| 835 | ) |
| 836 | if !apireq.bck.IsRemote() { |
| 837 | t.writeErrf(w, r, "%s: expecting remote bucket, got %s, action=%s", |
| 838 | t.si, apireq.bck, msg.Action) |
| 839 | return |
| 840 | } |
| 841 | if err = cos.MorphMarshal(msg.Value, lrMsg); err != nil { |
| 842 | t.writeErrf(w, r, cmn.FmtErrMorphUnmarshal, t.si, msg.Action, msg.Value, err) |
| 843 | return |
| 844 | } |
| 845 | rns := xreg.RenewPrefetch(msg.UUID, t, apireq.bck, lrMsg) |
| 846 | xctn := rns.Entry.Get() |
| 847 | go xctn.Run(nil) |
| 848 | default: |
| 849 | t.writeErrAct(w, r, msg.Action) |
| 850 | } |
| 851 | } |
| 852 | |
| 853 | // HEAD /v1/buckets/bucket-name |
| 854 | func (t *target) httpbckhead(w http.ResponseWriter, r *http.Request) { |
no test coverage detected