in dev/import-beats/kibana.go [523:584]
func stripReferencesToEventModuleInQuery(object mapStr, objectKey, moduleName string, dataStreamNames []string) (mapStr, error) {
objectValue, err := object.getValue(objectKey)
if _, ok := objectValue.(map[string]interface{}); !ok {
return object, nil // not a map object
}
languageKey := objectKey + ".language"
queryKey := objectKey + ".query"
queryValue, err := object.getValue(queryKey)
if err != nil && err != errKeyNotFound {
return nil, fmt.Errorf("retrieving key '%s' failed: %v", queryKey, err)
} else if err == errKeyNotFound {
return object, nil // nothing to adjust
}
query, ok := queryValue.(string)
if !ok {
return object, nil // complex query (not a simple string)
}
if query == "" {
return object, nil // empty query field
}
query = strings.ReplaceAll(query, ": ", ":")
query = strings.ReplaceAll(query, " :", ":")
query = strings.ReplaceAll(query, `"`, "")
if strings.Contains(query, "event.module:"+moduleName) && (strings.Contains(query, "metricset.name:") || strings.Contains(query, "fileset.name:")) {
query = strings.ReplaceAll(query, "event.module:"+moduleName, "")
query = strings.ReplaceAll(query, "metricset.name:", fmt.Sprintf("data_stream.dataset:%s.", moduleName))
query = strings.ReplaceAll(query, "fileset.name:", fmt.Sprintf("data_stream.dataset:%s.", moduleName))
query = strings.TrimSpace(query)
if strings.HasPrefix(query, "AND ") {
query = query[4:]
}
_, err := object.put(queryKey, query)
if err != nil {
return nil, fmt.Errorf("replacing key '%s' failed: %v", queryKey, err)
}
} else if strings.Contains(query, "event.module:"+moduleName) {
var eventDataStreams []string
for _, dataStreamName := range dataStreamNames {
eventDataStreams = append(eventDataStreams, fmt.Sprintf("data_stream.dataset:%s.%s", moduleName, dataStreamName))
}
value := " (" + strings.Join(eventDataStreams, " OR ") + ") "
query = strings.ReplaceAll(query, "event.module:"+moduleName, value)
query = strings.TrimSpace(query)
_, err := object.put(queryKey, query)
if err != nil {
return nil, fmt.Errorf("replacing key '%s' failed: %v", queryKey, err)
}
_, err = object.put(languageKey, "kuery")
if err != nil {
return nil, fmt.Errorf("replacing key '%s' failed: %v", languageKey, err)
}
}
return object, nil
}