Skip to content

Commit 79bd611

Browse files
committed
Modify to retrieve nodes within isNeedNodeSelection
Signed-off-by: zeroalphat <taichi-takemura@cybozu.co.jp>
1 parent 7809228 commit 79bd611

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

internal/controller/imageprefetch_controller.go

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,16 @@ func (r *ImagePrefetchReconciler) selectTargetNodes(ctx context.Context, imgPref
133133
}
134134

135135
if imgPrefetch.Spec.Replicas > 0 {
136-
readyNodes, err := r.getReadyNodes(ctx)
136+
needsNodeSelection, err := r.isNeedNodeSelection(ctx, imgPrefetch)
137137
if err != nil {
138138
return nil, err
139139
}
140140

141-
needsNodeSelection := isNeedNodeSelection(imgPrefetch, readyNodes)
142141
if needsNodeSelection {
143-
nodes := selectNodesByReplicas(imgPrefetch, readyNodes)
142+
nodes, err := r.selectNodesByReplicas(ctx, imgPrefetch)
143+
if err != nil {
144+
return nil, fmt.Errorf("failed to select nodes by replicas: %w", err)
145+
}
144146
logger.Info("selected nodes", "nodes", nodes)
145147

146148
return nodes, nil
@@ -152,14 +154,6 @@ func (r *ImagePrefetchReconciler) selectTargetNodes(ctx context.Context, imgPref
152154
return nil, fmt.Errorf("failed to select target nodes")
153155
}
154156

155-
func (r *ImagePrefetchReconciler) getReadyNodes(ctx context.Context) ([]corev1.Node, error) {
156-
allNodes := &corev1.NodeList{}
157-
if err := r.List(ctx, allNodes); err != nil {
158-
return nil, err
159-
}
160-
return filterReadyNodes(allNodes.Items), nil
161-
}
162-
163157
func (r *ImagePrefetchReconciler) selectNodesBySelector(ctx context.Context, nodeSelector metav1.LabelSelector) ([]corev1.Node, error) {
164158
selector, err := metav1.LabelSelectorAsSelector(&nodeSelector)
165159
if err != nil {
@@ -191,15 +185,21 @@ func filterReadyNodes(nodes []corev1.Node) []corev1.Node {
191185
return readyNodes
192186
}
193187

194-
func isNeedNodeSelection(imgPrefetch *ofenv1.ImagePrefetch, readyNodes []corev1.Node) bool {
188+
func (r *ImagePrefetchReconciler) isNeedNodeSelection(ctx context.Context, imgPrefetch *ofenv1.ImagePrefetch) (bool, error) {
195189
if len(imgPrefetch.Status.SelectedNodes) == 0 {
196-
return true
190+
return true, nil
197191
}
198192

199193
if imgPrefetch.Generation != imgPrefetch.Status.ObservedGeneration {
200-
return true
194+
return true, nil
201195
}
202196

197+
allNodes := &corev1.NodeList{}
198+
if err := r.List(ctx, allNodes); err != nil {
199+
return false, err
200+
}
201+
202+
readyNodes := filterReadyNodes(allNodes.Items)
203203
readyNodesName := getNodeNames(readyNodes)
204204
containUnhealthyNodes := false
205205
for _, node := range imgPrefetch.Status.SelectedNodes {
@@ -209,7 +209,7 @@ func isNeedNodeSelection(imgPrefetch *ofenv1.ImagePrefetch, readyNodes []corev1.
209209
}
210210
}
211211

212-
return containUnhealthyNodes
212+
return containUnhealthyNodes, nil
213213
}
214214

215215
func getNodeNames(nodes []corev1.Node) []string {
@@ -221,10 +221,16 @@ func getNodeNames(nodes []corev1.Node) []string {
221221
return nodeNames
222222
}
223223

224-
func selectNodesByReplicas(imgPrefetch *ofenv1.ImagePrefetch, readyNodes []corev1.Node) []string {
224+
func (r *ImagePrefetchReconciler) selectNodesByReplicas(ctx context.Context, imgPrefetch *ofenv1.ImagePrefetch) ([]string, error) {
225225
var selectNodes []string
226226
targetReplicas := imgPrefetch.Spec.Replicas
227227

228+
allNodes := &corev1.NodeList{}
229+
if err := r.List(ctx, allNodes); err != nil {
230+
return nil, err
231+
}
232+
233+
readyNodes := filterReadyNodes(allNodes.Items)
228234
readyNodesName := getNodeNames(readyNodes)
229235
for _, node := range imgPrefetch.Status.SelectedNodes {
230236
if len(selectNodes) >= targetReplicas {
@@ -252,7 +258,7 @@ func selectNodesByReplicas(imgPrefetch *ofenv1.ImagePrefetch, readyNodes []corev
252258
}
253259
}
254260

255-
return selectNodes
261+
return selectNodes, nil
256262
}
257263

258264
func (r *ImagePrefetchReconciler) createOrUpdateNodeImageSet(ctx context.Context, imgPrefetch *ofenv1.ImagePrefetch, selectedNodes []string) error {

0 commit comments

Comments
 (0)