-
Notifications
You must be signed in to change notification settings - Fork 69
/
Copy pathfeedback.go
83 lines (69 loc) · 2.39 KB
/
feedback.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// SPDX-FileCopyrightText: 2024 SAP SE or an SAP affiliate company and Gardener contributors
//
// SPDX-License-Identifier: Apache-2.0
package source
import (
"fmt"
"github.com/gardener/controller-manager-library/pkg/logger"
"github.com/gardener/controller-manager-library/pkg/resources"
corev1 "k8s.io/api/core/v1"
)
////////////////////////////////////////////////////////////////////////////////
// EventFeedback
////////////////////////////////////////////////////////////////////////////////
type EventFeedback struct {
source resources.Object
events map[string]string
}
func NewEventFeedback(obj resources.Object, events map[string]string) DNSFeedback {
return &EventFeedback{obj, events}
}
func (this *EventFeedback) Ready(logger logger.LogContext, dnsname, msg string, _ *DNSState) {
if msg == "" {
msg = "dns entry is ready"
}
this.event(logger, dnsname, msg)
}
func (this *EventFeedback) Pending(logger logger.LogContext, dnsname, msg string, _ *DNSState) {
if msg == "" {
msg = "dns entry is pending"
}
this.event(logger, dnsname, msg)
}
func (this *EventFeedback) Failed(logger logger.LogContext, dnsname string, err error, _ *DNSState) {
if err == nil {
err = fmt.Errorf("dns entry is errorneous")
}
this.event(logger, dnsname, err.Error())
}
func (this *EventFeedback) Invalid(logger logger.LogContext, dnsname string, msg error, _ *DNSState) {
if msg == nil {
msg = fmt.Errorf("dns entry is invalid")
}
this.event(logger, dnsname, msg.Error())
}
func (this *EventFeedback) Deleted(logger logger.LogContext, dnsname string, msg string) {
if msg == "" {
msg = "dns entry deleted"
}
this.event(logger, dnsname, msg)
}
func (this *EventFeedback) Succeeded(_ logger.LogContext) {
}
func (this *EventFeedback) event(logger logger.LogContext, dnsname, msg string) {
if this.events == nil || msg != this.events[dnsname] {
key := this.source.ClusterKey()
this.events[dnsname] = msg
if dnsname != "" {
logger.Infof("event for %q(%s): %s", key, dnsname, msg)
this.source.Event(corev1.EventTypeNormal, "dns-annotation",
fmt.Sprintf("%s: %s", dnsname, msg))
} else {
logger.Infof("event for %q: %s", key, msg)
this.source.Event(corev1.EventTypeNormal, "dns-annotation", msg)
}
}
}
func (this *EventFeedback) Created(logger logger.LogContext, dnsname string, name resources.ObjectName) {
this.event(logger, dnsname, fmt.Sprintf("created dns entry object %s", name))
}