@@ -20,6 +20,7 @@ import (
20
20
"fmt"
21
21
22
22
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23
+ "sigs.k8s.io/controller-runtime/pkg/client"
23
24
"sigs.k8s.io/controller-runtime/pkg/controller"
24
25
"sigs.k8s.io/controller-runtime/pkg/event"
25
26
"sigs.k8s.io/controller-runtime/pkg/handler"
@@ -46,28 +47,33 @@ func (w *VMWatcher) Watch(mgr manager.Manager, ctr controller.Controller) error
46
47
source .Kind (mgr .GetCache (), & v1alpha2.VirtualMachine {}),
47
48
& handler.EnqueueRequestForObject {},
48
49
predicate.Funcs {
49
- CreateFunc : func (e event.CreateEvent ) bool { return false },
50
+ CreateFunc : func (e event.CreateEvent ) bool {
51
+ return predicateVirtualMachine (e .Object )
52
+ },
50
53
DeleteFunc : func (e event.DeleteEvent ) bool { return false },
51
54
UpdateFunc : func (e event.UpdateEvent ) bool {
52
- vm , ok := e .ObjectNew .(* v1alpha2.VirtualMachine )
53
- if ! ok {
54
- return false
55
- }
56
-
57
- c , _ := conditions .GetCondition (vmcondition .TypeFirmwareUpToDate , vm .Status .Conditions )
58
- outOfDate := c .Status == metav1 .ConditionFalse
59
-
60
- c , _ = conditions .GetCondition (vmcondition .TypeRunning , vm .Status .Conditions )
61
- running := c .Status == metav1 .ConditionTrue
62
-
63
- c , _ = conditions .GetCondition (vmcondition .TypeMigrating , vm .Status .Conditions )
64
- migrating := c .Status == metav1 .ConditionTrue
65
-
66
- return outOfDate && running && ! migrating
55
+ return predicateVirtualMachine (e .ObjectNew )
67
56
},
68
57
},
69
58
); err != nil {
70
59
return fmt .Errorf ("error setting watch on VM: %w" , err )
71
60
}
72
61
return nil
73
62
}
63
+
64
+ func predicateVirtualMachine (obj client.Object ) bool {
65
+ vm , ok := obj .(* v1alpha2.VirtualMachine )
66
+ if ! ok {
67
+ return false
68
+ }
69
+ c , _ := conditions .GetCondition (vmcondition .TypeFirmwareUpToDate , vm .Status .Conditions )
70
+ outOfDate := c .Status == metav1 .ConditionFalse
71
+
72
+ c , _ = conditions .GetCondition (vmcondition .TypeRunning , vm .Status .Conditions )
73
+ running := c .Status == metav1 .ConditionTrue
74
+
75
+ c , _ = conditions .GetCondition (vmcondition .TypeMigrating , vm .Status .Conditions )
76
+ migrating := c .Status == metav1 .ConditionTrue
77
+
78
+ return outOfDate && running && ! migrating
79
+ }
0 commit comments