Files
Reloader/internal/pkg/events/recorder.go
T

61 lines
1.5 KiB
Go

package events
import (
"fmt"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/record"
)
const (
// EventTypeNormal represents a normal event.
EventTypeNormal = corev1.EventTypeNormal
// EventTypeWarning represents a warning event.
EventTypeWarning = corev1.EventTypeWarning
// ReasonReloaded indicates a workload was successfully reloaded.
ReasonReloaded = "Reloaded"
// ReasonReloadFailed indicates a workload reload failed.
ReasonReloadFailed = "ReloadFailed"
)
// Recorder wraps the Kubernetes event recorder.
type Recorder struct {
recorder record.EventRecorder
}
// NewRecorder creates a new event Recorder.
func NewRecorder(recorder record.EventRecorder) *Recorder {
if recorder == nil {
return nil
}
return &Recorder{recorder: recorder}
}
// ReloadSuccess records a successful reload event.
func (r *Recorder) ReloadSuccess(object runtime.Object, resourceType, resourceName string) {
if r == nil || r.recorder == nil {
return
}
r.recorder.Event(
object,
EventTypeNormal,
ReasonReloaded,
fmt.Sprintf("Reloaded due to %s %s change", resourceType, resourceName),
)
}
// ReloadFailed records a failed reload event.
func (r *Recorder) ReloadFailed(object runtime.Object, resourceType, resourceName string, err error) {
if r == nil || r.recorder == nil {
return
}
r.recorder.Event(
object,
EventTypeWarning,
ReasonReloadFailed,
fmt.Sprintf("Failed to reload due to %s %s change: %v", resourceType, resourceName, err),
)
}