implement filters
This commit is contained in:
parent
d28a4bec05
commit
db30464aef
@ -5,6 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"git.k-space.ee/k-space/logmower-shipper/pkg/file"
|
"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: "normalize-log-level", Usage: "Normalize log.level values to Syslog defined keywords"},
|
||||||
//TODO: &cli.BoolFlag{Name: "parse-json"},
|
//TODO: &cli.BoolFlag{Name: "parse-json"},
|
||||||
//
|
//
|
||||||
// &cli.StringFlag{Category: "k8s metadata", Name: "pod-namespace", EnvVars: []string{"KUBE_POD_NAMESPACE"}},
|
&cli.StringSliceFlag{Category: "selectors", 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-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},
|
&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 {
|
Action: func(ctx *cli.Context) error {
|
||||||
|
filterNamespace, filterPodPrefixes := sliceToMap(ctx.StringSlice("pod-namespace")), ctx.StringSlice("pod-prefix")
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
log.Printf("%s %s starting", ctx.App.Name, ctx.App.Version)
|
log.Printf("%s %s starting", ctx.App.Name, ctx.App.Version)
|
||||||
@ -94,6 +96,14 @@ var App = &cli.App{
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, ok := filterNamespace[kubeInfo.Namespace]; !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if ok := hasSlicePrefix(kubeInfo.Pod, filterPodPrefixes); !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
promWatcherFilesStarted.Add(1)
|
promWatcherFilesStarted.Add(1)
|
||||||
|
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
@ -156,3 +166,22 @@ func simulateInitialCreates(dirName string, eventChan chan<- fsnotify.Event) err
|
|||||||
|
|
||||||
return nil
|
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