Skip to content

Commit

Permalink
feat: event recorder for the logging finalizer
Browse files Browse the repository at this point in the history
Signed-off-by: Peter Wilcsinszky <[email protected]>
  • Loading branch information
pepov committed Feb 28, 2024
1 parent 6253ca1 commit feba2b1
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
25 changes: 14 additions & 11 deletions controllers/logging/logging_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
Expand All @@ -53,17 +54,19 @@ import (
)

// NewLoggingReconciler returns a new LoggingReconciler instance
func NewLoggingReconciler(client client.Client, log logr.Logger) *LoggingReconciler {
func NewLoggingReconciler(client client.Client, eventRecorder record.EventRecorder, log logr.Logger) *LoggingReconciler {
return &LoggingReconciler{
Client: client,
Log: log,
Client: client,
EventRecorder: eventRecorder,
Log: log,
}
}

// LoggingReconciler reconciles a Logging object
type LoggingReconciler struct {
client.Client
Log logr.Logger
EventRecorder record.EventRecorder
Log logr.Logger
}

// +kubebuilder:rbac:groups=logging.banzaicloud.io,resources=loggings;fluentbitagents;flows;clusterflows;outputs;clusteroutputs;nodeagents;fluentdconfigs;syslogngconfigs,verbs=get;list;watch;create;update;patch;delete
Expand Down Expand Up @@ -301,7 +304,9 @@ func (r *LoggingReconciler) fluentdConfigFinalizer(ctx context.Context, logging
}
}
} else if externalFluentd != nil {
return false, errors.NewWithDetails("refusing to delete logging resource while fluentdConfig exists", "fluentdConfig", logging.Status.FluentdConfigName)
msg := fmt.Sprintf("refused to delete logging resource while fluentdConfig %s exists", client.ObjectKeyFromObject(externalFluentd))
r.EventRecorder.Event(logging, corev1.EventTypeWarning, "DeletionRefused", msg)
return false, errors.New(msg)
}

if controllerutil.ContainsFinalizer(logging, fluentdConfigFinalizer) && externalFluentd == nil {
Expand All @@ -326,12 +331,10 @@ func (r *LoggingReconciler) syslogNGConfigFinalizer(ctx context.Context, logging
return true, err
}
}
}

if !logging.DeletionTimestamp.IsZero() {
if externalSyslogNG != nil {
return false, errors.NewWithDetails("refusing to delete logging resource while syslogngConfig exists", "syslogNGConfig", logging.Status.SyslogNGConfigName)
}
} else if externalSyslogNG != nil {
msg := fmt.Sprintf("refused to delete logging resource while syslogNGConfig %s exists", client.ObjectKeyFromObject(externalSyslogNG))
r.EventRecorder.Event(logging, corev1.EventTypeWarning, "DeletionRefused", msg)
return false, errors.New(msg)
}

if controllerutil.ContainsFinalizer(logging, syslogNGConfigFinalizer) && externalSyslogNG == nil {
Expand Down
5 changes: 3 additions & 2 deletions controllers/logging/logging_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"

metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"

controllers "github.com/kube-logging/logging-operator/controllers/logging"
"github.com/kube-logging/logging-operator/pkg/resources/fluentd"
"github.com/kube-logging/logging-operator/pkg/resources/model"
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
"github.com/kube-logging/logging-operator/pkg/sdk/logging/model/output"
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
)

var (
Expand Down Expand Up @@ -1410,7 +1411,7 @@ func beforeEachWithError(t *testing.T, errors chan<- error) func() {
})
g.Expect(err).NotTo(gomega.HaveOccurred())

flowReconciler := controllers.NewLoggingReconciler(mgr.GetClient(), ctrl.Log.WithName("controllers").WithName("Flow"))
flowReconciler := controllers.NewLoggingReconciler(mgr.GetClient(), mgr.GetEventRecorderFor("logging-operator"), ctrl.Log.WithName("controllers").WithName("Flow"))

var stopped bool
wrappedReconciler := duplicateRequest(t, flowReconciler, &stopped, errors)
Expand Down
3 changes: 2 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ func main() {
os.Exit(1)
}

loggingReconciler := loggingControllers.NewLoggingReconciler(mgr.GetClient(), ctrl.Log.WithName("logging"))
loggingReconciler := loggingControllers.NewLoggingReconciler(mgr.GetClient(), mgr.GetEventRecorderFor("logging-operator"), ctrl.Log.WithName("logging"))

if err := (&extensionsControllers.EventTailerReconciler{
Client: mgr.GetClient(),
Expand Down Expand Up @@ -216,6 +216,7 @@ func main() {

// +kubebuilder:scaffold:builder
setupLog.Info("starting manager")

if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
Expand Down

0 comments on commit feba2b1

Please sign in to comment.