/
reporter.go
66 lines (53 loc) · 2 KB
/
reporter.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
package mariadb
import (
"fmt"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/record"
openstackv1beta1 "github.com/ianunruh/openstack-operator/api/v1beta1"
"github.com/ianunruh/openstack-operator/pkg/template"
)
const (
readyMessage = "MariaDB is running"
)
func NewReporter(recorder record.EventRecorder) *Reporter {
return &Reporter{
recorder: recorder,
}
}
type Reporter struct {
recorder record.EventRecorder
}
func (r *Reporter) Pending(instance *openstackv1beta1.MariaDB, err error, eventReason, message string) {
if err != nil {
message = fmt.Sprintf("%s: %v", message, err)
}
// suppress duplicate pending events
oldCondition := ReadyCondition(instance)
if oldCondition == nil || oldCondition.Reason != openstackv1beta1.ReasonPending {
r.recorder.Event(instance, corev1.EventTypeNormal, eventReason, message)
}
SetCondition(instance, openstackv1beta1.ConditionReady,
metav1.ConditionFalse, openstackv1beta1.ReasonPending, message)
}
func (r *Reporter) Running(instance *openstackv1beta1.MariaDB) {
r.recorder.Event(instance, corev1.EventTypeNormal, "MariaDBRunning", readyMessage)
SetCondition(instance, openstackv1beta1.ConditionReady,
metav1.ConditionTrue, openstackv1beta1.ReasonRunning, readyMessage)
}
func ReadyCondition(instance *openstackv1beta1.MariaDB) *metav1.Condition {
return meta.FindStatusCondition(instance.Status.Conditions, openstackv1beta1.ConditionReady)
}
func SetCondition(instance *openstackv1beta1.MariaDB, conditionType string, status metav1.ConditionStatus, reason, message string) {
meta.SetStatusCondition(&instance.Status.Conditions, metav1.Condition{
Type: conditionType,
Status: status,
Reason: reason,
Message: message,
ObservedGeneration: instance.Generation,
})
}
func AddReadyCheck(cw *template.ConditionWaiter, instance *openstackv1beta1.MariaDB) {
cw.AddReadyCheck(instance, instance.Status.Conditions)
}