in server/resource/v1/kv_resource.go [319:358]
func (r *KVResource) DeleteList(rctx *restful.Context) {
project := rctx.ReadPathParameter(common.PathParameterProject)
domain := ReadDomain(rctx.Ctx)
b := new(DeleteBody)
if err := json.NewDecoder(rctx.ReadRequest().Body).Decode(b); err != nil {
WriteErrResponse(rctx, config.ErrInvalidParams, fmt.Sprintf(FmtReadRequestError, err))
return
}
err := validateDeleteList(domain, project)
if err != nil {
WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
return
}
kvs, err := kvsvc.FindManyAndDelete(rctx.Ctx, b.IDs, project, domain)
if err != nil {
if err == datasource.ErrKeyNotExists {
rctx.WriteHeader(http.StatusNoContent)
return
}
openlog.Error("delete list failed, ", openlog.WithTags(openlog.Tags{
"kvIDs": b.IDs,
"error": err.Error(),
}))
WriteError(rctx, err)
return
}
for _, kv := range kvs {
err = pubsub.Publish(&pubsub.KVChangeEvent{
Key: kv.Key,
Labels: kv.Labels,
Project: project,
DomainID: domain,
Action: pubsub.ActionDelete,
})
if err != nil {
openlog.Warn("lost kv change event:" + err.Error())
}
}
rctx.WriteHeader(http.StatusNoContent)
}