implement filters
This commit is contained in:
parent
d28a4bec05
commit
db30464aef
@ -5,6 +5,7 @@ import (
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"git.k-space.ee/k-space/logmower-shipper/pkg/file"
|
||||
@ -31,8 +32,8 @@ var App = &cli.App{
|
||||
//TODO: &cli.BoolFlag{Name: "normalize-log-level", Usage: "Normalize log.level values to Syslog defined keywords"},
|
||||
//TODO: &cli.BoolFlag{Name: "parse-json"},
|
||||
//
|
||||
// &cli.StringFlag{Category: "k8s metadata", Name: "pod-namespace", EnvVars: []string{"KUBE_POD_NAMESPACE"}},
|
||||
// &cli.StringFlag{Category: "k8s metadata", Name: "node-name", EnvVars: []string{"KUBE_NODE_NAME"}, Required: true},
|
||||
&cli.StringSliceFlag{Category: "selectors", Name: "pod-namespace", EnvVars: []string{"KUBE_POD_NAMESPACE"}},
|
||||
&cli.StringSliceFlag{Category: "selectors", Name: "pod-prefix", EnvVars: []string{"KUBE_NODE_NAME"}},
|
||||
//
|
||||
&cli.StringFlag{Category: "secrets", Name: "mongo-uri", EnvVars: []string{"MONGO_URI"}, Usage: "mongodb://foo:bar@host:27017/database", Required: true},
|
||||
},
|
||||
@ -48,6 +49,7 @@ var App = &cli.App{
|
||||
},
|
||||
|
||||
Action: func(ctx *cli.Context) error {
|
||||
filterNamespace, filterPodPrefixes := sliceToMap(ctx.StringSlice("pod-namespace")), ctx.StringSlice("pod-prefix")
|
||||
var wg sync.WaitGroup
|
||||
|
||||
log.Printf("%s %s starting", ctx.App.Name, ctx.App.Version)
|
||||
@ -94,6 +96,14 @@ var App = &cli.App{
|
||||
continue
|
||||
}
|
||||
|
||||
if _, ok := filterNamespace[kubeInfo.Namespace]; !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
if ok := hasSlicePrefix(kubeInfo.Pod, filterPodPrefixes); !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
promWatcherFilesStarted.Add(1)
|
||||
|
||||
wg.Add(1)
|
||||
@ -156,3 +166,22 @@ func simulateInitialCreates(dirName string, eventChan chan<- fsnotify.Event) err
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func sliceToMap[T comparable](sl []T) map[T]interface{} {
|
||||
m := make(map[T]interface{})
|
||||
|
||||
for _, k := range sl {
|
||||
m[k] = nil
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func hasSlicePrefix(s string, sl []string) bool {
|
||||
for _, prefix := range sl {
|
||||
if strings.HasPrefix(s, prefix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user