...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package controllers
17
18 import (
19 "github.com/go-logr/logr"
20 corev1 "k8s.io/api/core/v1"
21 ctrl "sigs.k8s.io/controller-runtime"
22 "sigs.k8s.io/controller-runtime/pkg/client"
23 "sigs.k8s.io/controller-runtime/pkg/manager"
24
25 "github.com/chaos-mesh/chaos-mesh/api/v1alpha1"
26 "github.com/chaos-mesh/chaos-mesh/controllers/config"
27 "github.com/chaos-mesh/chaos-mesh/controllers/utils/recorder"
28 )
29
30 func BootstrapWorkflowControllers(mgr manager.Manager, logger logr.Logger, recorderBuilder *recorder.RecorderBuilder) error {
31 if !config.ShouldSpawnController("workflow") {
32 return nil
33 }
34
35 noCacheClient, err := client.New(mgr.GetConfig(), client.Options{
36 Scheme: mgr.GetScheme(),
37 Mapper: mgr.GetRESTMapper(),
38 })
39 if err != nil {
40 return err
41 }
42 err = ctrl.NewControllerManagedBy(mgr).
43 For(&v1alpha1.Workflow{}).
44 Owns(&v1alpha1.WorkflowNode{}).
45 Named("workflow-entry-reconciler").
46 Complete(
47 NewWorkflowEntryReconciler(
48 mgr.GetClient(),
49 recorderBuilder.Build("workflow-entry-reconciler"),
50 logger.WithName("workflow-entry-reconciler"),
51 ),
52 )
53 if err != nil {
54 return err
55 }
56
57
58
59 err = ctrl.NewControllerManagedBy(mgr).
60 For(&v1alpha1.WorkflowNode{}).
61 Owns(&v1alpha1.WorkflowNode{}).
62 Named("workflow-serial-node-reconciler").
63 Complete(
64 NewSerialNodeReconciler(
65 noCacheClient,
66 recorderBuilder.Build("workflow-serial-node-reconciler"),
67 logger.WithName("workflow-serial-node-reconciler"),
68 ),
69 )
70 if err != nil {
71 return err
72 }
73
74 err = ctrl.NewControllerManagedBy(mgr).
75 For(&v1alpha1.WorkflowNode{}).
76 Owns(&v1alpha1.WorkflowNode{}).
77 Named("workflow-parallel-node-reconciler").
78 Complete(
79 NewParallelNodeReconciler(
80 noCacheClient,
81 recorderBuilder.Build("workflow-parallel-node-reconciler"),
82 logger.WithName("workflow-parallel-node-reconciler"),
83 ),
84 )
85 if err != nil {
86 return err
87 }
88
89 err = ctrl.NewControllerManagedBy(mgr).
90 For(&v1alpha1.WorkflowNode{}).
91 Named("workflow-deadline-reconciler").
92 Complete(
93 NewDeadlineReconciler(
94 mgr.GetClient(),
95 recorderBuilder.Build("workflow-deadline-reconciler"),
96 logger.WithName("workflow-deadline-reconciler"),
97 ),
98 )
99 if err != nil {
100 return err
101 }
102
103 err = ctrl.NewControllerManagedBy(mgr).
104 For(&v1alpha1.WorkflowNode{}).
105 Named("workflow-chaos-node-reconciler").
106 Complete(
107 NewChaosNodeReconciler(
108 mgr.GetClient(),
109 recorderBuilder.Build("workflow-chaos-node-reconciler"),
110 logger.WithName("workflow-chaos-node-reconciler"),
111 ),
112 )
113 if err != nil {
114 return err
115 }
116 err = ctrl.NewControllerManagedBy(mgr).
117 For(&v1alpha1.WorkflowNode{}).
118 Owns(&v1alpha1.WorkflowNode{}).
119 Owns(&corev1.Pod{}).
120 Named("workflow-task-reconciler").
121 Complete(NewTaskReconciler(
122 noCacheClient,
123 mgr.GetConfig(),
124 recorderBuilder.Build("workflow-task-reconciler"),
125 logger.WithName("workflow-task-reconciler"),
126 ))
127 if err != nil {
128 return err
129 }
130
131 err = ctrl.NewControllerManagedBy(mgr).
132 For(&v1alpha1.WorkflowNode{}).
133 Owns(&v1alpha1.WorkflowNode{}).
134 Owns(&v1alpha1.StatusCheck{}).
135 Named("workflow-statuscheck-reconciler").
136 Complete(NewStatusCheckReconciler(
137 noCacheClient,
138 recorderBuilder.Build("workflow-statuscheck-reconciler"),
139 logger.WithName("workflow-statuscheck-reconciler"),
140 ))
141 if err != nil {
142 return err
143 }
144
145 err = ctrl.NewControllerManagedBy(mgr).
146 For(&v1alpha1.WorkflowNode{}).
147 Named("workflow-abort-node-reconciler").
148 Complete(NewAbortNodeReconciler(
149 noCacheClient,
150 recorderBuilder.Build("workflow-abort-node-reconciler"),
151 logger.WithName("workflow-abort-node-reconciler"),
152 ))
153 if err != nil {
154 return err
155 }
156
157 err = ctrl.NewControllerManagedBy(mgr).
158 For(&v1alpha1.Workflow{}).
159 Named("workflow-abort-workflow-reconciler").
160 Complete(NewAbortWorkflowReconciler(
161 noCacheClient,
162 recorderBuilder.Build("workflow-abort-workflow-reconciler"),
163 logger.WithName("workflow-abort-workflow-reconciler"),
164 ))
165 return err
166 }
167