mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-04-28 20:06:36 +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
46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package kubernetes
|
|
|
|
import (
|
|
"context"
|
|
"regexp"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/apimachinery/pkg/watch"
|
|
)
|
|
|
|
type PodWatchHelper struct {
|
|
kubernetesProvider *Provider
|
|
NameRegexFilter *regexp.Regexp
|
|
}
|
|
|
|
func NewPodWatchHelper(kubernetesProvider *Provider, NameRegexFilter *regexp.Regexp) *PodWatchHelper {
|
|
return &PodWatchHelper{
|
|
kubernetesProvider: kubernetesProvider,
|
|
NameRegexFilter: NameRegexFilter,
|
|
}
|
|
}
|
|
|
|
// Implements the EventFilterer Interface
|
|
func (wh *PodWatchHelper) Filter(wEvent *WatchEvent) (bool, error) {
|
|
pod, err := wEvent.ToPod()
|
|
if err != nil {
|
|
return false, nil
|
|
}
|
|
|
|
if !wh.NameRegexFilter.MatchString(pod.Name) {
|
|
return false, nil
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
// Implements the WatchCreator Interface
|
|
func (wh *PodWatchHelper) NewWatcher(ctx context.Context, namespace string) (watch.Interface, error) {
|
|
watcher, err := wh.kubernetesProvider.clientSet.CoreV1().Pods(namespace).Watch(ctx, metav1.ListOptions{Watch: true})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return watcher, nil
|
|
}
|