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

Method httpbckput

ais/proxy.go:932–991  ·  view source on GitHub ↗

PUT { action } /v1/buckets/bucket-name

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

Source from the content-addressed store, hash-verified

930
931// PUT { action } /v1/buckets/bucket-name
932func (p *proxy) httpbckput(w http.ResponseWriter, r *http.Request) {
933 var (
934 msg *apc.ActionMsg
935 query = r.URL.Query()
936 apiItems, err = p.checkRESTItems(w, r, 1, true, apc.URLPathBuckets.L)
937 )
938 if err != nil {
939 return
940 }
941 bucket := apiItems[0]
942 bck, err := newBckFromQ(bucket, query, nil)
943 if err != nil {
944 p.writeErr(w, r, err)
945 return
946 }
947 if msg, err = p.readActionMsg(w, r); err != nil {
948 return
949 }
950 bckArgs := bckInitArgs{p: p, w: w, r: r, bck: bck, msg: msg, query: query}
951 bckArgs.createAIS = false
952 bckArgs.headRemB = shouldHeadRemB()
953 if bck, err = bckArgs.initAndTry(bck.Name); err != nil {
954 return
955 }
956 switch msg.Action {
957 case apc.ActArchive:
958 var (
959 bckFrom = bck
960 archMsg = &cmn.ArchiveMsg{}
961 )
962 if err := cos.MorphMarshal(msg.Value, archMsg); err != nil {
963 p.writeErrf(w, r, cmn.FmtErrMorphUnmarshal, p.si, msg.Action, msg.Value, err)
964 return
965 }
966 bckTo := cluster.CloneBck(&archMsg.ToBck)
967 if bckTo.IsEmpty() {
968 bckTo = bckFrom
969 } else {
970 bckToArgs := bckInitArgs{p: p, w: w, r: r, bck: bckTo, msg: msg, perms: apc.AcePUT, query: query}
971 bckToArgs.createAIS = false
972 bckToArgs.headRemB = shouldHeadRemB()
973 if bckTo, err = bckToArgs.initAndTry(bckTo.Name); err != nil {
974 p.writeErr(w, r, err)
975 return
976 }
977 }
978 if _, err := cos.Mime(archMsg.Mime, archMsg.ArchName); err != nil {
979 p.writeErr(w, r, err)
980 return
981 }
982 xactID, err := p.createArchMultiObj(bckFrom, bckTo, msg)
983 if err == nil {
984 w.Write([]byte(xactID))
985 } else {
986 p.writeErr(w, r, err)
987 }
988 default:
989 p.writeErrAct(w, r, msg.Action)

Callers 1

bucketHandlerMethod · 0.95

Calls 14

initAndTryMethod · 0.95
createArchMultiObjMethod · 0.95
MorphMarshalFunction · 0.92
CloneBckFunction · 0.92
MimeFunction · 0.92
newBckFromQFunction · 0.85
shouldHeadRemBFunction · 0.85
checkRESTItemsMethod · 0.80
writeErrMethod · 0.80
readActionMsgMethod · 0.80
writeErrfMethod · 0.80
writeErrActMethod · 0.80

Tested by

no test coverage detected