...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package controllers
15
16 import (
17 "github.com/go-logr/logr"
18
19 "github.com/chaos-mesh/chaos-mesh/controllers/common"
20
21 "github.com/chaos-mesh/chaos-mesh/api/v1alpha1"
22 "github.com/chaos-mesh/chaos-mesh/controllers/kernelchaos"
23
24 "k8s.io/client-go/tools/record"
25 ctrl "sigs.k8s.io/controller-runtime"
26 "sigs.k8s.io/controller-runtime/pkg/client"
27 )
28
29
30 type KernelChaosReconciler struct {
31 client.Client
32 client.Reader
33 Log logr.Logger
34 record.EventRecorder
35 }
36
37
38
39
40
41 func (r *KernelChaosReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
42 logger := r.Log.WithValues("reconciler", "kernelchaos")
43
44 if !common.ControllerCfg.ClusterScoped && req.Namespace != common.ControllerCfg.TargetNamespace {
45
46 logger.Info("ignore chaos which belongs to an unexpected namespace within namespace scoped mode",
47 "chaosName", req.Name, "expectedNamespace", common.ControllerCfg.TargetNamespace, "actualNamespace", req.Namespace)
48 return ctrl.Result{}, nil
49 }
50
51 reconciler := kernelchaos.Reconciler{
52 Client: r.Client,
53 Reader: r.Reader,
54 Log: logger,
55 EventRecorder: r.EventRecorder,
56 }
57
58 return reconciler.Reconcile(req)
59 }
60
61
62 func (r *KernelChaosReconciler) SetupWithManager(mgr ctrl.Manager) error {
63 return ctrl.NewControllerManagedBy(mgr).
64 For(&v1alpha1.KernelChaos{}).
65 Complete(r)
66 }
67