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

Method httpobjget

ais/proxy.go:537–584  ·  view source on GitHub ↗

GET /v1/objects/bucket-name/object-name

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

Source from the content-addressed store, hash-verified

535
536// GET /v1/objects/bucket-name/object-name
537func (p *proxy) httpobjget(w http.ResponseWriter, r *http.Request, origURLBck ...string) {
538 // 1. request
539 apireq := apiReqAlloc(2, apc.URLPathObjects.L, true /*dpq*/)
540 if err := p.parseReq(w, r, apireq); err != nil {
541 apiReqFree(apireq)
542 return
543 }
544
545 // 2. bucket
546 bckArgs := allocInitBckArgs()
547 {
548 bckArgs.p = p
549 bckArgs.w = w
550 bckArgs.r = r
551 bckArgs.bck = apireq.bck
552 bckArgs.dpq = apireq.dpq
553 bckArgs.perms = apc.AceGET
554 bckArgs.createAIS = false
555 bckArgs.headRemB = shouldHeadRemB()
556 }
557 if len(origURLBck) > 0 {
558 bckArgs.origURLBck = origURLBck[0]
559 }
560 bck, err := bckArgs.initAndTry(apireq.bck.Name)
561 freeInitBckArgs(bckArgs)
562
563 objName := apireq.items[1]
564 apiReqFree(apireq)
565 if err != nil {
566 return
567 }
568
569 // 3. redirect
570 smap := p.owner.smap.get()
571 si, err := cluster.HrwTarget(bck.MakeUname(objName), &smap.Smap)
572 if err != nil {
573 p.writeErr(w, r, err)
574 return
575 }
576 if glog.FastV(4, glog.SmoduleAIS) {
577 glog.Infof("%s %s/%s => %s", r.Method, bck.Name, objName, si)
578 }
579 redirectURL := p.redirectURL(r, si, time.Now() /*started*/, cmn.NetIntraData)
580 http.Redirect(w, r, redirectURL, http.StatusMovedPermanently)
581
582 // 4. stats
583 p.statsT.Add(stats.GetCount, 1)
584}
585
586// PUT /v1/objects/bucket-name/object-name
587func (p *proxy) httpobjput(w http.ResponseWriter, r *http.Request) {

Callers 2

objectHandlerMethod · 0.95
httpCloudHandlerMethod · 0.95

Calls 15

redirectURLMethod · 0.95
HrwTargetFunction · 0.92
FastVFunction · 0.92
InfofFunction · 0.92
apiReqAllocFunction · 0.85
apiReqFreeFunction · 0.85
allocInitBckArgsFunction · 0.85
shouldHeadRemBFunction · 0.85
freeInitBckArgsFunction · 0.85
parseReqMethod · 0.80
initAndTryMethod · 0.80
writeErrMethod · 0.80

Tested by

no test coverage detected