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

Method hpostBucket

ais/proxy.go:1007–1212  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request, msg *apc.ActionMsg, bucket string)

Source from the content-addressed store, hash-verified

1005}
1006
1007func (p *proxy) hpostBucket(w http.ResponseWriter, r *http.Request, msg *apc.ActionMsg, bucket string) {
1008 query := r.URL.Query()
1009 bck, err := newBckFromQ(bucket, query, nil)
1010 if err != nil {
1011 p.writeErr(w, r, err)
1012 return
1013 }
1014 if bck.IsRemoteAIS() {
1015 // forward to remote AIS as is, with distinct exception
1016 switch msg.Action {
1017 case apc.ActInvalListCache:
1018 default:
1019 p.reverseReqRemote(w, r, msg, bck.Bucket())
1020 return
1021 }
1022 }
1023 if msg.Action == apc.ActCreateBck {
1024 p.hpostCreateBucket(w, r, query, msg, bck)
1025 return
1026 }
1027
1028 // only the primary can do metasync
1029 xactRecord := xact.Table[msg.Action]
1030 if xactRecord.Metasync {
1031 if p.forwardCP(w, r, msg, bucket) {
1032 return
1033 }
1034 }
1035
1036 // Initialize bucket; if doesn't exist try creating it on the fly
1037 // but only if it's a remote bucket (and user did not explicitly disallowed).
1038 bckArgs := bckInitArgs{p: p, w: w, r: r, bck: bck, msg: msg, query: query}
1039 bckArgs.createAIS = false
1040 bckArgs.headRemB = shouldHeadRemB()
1041 if bck, err = bckArgs.initAndTry(bck.Name); err != nil {
1042 return
1043 }
1044
1045 //
1046 // {action} on bucket
1047 //
1048 switch msg.Action {
1049 case apc.ActMoveBck:
1050 bckFrom := bck
1051 bckTo, err := newBckFromQuname(query, true /*required*/)
1052 if err != nil {
1053 p.writeErr(w, r, err)
1054 return
1055 }
1056 if !bckFrom.IsAIS() && bckFrom.Backend() == nil {
1057 p.writeErrf(w, r, "source bucket %q must be an AIS bucket", bckFrom)
1058 return
1059 }
1060 if bckTo.IsRemote() {
1061 p.writeErrf(w, r, "destination bucket %q must be an AIS bucket", bckTo)
1062 return
1063 }
1064 if bckFrom.Name == bckTo.Name {

Callers 1

httpbckpostMethod · 0.95

Calls 15

reverseReqRemoteMethod · 0.95
hpostCreateBucketMethod · 0.95
forwardCPMethod · 0.95
initAndTryMethod · 0.95
renameBucketMethod · 0.95
initMethod · 0.95
tryMethod · 0.95
tcbMethod · 0.95
tcobjsMethod · 0.95
checkAccessMethod · 0.95
createBucketMethod · 0.95
doListRangeMethod · 0.95

Tested by

no test coverage detected