mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-04-27 19:47:31 +00:00
* Remove `logger` module * Remove `shared` module * Move `cli` folder contents into project root * Fix linter * Change the module name from `github.com/kubeshark/kubeshark/cli` to `github.com/kubeshark/kubeshark` * Set the default `Makefile` rule to `build` * Add `lint` rule * Fix the linter errors
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"context"
|
|
"regexp"
|
|
"strings"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/watch"
|
|
)
|
|
|
|
type EventWatchHelper struct {
|
|
kubernetesProvider *Provider
|
|
NameRegexFilter *regexp.Regexp
|
|
Kind string
|
|
}
|
|
|
|
func NewEventWatchHelper(kubernetesProvider *Provider, NameRegexFilter *regexp.Regexp, kind string) *EventWatchHelper {
|
|
return &EventWatchHelper{
|
|
kubernetesProvider: kubernetesProvider,
|
|
NameRegexFilter: NameRegexFilter,
|
|
Kind: kind,
|
|
}
|
|
}
|
|
|
|
// Implements the EventFilterer Interface
|
|
func (wh *EventWatchHelper) Filter(wEvent *WatchEvent) (bool, error) {
|
|
event, err := wEvent.ToEvent()
|
|
if err != nil {
|
|
return false, nil
|
|
}
|
|
if !wh.NameRegexFilter.MatchString(event.Name) {
|
|
return false, nil
|
|
}
|
|
if !strings.EqualFold(event.Regarding.Kind, wh.Kind) {
|
|
return false, nil
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
// Implements the WatchCreator Interface
|
|
func (wh *EventWatchHelper) NewWatcher(ctx context.Context, namespace string) (watch.Interface, error) {
|
|
watcher, err := wh.kubernetesProvider.clientSet.EventsV1().Events(namespace).Watch(ctx, metav1.ListOptions{Watch: true})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return watcher, nil
|
|
}
|