/
analyser.go
43 lines (36 loc) · 1.08 KB
/
analyser.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package anomalydetector
import (
"github.com/go-logr/logr"
kapiv1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
kv1 "k8s.io/client-go/listers/core/v1"
)
//AnomalyDetector returns the list of pods that do not behave correctly according to the configuration
type AnomalyDetector interface {
GetPodsOutOfBounds() ([]*kapiv1.Pod, error)
}
//Config generic part of the configuration for anomalyDetector
type Config struct {
Selector labels.Selector
PodLister kv1.PodNamespaceLister
Logger logr.Logger
ExclusionFunc func(*kapiv1.Pod) (bool, error)
}
var _ AnomalyDetector = &Fake{}
//Fake should be used in test to mock an AnomalyDetector
type Fake struct {
Pods []*kapiv1.Pod
Err error
}
//GetPodsOutOfBounds implements AnomalyDetector
func (f *Fake) GetPodsOutOfBounds() ([]*kapiv1.Pod, error) {
return f.Pods, f.Err
}
//FakeFactory create a fake anomaly detector factory that return a Fake anomaly detector
func FakeFactory(p []*kapiv1.Pod, e error) Factory {
return func(cfg FactoryConfig) (AnomalyDetector, error) {
return &Fake{
Pods: p, Err: e,
}, nil
}
}