MCPcopy
hub / github.com/cubefs/cubefs / DeleteCaps

Method DeleteCaps

authnode/cluster.go:209–246  ·  view source on GitHub ↗

DeleteCaps delete caps from the key

(id string, keyInfo *keystore.KeyInfo)

Source from the content-addressed store, hash-verified

207
208// DeleteCaps delete caps from the key
209func (c *Cluster) DeleteCaps(id string, keyInfo *keystore.KeyInfo) (res *keystore.KeyInfo, err error) {
210 var (
211 delCaps *caps.Caps
212 curCaps *caps.Caps
213 newCaps []byte
214 )
215 c.fsm.opKeyMutex.Lock()
216 defer c.fsm.opKeyMutex.Unlock()
217 if res, err = c.fsm.GetKey(id); err != nil {
218 err = proto.ErrKeyNotExists
219 goto errHandler
220 }
221
222 delCaps = &caps.Caps{}
223 if err = delCaps.Init(keyInfo.Caps); err != nil {
224 return
225 }
226 curCaps = &caps.Caps{}
227 if err = curCaps.Init(res.Caps); err != nil {
228 return
229 }
230
231 curCaps.Delete(delCaps)
232
233 if newCaps, err = json.Marshal(curCaps); err != nil {
234 goto errHandler
235 }
236 res.Caps = newCaps
237 if err = c.syncDeleteCaps(res); err != nil {
238 goto errHandler
239 }
240 c.fsm.PutKey(res)
241 return
242errHandler:
243 err = fmt.Errorf("action[DeleteCaps], clusterID[%v] ID:%v, err:%v ", c.Name, keyInfo, err.Error())
244 log.LogError(errors.Stack(err))
245 return
246}

Callers 2

handleDeleteCapsMethod · 0.80
handleOSDeleteCapsMethod · 0.80

Calls 12

syncDeleteCapsMethod · 0.95
LogErrorFunction · 0.92
StackFunction · 0.92
LockMethod · 0.80
PutKeyMethod · 0.80
InitMethod · 0.65
DeleteMethod · 0.65
MarshalMethod · 0.65
ErrorfMethod · 0.65
ErrorMethod · 0.65
UnlockMethod · 0.45
GetKeyMethod · 0.45

Tested by

no test coverage detected