in server/resource/v1/kv_resource.go [93:139]
func (r *KVResource) Put(rctx *restful.Context) {
var err error
kvID := rctx.ReadPathParameter(common.PathParamKVID)
project := rctx.ReadPathParameter(common.PathParameterProject)
kvReq := new(model.UpdateKVRequest)
if err = readRequest(rctx, kvReq); err != nil {
WriteErrResponse(rctx, config.ErrInvalidParams, fmt.Sprintf(FmtReadRequestError, err))
return
}
domain := ReadDomain(rctx.Ctx)
kvReq.ID = kvID
kvReq.Domain = domain
kvReq.Project = project
err = validator.Validate(kvReq)
if err != nil {
WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kv, err := kvsvc.Update(rctx.Ctx, kvReq)
if err != nil {
openlog.Error(fmt.Sprintf("put [%s] err:%s", kvID, err.Error()))
if err == datasource.ErrKeyNotExists {
WriteErrResponse(rctx, config.ErrRecordNotExists, err.Error())
return
}
WriteError(rctx, err)
return
}
err = pubsub.Publish(&pubsub.KVChangeEvent{
Key: kv.Key,
Labels: kv.Labels,
Project: project,
DomainID: kv.Domain,
Action: pubsub.ActionPut,
})
if err != nil {
openlog.Warn("lost kv change event when put:" + err.Error())
}
openlog.Info(
fmt.Sprintf("put [%s] success", kvID))
err = writeResponse(rctx, kv)
if err != nil {
openlog.Error(err.Error())
}
}