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

Method headRemoteBck

ais/proxy.go:2907–2944  ·  view source on GitHub ↗
(bck *cmn.Bck, q url.Values)

Source from the content-addressed store, hash-verified

2905}
2906
2907func (p *proxy) headRemoteBck(bck *cmn.Bck, q url.Values) (header http.Header, statusCode int, err error) {
2908 var (
2909 tsi *cluster.Snode
2910 path = apc.URLPathBuckets.Join(bck.Name)
2911 )
2912 if tsi, err = p.owner.smap.get().GetRandTarget(); err != nil {
2913 return
2914 }
2915 if bck.IsCloud() {
2916 config := cmn.GCO.Get()
2917 if _, ok := config.Backend.Providers[bck.Provider]; !ok {
2918 err = &cmn.ErrMissingBackend{Provider: bck.Provider}
2919 statusCode = http.StatusNotFound
2920 err = cmn.NewErrFailedTo(p, "lookup Cloud bucket", bck, err, statusCode)
2921 return
2922 }
2923 }
2924 q = bck.AddToQuery(q)
2925 cargs := allocCargs()
2926 {
2927 cargs.si = tsi
2928 cargs.req = cmn.HreqArgs{Method: http.MethodHead, Base: tsi.URL(cmn.NetIntraData), Path: path, Query: q}
2929 cargs.timeout = apc.DefaultTimeout
2930 }
2931 res := p.call(cargs)
2932 if res.status == http.StatusNotFound {
2933 err = cmn.NewErrRemoteBckNotFound(bck)
2934 } else if res.status == http.StatusGone {
2935 err = cmn.NewErrRemoteBckOffline(bck)
2936 } else {
2937 err = res.err
2938 header = res.header
2939 }
2940 statusCode = res.status
2941 freeCargs(cargs)
2942 freeCR(res)
2943 return
2944}
2945
2946//////////////////
2947// reverseProxy //

Callers 3

httpbckheadMethod · 0.95
setBucketPropsMethod · 0.95
_lookupMethod · 0.80

Calls 14

NewErrFailedToFunction · 0.92
NewErrRemoteBckNotFoundFunction · 0.92
NewErrRemoteBckOfflineFunction · 0.92
allocCargsFunction · 0.85
freeCargsFunction · 0.85
freeCRFunction · 0.85
JoinMethod · 0.80
GetRandTargetMethod · 0.80
getMethod · 0.65
GetMethod · 0.65
IsCloudMethod · 0.45
AddToQueryMethod · 0.45

Tested by

no test coverage detected