Skip to content

Commit 23afe7c

Browse files
authored
Merge pull request #16 from cybozu-go/fix-late-ready-node
Add handling for node readiness changes
2 parents 6e01cdb + cd14dd1 commit 23afe7c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

internal/controller/imageprefetch_controller.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"k8s.io/apimachinery/pkg/api/meta"
1717
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1818
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
19+
"k8s.io/apimachinery/pkg/labels"
1920
"k8s.io/apimachinery/pkg/runtime"
2021
"k8s.io/apimachinery/pkg/types"
2122
metav1apply "k8s.io/client-go/applyconfigurations/meta/v1"
@@ -540,6 +541,32 @@ func (r *ImagePrefetchReconciler) SetupWithManager(mgr ctrl.Manager) error {
540541

541542
var requests []ctrl.Request
542543
for _, imgPrefetch := range imagePrefetchList.Items {
544+
if imgPrefetch.Spec.AllNodes {
545+
if util.IsLabelSelectorEmpty(&imgPrefetch.Spec.NodeSelector) {
546+
requests = append(requests, ctrl.Request{
547+
NamespacedName: types.NamespacedName{
548+
Namespace: imgPrefetch.Namespace,
549+
Name: imgPrefetch.Name,
550+
},
551+
})
552+
continue
553+
}
554+
555+
selector, err := metav1.LabelSelectorAsSelector(&imgPrefetch.Spec.NodeSelector)
556+
if err != nil {
557+
return nil
558+
}
559+
if selector.Matches(labels.Set(node.Labels)) {
560+
requests = append(requests, ctrl.Request{
561+
NamespacedName: types.NamespacedName{
562+
Namespace: imgPrefetch.Namespace,
563+
Name: imgPrefetch.Name,
564+
},
565+
})
566+
}
567+
continue
568+
}
569+
543570
if slices.Contains(imgPrefetch.Status.SelectedNodes, node.Name) {
544571
requests = append(requests, ctrl.Request{
545572
NamespacedName: types.NamespacedName{
@@ -560,6 +587,9 @@ func (r *ImagePrefetchReconciler) SetupWithManager(mgr ctrl.Manager) error {
560587
nodeImageSetHandler,
561588
builder.WithPredicates(
562589
predicate.Funcs{
590+
CreateFunc: func(e event.CreateEvent) bool {
591+
return false
592+
},
563593
UpdateFunc: func(e event.UpdateEvent) bool {
564594
return true
565595
},
@@ -577,6 +607,20 @@ func (r *ImagePrefetchReconciler) SetupWithManager(mgr ctrl.Manager) error {
577607
CreateFunc: func(e event.CreateEvent) bool {
578608
return true
579609
},
610+
UpdateFunc: func(e event.UpdateEvent) bool {
611+
oldNode := e.ObjectOld.(*corev1.Node)
612+
newNode := e.ObjectNew.(*corev1.Node)
613+
// change node status from not ready to ready
614+
if !util.IsNodeReady(oldNode) && util.IsNodeReady(newNode) {
615+
return true
616+
}
617+
// change node status from ready to not ready
618+
if util.IsNodeReady(oldNode) && !util.IsNodeReady(newNode) {
619+
return true
620+
}
621+
622+
return false
623+
},
580624
DeleteFunc: func(e event.DeleteEvent) bool {
581625
return true
582626
},

0 commit comments

Comments
 (0)