-
Notifications
You must be signed in to change notification settings - Fork 8
/
multicluster_reconcilers.go
90 lines (72 loc) · 4.57 KB
/
multicluster_reconcilers.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Code generated by skv2. DO NOT EDIT.
//go:generate mockgen -source ./multicluster_reconcilers.go -destination mocks/multicluster_reconcilers.go
// Definitions for the multicluster Kubernetes Controllers
package controller
import (
"context"
admissionregistration_k8s_io_v1 "k8s.io/api/admissionregistration/v1"
"github.com/pkg/errors"
"github.com/solo-io/skv2/pkg/ezkube"
"github.com/solo-io/skv2/pkg/multicluster"
mc_reconcile "github.com/solo-io/skv2/pkg/multicluster/reconcile"
"github.com/solo-io/skv2/pkg/reconcile"
"sigs.k8s.io/controller-runtime/pkg/predicate"
)
// Reconcile Upsert events for the ValidatingWebhookConfiguration Resource across clusters.
// implemented by the user
type MulticlusterValidatingWebhookConfigurationReconciler interface {
ReconcileValidatingWebhookConfiguration(clusterName string, obj *admissionregistration_k8s_io_v1.ValidatingWebhookConfiguration) (reconcile.Result, error)
}
// Reconcile deletion events for the ValidatingWebhookConfiguration Resource across clusters.
// Deletion receives a reconcile.Request as we cannot guarantee the last state of the object
// before being deleted.
// implemented by the user
type MulticlusterValidatingWebhookConfigurationDeletionReconciler interface {
ReconcileValidatingWebhookConfigurationDeletion(clusterName string, req reconcile.Request) error
}
type MulticlusterValidatingWebhookConfigurationReconcilerFuncs struct {
OnReconcileValidatingWebhookConfiguration func(clusterName string, obj *admissionregistration_k8s_io_v1.ValidatingWebhookConfiguration) (reconcile.Result, error)
OnReconcileValidatingWebhookConfigurationDeletion func(clusterName string, req reconcile.Request) error
}
func (f *MulticlusterValidatingWebhookConfigurationReconcilerFuncs) ReconcileValidatingWebhookConfiguration(clusterName string, obj *admissionregistration_k8s_io_v1.ValidatingWebhookConfiguration) (reconcile.Result, error) {
if f.OnReconcileValidatingWebhookConfiguration == nil {
return reconcile.Result{}, nil
}
return f.OnReconcileValidatingWebhookConfiguration(clusterName, obj)
}
func (f *MulticlusterValidatingWebhookConfigurationReconcilerFuncs) ReconcileValidatingWebhookConfigurationDeletion(clusterName string, req reconcile.Request) error {
if f.OnReconcileValidatingWebhookConfigurationDeletion == nil {
return nil
}
return f.OnReconcileValidatingWebhookConfigurationDeletion(clusterName, req)
}
type MulticlusterValidatingWebhookConfigurationReconcileLoop interface {
// AddMulticlusterValidatingWebhookConfigurationReconciler adds a MulticlusterValidatingWebhookConfigurationReconciler to the MulticlusterValidatingWebhookConfigurationReconcileLoop.
AddMulticlusterValidatingWebhookConfigurationReconciler(ctx context.Context, rec MulticlusterValidatingWebhookConfigurationReconciler, predicates ...predicate.Predicate)
}
type multiclusterValidatingWebhookConfigurationReconcileLoop struct {
loop multicluster.Loop
}
func (m *multiclusterValidatingWebhookConfigurationReconcileLoop) AddMulticlusterValidatingWebhookConfigurationReconciler(ctx context.Context, rec MulticlusterValidatingWebhookConfigurationReconciler, predicates ...predicate.Predicate) {
genericReconciler := genericValidatingWebhookConfigurationMulticlusterReconciler{reconciler: rec}
m.loop.AddReconciler(ctx, genericReconciler, predicates...)
}
func NewMulticlusterValidatingWebhookConfigurationReconcileLoop(name string, cw multicluster.ClusterWatcher, options reconcile.Options) MulticlusterValidatingWebhookConfigurationReconcileLoop {
return &multiclusterValidatingWebhookConfigurationReconcileLoop{loop: mc_reconcile.NewLoop(name, cw, &admissionregistration_k8s_io_v1.ValidatingWebhookConfiguration{}, options)}
}
type genericValidatingWebhookConfigurationMulticlusterReconciler struct {
reconciler MulticlusterValidatingWebhookConfigurationReconciler
}
func (g genericValidatingWebhookConfigurationMulticlusterReconciler) ReconcileDeletion(cluster string, req reconcile.Request) error {
if deletionReconciler, ok := g.reconciler.(MulticlusterValidatingWebhookConfigurationDeletionReconciler); ok {
return deletionReconciler.ReconcileValidatingWebhookConfigurationDeletion(cluster, req)
}
return nil
}
func (g genericValidatingWebhookConfigurationMulticlusterReconciler) Reconcile(cluster string, object ezkube.Object) (reconcile.Result, error) {
obj, ok := object.(*admissionregistration_k8s_io_v1.ValidatingWebhookConfiguration)
if !ok {
return reconcile.Result{}, errors.Errorf("internal error: ValidatingWebhookConfiguration handler received event for %T", object)
}
return g.reconciler.ReconcileValidatingWebhookConfiguration(cluster, obj)
}