|
4 | 4 | "context" |
5 | 5 | "time" |
6 | 6 |
|
| 7 | + "github.com/AliyunContainerService/alibabacloud-erdma-controller/internal/config" |
7 | 8 | "github.com/AliyunContainerService/alibabacloud-erdma-controller/internal/types" |
8 | 9 | "github.com/samber/lo" |
9 | 10 | k8stypes "k8s.io/apimachinery/pkg/types" |
@@ -173,23 +174,43 @@ func RemoveERdmaDevices(erdmaClient client.Client, ctx context.Context, nodeName |
173 | 174 | return ctrl.Result{}, nil |
174 | 175 | } |
175 | 176 |
|
| 177 | +func (r *NodeReconciler) OwnNode(node *v1.Node) bool { |
| 178 | + if node == nil { |
| 179 | + return false |
| 180 | + } |
| 181 | + for k, v := range config.GetConfig().NodeSelector { |
| 182 | + if node.Labels[k] != v { |
| 183 | + return false |
| 184 | + } |
| 185 | + } |
| 186 | + return true |
| 187 | +} |
| 188 | + |
176 | 189 | // SetupWithManager sets up the controller with the Manager. |
177 | 190 | func (r *NodeReconciler) SetupWithManager(mgr ctrl.Manager) error { |
178 | 191 | pred := predicate.TypedFuncs[*v1.Node]{ |
179 | 192 | CreateFunc: func(e event.TypedCreateEvent[*v1.Node]) bool { |
180 | | - return true |
| 193 | + return r.OwnNode(e.Object) |
181 | 194 | }, |
182 | 195 | DeleteFunc: func(e event.TypedDeleteEvent[*v1.Node]) bool { |
183 | | - return true |
| 196 | + return r.OwnNode(e.Object) |
184 | 197 | }, |
185 | 198 | UpdateFunc: func(e event.TypedUpdateEvent[*v1.Node]) bool { |
| 199 | + if !r.OwnNode(e.ObjectNew) { |
| 200 | + return false |
| 201 | + } |
| 202 | + if !r.OwnNode(e.ObjectOld) && r.OwnNode(e.ObjectNew) { |
| 203 | + return true |
| 204 | + } |
| 205 | + |
186 | 206 | if e.ObjectNew.DeletionTimestamp != nil { |
187 | 207 | return true |
188 | 208 | } |
| 209 | + |
189 | 210 | return e.ObjectOld.Spec.ProviderID != e.ObjectNew.Spec.ProviderID |
190 | 211 | }, |
191 | 212 | GenericFunc: func(e event.TypedGenericEvent[*v1.Node]) bool { |
192 | | - return true |
| 213 | + return r.OwnNode(e.Object) |
193 | 214 | }, |
194 | 215 | } |
195 | 216 | c, err := controller.New("node-controller", mgr, controller.Options{Reconciler: r}) |
|
0 commit comments