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

Method httpbckpost

ais/target.go:806–851  ·  view source on GitHub ↗

POST /v1/buckets/bucket-name

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

Source from the content-addressed store, hash-verified

804
805// POST /v1/buckets/bucket-name
806func (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
854func (t *target) httpbckhead(w http.ResponseWriter, r *http.Request) {

Callers 1

bucketHandlerMethod · 0.95

Calls 15

ensureLatestBMDMethod · 0.95
BMDVersionFixupMethod · 0.95
IsErrRemoteBckNotFoundFunction · 0.92
MorphMarshalFunction · 0.92
RenewPrefetchFunction · 0.92
apiReqAllocFunction · 0.85
apiReqFreeFunction · 0.85
readAisMsgMethod · 0.80
parseReqMethod · 0.80
writeErrMethod · 0.80
writeErrfMethod · 0.80
writeErrActMethod · 0.80

Tested by

no test coverage detected