PUT { action } /v1/buckets/bucket-name
(w http.ResponseWriter, r *http.Request)
| 930 | |
| 931 | // PUT { action } /v1/buckets/bucket-name |
| 932 | func (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) |
no test coverage detected