Skip to content

Commit

Permalink
Provide handler for LokiStack create and update events (grafana#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
periklis authored Apr 21, 2021
1 parent 0949632 commit 03ce63b
Show file tree
Hide file tree
Showing 10 changed files with 1,575 additions and 191 deletions.
11 changes: 7 additions & 4 deletions controllers/lokistack_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ type LokiStackReconciler struct {
// For more details, check Reconcile and its Result here:
// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.7.0/pkg/reconcile
func (r *LokiStackReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
err := handlers.CreateLokiStack(ctx, req, r.Client)
err := handlers.CreateOrUpdateLokiStack(ctx, req, r.Client, r.Scheme)
if err != nil {
return ctrl.Result{
Requeue: true,
Expand All @@ -67,15 +67,18 @@ func (r *LokiStackReconciler) Reconcile(ctx context.Context, req ctrl.Request) (

// SetupWithManager sets up the controller with the Manager.
func (r *LokiStackReconciler) SetupWithManager(mgr ctrl.Manager) error {
createPredicate := predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool { return false },
filter := predicate.Funcs{
UpdateFunc: func(e event.UpdateEvent) bool {
// Update only if generation changes, filter out anything else
return e.ObjectOld.GetGeneration() != e.ObjectNew.GetGeneration()
},
CreateFunc: func(e event.CreateEvent) bool { return true },
DeleteFunc: func(e event.DeleteEvent) bool { return false },
GenericFunc: func(e event.GenericEvent) bool { return false },
}

return ctrl.NewControllerManagedBy(mgr).
For(&lokiv1beta1.LokiStack{}).
WithEventFilter(createPredicate).
WithEventFilter(filter).
Complete(r)
}
13 changes: 13 additions & 0 deletions internal/external/k8s/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package k8s
import (
"context"

"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"

"sigs.k8s.io/controller-runtime/pkg/client"
)

Expand All @@ -13,4 +16,14 @@ import (
type Client interface {
Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error
Get(ctx context.Context, key client.ObjectKey, obj client.Object) error
Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error
Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error
DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error
List(ctx context.Context, obj client.ObjectList, opts ...client.ListOption) error
Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error

Status() client.StatusWriter

RESTMapper() meta.RESTMapper
Scheme() *runtime.Scheme
}
Loading

0 comments on commit 03ce63b

Please sign in to comment.