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

Method httpbckhead

ais/target.go:854–922  ·  view source on GitHub ↗

HEAD /v1/buckets/bucket-name

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

Source from the content-addressed store, hash-verified

852
853// HEAD /v1/buckets/bucket-name
854func (t *target) httpbckhead(w http.ResponseWriter, r *http.Request) {
855 var (
856 bucketProps cos.SimpleKVs
857 err error
858 code int
859 ctx = context.Background()
860 hdr = w.Header()
861 )
862 apireq := apiReqAlloc(1, apc.URLPathBuckets.L, false)
863 defer apiReqFree(apireq)
864 if err = t.parseReq(w, r, apireq); err != nil {
865 return
866 }
867 inBMD := true
868 if err = apireq.bck.Init(t.owner.bmd); err != nil {
869 if !cmn.IsErrRemoteBckNotFound(err) { // is ais
870 t.writeErr(w, r, err)
871 return
872 }
873 inBMD = false
874 }
875 if glog.FastV(4, glog.SmoduleAIS) {
876 pid := apireq.query.Get(apc.QparamProxyID)
877 glog.Infof("%s %s <= %s", r.Method, apireq.bck, pid)
878 }
879
880 debug.Assert(!apireq.bck.IsAIS())
881
882 if apireq.bck.IsHTTP() {
883 originalURL := apireq.query.Get(apc.QparamOrigURL)
884 ctx = context.WithValue(ctx, cos.CtxOriginalURL, originalURL)
885 if !inBMD && originalURL == "" {
886 err = cmn.NewErrRemoteBckNotFound(apireq.bck.Bucket())
887 t.writeErrSilent(w, r, err, http.StatusNotFound)
888 return
889 }
890 }
891 // + cloud
892 bucketProps, code, err = t.Backend(apireq.bck).HeadBucket(ctx, apireq.bck)
893 if err != nil {
894 if !inBMD {
895 if code == http.StatusNotFound {
896 err = cmn.NewErrRemoteBckNotFound(apireq.bck.Bucket())
897 t.writeErrSilent(w, r, err, code)
898 } else {
899 err = cmn.NewErrFailedTo(t, "HEAD remote", apireq.bck, err, code)
900 if cos.IsParseBool(apireq.query.Get(apc.QparamSilent)) {
901 t.writeErrSilent(w, r, err, code)
902 } else {
903 t.writeErr(w, r, err, code)
904 }
905 }
906 return
907 }
908 glog.Warningf("%s: bucket %s, err: %v(%d)", t, apireq.bck, err, code)
909 bucketProps = make(cos.SimpleKVs)
910 bucketProps[apc.HdrBackendProvider] = apireq.bck.Provider
911 bucketProps[apc.HdrRemoteOffline] = strconv.FormatBool(apireq.bck.IsRemote())

Callers 1

bucketHandlerMethod · 0.95

Calls 15

BackendMethod · 0.95
IsErrRemoteBckNotFoundFunction · 0.92
FastVFunction · 0.92
InfofFunction · 0.92
AssertFunction · 0.92
NewErrRemoteBckNotFoundFunction · 0.92
NewErrFailedToFunction · 0.92
IsParseBoolFunction · 0.92
WarningfFunction · 0.92
ErrorfFunction · 0.92
apiReqAllocFunction · 0.85
apiReqFreeFunction · 0.85

Tested by

no test coverage detected