/
event.go
49 lines (39 loc) · 920 Bytes
/
event.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
44
45
46
47
48
49
package agent
import (
netv1 "k8s.io/api/networking/v1"
"log/slog"
)
type eventType string
const (
addEvent eventType = "ADD"
deleteEvent eventType = "DELETE"
)
var _ slog.LogValuer = event{}
type event struct {
eventType eventType
ingress *netv1.Ingress
}
func (e event) name() string {
return e.ingress.Name
}
func (e event) namespace() string {
return e.ingress.Namespace
}
func (e event) hasAnnotation(annotation, value string) bool {
v, ok := e.ingress.Annotations[annotation]
return ok && v == value
}
func (e event) targetHosts() []string {
targets := make([]string, len(e.ingress.Spec.Rules))
for i := range e.ingress.Spec.Rules {
targets[i] = e.ingress.Spec.Rules[i].Host
}
return targets
}
func (e event) LogValue() slog.Value {
return slog.GroupValue(
slog.String("type", string(e.eventType)),
slog.String("name", e.name()),
slog.String("namespace", e.namespace()),
)
}