in server/datasource/etcd/kv/kv_dao.go [549:579]
func matchLabelsSearch(ctx context.Context, domain, project string, regex *regexp.Regexp, opts datasource.FindOptions) (*model.KVResponse, error) {
openlog.Debug("using labels to search kv")
kvs, _, err := etcdadpt.List(ctx, key.KVList(domain, project))
if err != nil {
return nil, err
}
result := &model.KVResponse{
Data: []*model.KVDoc{},
}
for _, kv := range kvs {
var doc model.KVDoc
err := json.Unmarshal(kv.Value, &doc)
if err != nil {
openlog.Error("decode to KVList error: " + err.Error())
continue
}
if !filterMatch(&doc, opts, regex) {
continue
}
datasource.ClearPart(&doc)
result.Data = append(result.Data, &doc)
result.Total++
if IsUniqueFind(opts) {
break
}
}
return result, nil
}