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

Method httpbckpatch

ais/proxy.go:1595–1658  ·  view source on GitHub ↗

PATCH /v1/buckets/bucket-name

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

Source from the content-addressed store, hash-verified

1593
1594// PATCH /v1/buckets/bucket-name
1595func (p *proxy) httpbckpatch(w http.ResponseWriter, r *http.Request) {
1596 var (
1597 err error
1598 msg *apc.ActionMsg
1599 propsToUpdate cmn.BucketPropsToUpdate
1600 xactID string
1601 nprops *cmn.BucketProps // complete instance of bucket props with propsToUpdate changes
1602 )
1603 apireq := apiReqAlloc(1, apc.URLPathBuckets.L, false)
1604 defer apiReqFree(apireq)
1605 if err = p.parseReq(w, r, apireq); err != nil {
1606 return
1607 }
1608 if msg, err = p.readActionMsg(w, r); err != nil {
1609 return
1610 }
1611 if err := cos.MorphMarshal(msg.Value, &propsToUpdate); err != nil {
1612 p.writeErrMsg(w, r, "invalid props-to-update value in apireq: "+msg.String())
1613 return
1614 }
1615 if p.forwardCP(w, r, msg, "httpbckpatch") {
1616 return
1617 }
1618 bck, perms := apireq.bck, apc.AcePATCH
1619 if propsToUpdate.Access != nil {
1620 perms |= apc.AceBckSetACL
1621 }
1622 bckArgs := bckInitArgs{p: p, w: w, r: r, bck: bck, msg: msg, skipBackend: true,
1623 perms: perms, dpq: apireq.dpq, query: apireq.query}
1624 bckArgs.createAIS = false
1625 bckArgs.headRemB = shouldHeadRemB()
1626 if bck, err = bckArgs.initAndTry(bck.Name); err != nil {
1627 return
1628 }
1629 if err = _checkAction(msg, apc.ActSetBprops, apc.ActResetBprops); err != nil {
1630 p.writeErr(w, r, err)
1631 return
1632 }
1633 // make and validate new props
1634 if nprops, err = p.makeNewBckProps(bck, &propsToUpdate); err != nil {
1635 p.writeErr(w, r, err)
1636 return
1637 }
1638 if !nprops.BackendBck.IsEmpty() {
1639 // backend must exist
1640 backendBck := cluster.CloneBck(&nprops.BackendBck)
1641 args := bckInitArgs{p: p, w: w, r: r, bck: backendBck, msg: msg, dpq: apireq.dpq, query: apireq.query}
1642 args.createAIS = false
1643 args.headRemB = true
1644 if _, err = args.initAndTry(backendBck.Name); err != nil {
1645 return
1646 }
1647 // init and validate
1648 if err = p.initBackendProp(nprops); err != nil {
1649 p.writeErr(w, r, err)
1650 return
1651 }
1652 }

Callers 1

bucketHandlerMethod · 0.95

Calls 15

forwardCPMethod · 0.95
initAndTryMethod · 0.95
makeNewBckPropsMethod · 0.95
initBackendPropMethod · 0.95
setBucketPropsMethod · 0.95
MorphMarshalFunction · 0.92
CloneBckFunction · 0.92
apiReqAllocFunction · 0.85
apiReqFreeFunction · 0.85
shouldHeadRemBFunction · 0.85
_checkActionFunction · 0.85
parseReqMethod · 0.80

Tested by

no test coverage detected