Skip to content

Commit 7f26fb9

Browse files
committed
Add the external package
1 parent 29edd53 commit 7f26fb9

File tree

2 files changed

+55
-49
lines changed

2 files changed

+55
-49
lines changed

cmd/translator.go

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package main
22

33
import "C"
4-
import (
5-
"regexp"
6-
)
4+
import . "github.com/sysdiglabs/sysdigQueryTranslator/pkg/translator"
75

86
func main() {
97
}
@@ -12,52 +10,7 @@ func main() {
1210
func RemoveSysdigLabelsInExpression(cExpr, cExcludeScope *C.char) *C.char {
1311
expr := C.GoString(cExpr)
1412
excludeScope := C.GoString(cExcludeScope)
15-
// Remove scopes of sysdig kube_cluster_name=~$cluster for example
16-
scope := "kube_cluster_name|kube_namespace_name|kube_pod_name|kube_workload_name|kube_node_name|agent_tag_cluster|instance|node|namespace|host_hostname"
17-
if excludeScope != "" {
18-
scope = scope + "|" + excludeScope
19-
}
20-
regex := regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\\$[\\w_]*,")
21-
expr = regex.ReplaceAllString(expr, "")
22-
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\"\",")
23-
expr = regex.ReplaceAllString(expr, "")
24-
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\\$[\\w_]*\\}")
25-
expr = regex.ReplaceAllString(expr, "}")
26-
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\"\"}")
27-
expr = regex.ReplaceAllString(expr, "}")
28-
// Remove the sysdig aggregation
29-
aggregation := "kube_cluster_name|kube_namespace_name|kube_pod_name|kube_workload_name|kube_node_name|agent_tag_cluster"
30-
aggregation = aggregation + "|" + excludeScope
31-
regex = regexp.MustCompile("(?:" + aggregation + ")")
32-
expr = regex.ReplaceAllString(expr, "")
33-
// Remove extra commas
34-
regex = regexp.MustCompile("(?:,+)(?:\\s*)(?:,+)")
35-
expr = regex.ReplaceAllString(expr, ",")
36-
regex = regexp.MustCompile(",\\s*\\}")
37-
expr = regex.ReplaceAllString(expr, "}")
38-
regex = regexp.MustCompile("\\{\\s*,")
39-
expr = regex.ReplaceAllString(expr, "{")
40-
regex = regexp.MustCompile(",\\s*\\)")
41-
expr = regex.ReplaceAllString(expr, ")")
42-
regex = regexp.MustCompile("\\(\\s*,")
43-
expr = regex.ReplaceAllString(expr, "(")
44-
// Remove duplicate \\
45-
regex = regexp.MustCompile("\\\\")
46-
expr = regex.ReplaceAllString(expr, "")
47-
// Remove empty by ()
48-
regex = regexp.MustCompile("by\\s*\\(\\s*\\)")
49-
expr = regex.ReplaceAllString(expr, "")
50-
// Remove empty scope
51-
regex = regexp.MustCompile("\\{\\s*\\}")
52-
expr = regex.ReplaceAllString(expr, "")
53-
// Remove 2 or more whitespaces
54-
regex = regexp.MustCompile("[ \\t]{2,}")
55-
expr = regex.ReplaceAllString(expr, " ")
56-
// Remove the extra\n
57-
regex = regexp.MustCompile("\\n")
58-
expr = regex.ReplaceAllString(expr, "")
59-
// Add trailing \n, very important don't touch
60-
expr = expr + "\n"
13+
expr = RemoveSysdigLabels(expr, excludeScope)
6114
cStr := C.CString(expr)
6215
return cStr
6316
}

pkg/translator/translator.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package translator
2+
3+
import "regexp"
4+
5+
func RemoveSysdigLabels(expr, excludeScope string) string {
6+
// Remove scopes of sysdig kube_cluster_name=~$cluster for example
7+
scope := "kube_cluster_name|kube_namespace_name|kube_pod_name|kube_workload_name|kube_node_name|agent_tag_cluster|instance|node|namespace|host_hostname"
8+
if excludeScope != "" {
9+
scope = scope + "|" + excludeScope
10+
}
11+
regex := regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\\$[\\w_]*,")
12+
expr = regex.ReplaceAllString(expr, "")
13+
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\"\",")
14+
expr = regex.ReplaceAllString(expr, "")
15+
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\\$[\\w_]*\\}")
16+
expr = regex.ReplaceAllString(expr, "}")
17+
regex = regexp.MustCompile("(?:" + scope + ")" + "(?:=|=~|!=|!~)\"\"}")
18+
expr = regex.ReplaceAllString(expr, "}")
19+
// Remove the sysdig aggregation
20+
aggregation := "kube_cluster_name|kube_namespace_name|kube_pod_name|kube_workload_name|kube_node_name|agent_tag_cluster"
21+
aggregation = aggregation + "|" + excludeScope
22+
regex = regexp.MustCompile("(?:" + aggregation + ")")
23+
expr = regex.ReplaceAllString(expr, "")
24+
// Remove extra commas
25+
regex = regexp.MustCompile("(?:,+)(?:\\s*)(?:,+)")
26+
expr = regex.ReplaceAllString(expr, ",")
27+
regex = regexp.MustCompile(",\\s*\\}")
28+
expr = regex.ReplaceAllString(expr, "}")
29+
regex = regexp.MustCompile("\\{\\s*,")
30+
expr = regex.ReplaceAllString(expr, "{")
31+
regex = regexp.MustCompile(",\\s*\\)")
32+
expr = regex.ReplaceAllString(expr, ")")
33+
regex = regexp.MustCompile("\\(\\s*,")
34+
expr = regex.ReplaceAllString(expr, "(")
35+
// Remove duplicate \\
36+
regex = regexp.MustCompile("\\\\")
37+
expr = regex.ReplaceAllString(expr, "")
38+
// Remove empty by ()
39+
regex = regexp.MustCompile("by\\s*\\(\\s*\\)")
40+
expr = regex.ReplaceAllString(expr, "")
41+
// Remove empty scope
42+
regex = regexp.MustCompile("\\{\\s*\\}")
43+
expr = regex.ReplaceAllString(expr, "")
44+
// Remove 2 or more whitespaces
45+
regex = regexp.MustCompile("[ \\t]{2,}")
46+
expr = regex.ReplaceAllString(expr, " ")
47+
// Remove the extra\n
48+
regex = regexp.MustCompile("\\n")
49+
expr = regex.ReplaceAllString(expr, "")
50+
// Add trailing \n, very important don't touch
51+
expr = expr + "\n"
52+
return expr
53+
}

0 commit comments

Comments
 (0)