Skip to content

Commit b96a4eb

Browse files
authored
PostgresCluster and PostgresDatabase events emitting (#1798)
* events emitting * emmiting events for secrets and configmaps * predicates change for database storming * revert to use emitOnConditionTransition * filter out only create events * comments cleanup * events parity (started&finished) with requeue
1 parent 6d7094b commit b96a4eb

9 files changed

Lines changed: 265 additions & 37 deletions

File tree

cmd/main.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,15 +283,17 @@ func main() {
283283
os.Exit(1)
284284
}
285285
if err := (&controller.PostgresDatabaseReconciler{
286-
Client: mgr.GetClient(),
287-
Scheme: mgr.GetScheme(),
286+
Client: mgr.GetClient(),
287+
Scheme: mgr.GetScheme(),
288+
Recorder: mgr.GetEventRecorderFor("postgresdatabase-controller"),
288289
}).SetupWithManager(mgr); err != nil {
289290
setupLog.Error(err, "unable to create controller", "controller", "PostgresDatabase")
290291
os.Exit(1)
291292
}
292293
if err := (&controller.PostgresClusterReconciler{
293-
Client: mgr.GetClient(),
294-
Scheme: mgr.GetScheme(),
294+
Client: mgr.GetClient(),
295+
Scheme: mgr.GetScheme(),
296+
Recorder: mgr.GetEventRecorderFor("postgrescluster-controller"),
295297
}).SetupWithManager(mgr); err != nil {
296298
setupLog.Error(err, "unable to create controller", "controller", "PostgresCluster")
297299
os.Exit(1)

internal/controller/postgrescluster_controller.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"k8s.io/apimachinery/pkg/api/equality"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/runtime"
29+
"k8s.io/client-go/tools/record"
2930
ctrl "sigs.k8s.io/controller-runtime"
3031
"sigs.k8s.io/controller-runtime/pkg/builder"
3132
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +42,8 @@ const (
4142
// PostgresClusterReconciler reconciles PostgresCluster resources.
4243
type PostgresClusterReconciler struct {
4344
client.Client
44-
Scheme *runtime.Scheme
45+
Scheme *runtime.Scheme
46+
Recorder record.EventRecorder
4547
}
4648

4749
// +kubebuilder:rbac:groups=enterprise.splunk.com,resources=postgresclusters,verbs=get;list;watch;create;update;patch;delete
@@ -52,9 +54,11 @@ type PostgresClusterReconciler struct {
5254
// +kubebuilder:rbac:groups=postgresql.cnpg.io,resources=clusters/status,verbs=get
5355
// +kubebuilder:rbac:groups=postgresql.cnpg.io,resources=poolers,verbs=get;list;watch;create;update;patch;delete
5456
// +kubebuilder:rbac:groups=postgresql.cnpg.io,resources=poolers/status,verbs=get
57+
// +kubebuilder:rbac:groups=core,resources=events,verbs=create;patch
5558

5659
func (r *PostgresClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
57-
return clustercore.PostgresClusterService(ctx, r.Client, r.Scheme, req)
60+
rc := &clustercore.ReconcileContext{Client: r.Client, Scheme: r.Scheme, Recorder: r.Recorder}
61+
return clustercore.PostgresClusterService(ctx, rc, req)
5862
}
5963

6064
// SetupWithManager registers the controller and owned resource watches.

internal/controller/postgresdatabase_controller.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
apierrors "k8s.io/apimachinery/pkg/api/errors"
3030
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
"k8s.io/apimachinery/pkg/runtime"
32+
"k8s.io/client-go/tools/record"
3233
ctrl "sigs.k8s.io/controller-runtime"
3334
"sigs.k8s.io/controller-runtime/pkg/builder"
3435
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -41,7 +42,8 @@ import (
4142
// PostgresDatabaseReconciler reconciles a PostgresDatabase object.
4243
type PostgresDatabaseReconciler struct {
4344
client.Client
44-
Scheme *runtime.Scheme
45+
Scheme *runtime.Scheme
46+
Recorder record.EventRecorder
4547
}
4648

4749
const (
@@ -56,6 +58,7 @@ const (
5658
//+kubebuilder:rbac:groups=postgresql.cnpg.io,resources=databases,verbs=get;list;watch;create;update;patch;delete
5759
//+kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch;create;update;delete
5860
//+kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;delete
61+
//+kubebuilder:rbac:groups=core,resources=events,verbs=create;patch
5962

6063
func (r *PostgresDatabaseReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
6164
logger := log.FromContext(ctx)
@@ -68,7 +71,8 @@ func (r *PostgresDatabaseReconciler) Reconcile(ctx context.Context, req ctrl.Req
6871
}
6972
return ctrl.Result{}, err
7073
}
71-
return dbcore.PostgresDatabaseService(ctx, r.Client, r.Scheme, postgresDB, dbadapter.NewDBRepository)
74+
rc := &dbcore.ReconcileContext{Client: r.Client, Scheme: r.Scheme, Recorder: r.Recorder}
75+
return dbcore.PostgresDatabaseService(ctx, rc, postgresDB, dbadapter.NewDBRepository)
7276
}
7377

7478
// SetupWithManager sets up the controller with the Manager.
@@ -104,9 +108,15 @@ func (r *PostgresDatabaseReconciler) SetupWithManager(mgr ctrl.Manager) error {
104108
},
105109
),
106110
)).
107-
Owns(&cnpgv1.Database{}).
108-
Owns(&corev1.Secret{}).
109-
Owns(&corev1.ConfigMap{}).
111+
Owns(&cnpgv1.Database{}, builder.WithPredicates(predicate.Funcs{
112+
CreateFunc: func(event.CreateEvent) bool { return false },
113+
})).
114+
Owns(&corev1.Secret{}, builder.WithPredicates(predicate.Funcs{
115+
CreateFunc: func(event.CreateEvent) bool { return false },
116+
})).
117+
Owns(&corev1.ConfigMap{}, builder.WithPredicates(predicate.Funcs{
118+
CreateFunc: func(event.CreateEvent) bool { return false },
119+
})).
110120
Named("postgresdatabase").
111121
WithOptions(controller.Options{
112122
MaxConcurrentReconciles: DatabaseTotalWorker,

0 commit comments

Comments
 (0)