Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Merge incoming
FieldSelectorinstead of overwriting itoptions.FieldSelector = fieldSelectorstill discards any existing selector. That misses the PR goal and can change filter behavior unexpectedly. Merge the existing selector with the pod-name selector in both callbacks.Proposed fix
func waitForPodCompletion(ctx context.Context, podListerWatcher PodListerWatcher, name string) error { - fieldSelector := fields.OneTermEqualSelector("metadata.name", name).String() + podNameSelector := fields.OneTermEqualSelector("metadata.name", name) + mergeFieldSelector := func(options metav1.ListOptions) (metav1.ListOptions, error) { + if options.FieldSelector == "" { + options.FieldSelector = podNameSelector.String() + return options, nil + } + existing, err := fields.ParseSelector(options.FieldSelector) + if err != nil { + return options, fmt.Errorf("invalid field selector %q: %w", options.FieldSelector, err) + } + options.FieldSelector = fields.AndSelectors(existing, podNameSelector).String() + return options, nil + } _, err := toolswatch.UntilWithSync( ctx, &cache.ListWatch{ ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { - options.FieldSelector = fieldSelector - return podListerWatcher.List(ctx, options) + merged, err := mergeFieldSelector(options) + if err != nil { + return nil, err + } + return podListerWatcher.List(ctx, merged) }, WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { - options.FieldSelector = fieldSelector - return podListerWatcher.Watch(ctx, options) + merged, err := mergeFieldSelector(options) + if err != nil { + return nil, err + } + return podListerWatcher.Watch(ctx, merged) }, }, &corev1.Pod{}, nil,🤖 Prompt for AI Agents