Skip to content

Commit 45bdf70

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request kubernetes#50140 from dixudx/kubectl_add_fieldSelector
Automatic merge from submit-queue (batch tested with PRs 53273, 55058, 55237, 50140). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. add field selector for kubectl get **What this PR does / why we need it**: When working in kubernetes#50075, I found current kubectl did not support using `field-selector`. **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes kubernetes#14129 **Special notes for your reviewer**: /cc @janetkuo @Kargakis /assign @derekwaynecarr @smarterclayton @bgrant0607 **Release note**: ```release-note add field selector for kubectl get ```
2 parents 552d2b3 + fa143c6 commit 45bdf70

25 files changed

+311
-70
lines changed

hack/make-rules/test-cmd-util.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,13 @@ run_pod_tests() {
430430
kubectl create -f test/fixtures/doc-yaml/admin/limitrange/valid-pod.yaml "${kube_flags[@]}"
431431
# Post-condition: valid-pod POD is created
432432
kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" 'valid-pod:'
433+
# Command
434+
output_message=$(kubectl get pods --field-selector metadata.name=valid-pod "${kube_flags[@]}")
435+
kube::test::if_has_string "${output_message}" "valid-pod"
436+
# Command
437+
phase=$(kubectl get "${kube_flags[@]}" pod valid-pod -o go-template='{{ .status.phase }}')
438+
output_message=$(kubectl get pods --field-selector status.phase="${phase}" "${kube_flags[@]}")
439+
kube::test::if_has_string "${output_message}" "valid-pod"
433440

434441
### Delete PODs with no parameter mustn't kill everything
435442
# Pre-condition: valid-pod POD exists

pkg/kubectl/cmd/annotate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
205205
return err
206206
}
207207

208-
b = b.SelectorParam(o.selector).
208+
b = b.LabelSelectorParam(o.selector).
209209
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
210210
ResourceTypeOrNameArgs(o.all, o.resources...).
211211
Latest()

pkg/kubectl/cmd/apply.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
219219
ContinueOnError().
220220
NamespaceParam(cmdNamespace).DefaultNamespace().
221221
FilenameParam(enforceNamespace, &options.FilenameOptions).
222-
SelectorParam(options.Selector).
222+
LabelSelectorParam(options.Selector).
223223
IncludeUninitialized(includeUninitialized).
224224
Flatten().
225225
Do()
@@ -367,8 +367,8 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
367367
clientFunc: f.UnstructuredClientForMapping,
368368
clientsetFunc: f.ClientSet,
369369

370-
selector: options.Selector,
371-
visitedUids: visitedUids,
370+
labelSelector: options.Selector,
371+
visitedUids: visitedUids,
372372

373373
cascade: options.Cascade,
374374
dryRun: dryRun,
@@ -453,8 +453,9 @@ type pruner struct {
453453
clientFunc resource.ClientMapperFunc
454454
clientsetFunc func() (internalclientset.Interface, error)
455455

456-
visitedUids sets.String
457-
selector string
456+
visitedUids sets.String
457+
labelSelector string
458+
fieldSelector string
458459

459460
cascade bool
460461
dryRun bool
@@ -474,7 +475,8 @@ func (p *pruner) prune(namespace string, mapping *meta.RESTMapping, shortOutput,
474475
mapping.GroupVersionKind.Version,
475476
false,
476477
&metav1.ListOptions{
477-
LabelSelector: p.selector,
478+
LabelSelector: p.labelSelector,
479+
FieldSelector: p.fieldSelector,
478480
IncludeUninitialized: includeUninitialized,
479481
},
480482
)

pkg/kubectl/cmd/apply_view_last_applied.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func (o *ViewLastAppliedOptions) Complete(f cmdutil.Factory, args []string) erro
9898
FilenameParam(enforceNamespace, &o.FilenameOptions).
9999
ResourceTypeOrNameArgs(enforceNamespace, args...).
100100
SelectAllParam(o.All).
101-
SelectorParam(o.Selector).
101+
LabelSelectorParam(o.Selector).
102102
Latest().
103103
Flatten().
104104
Do()

pkg/kubectl/cmd/clusterinfo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func RunClusterInfo(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error
7474
// TODO use generalized labels once they are implemented (#341)
7575
b := f.NewBuilder().
7676
NamespaceParam(cmdNamespace).DefaultNamespace().
77-
SelectorParam("kubernetes.io/cluster-service=true").
77+
LabelSelectorParam("kubernetes.io/cluster-service=true").
7878
ResourceTypeOrNameArgs(false, []string{"services"}...).
7979
Latest()
8080
err = b.Do().Visit(func(r *resource.Info, err error) error {

pkg/kubectl/cmd/create.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
194194
ContinueOnError().
195195
NamespaceParam(cmdNamespace).DefaultNamespace().
196196
FilenameParam(enforceNamespace, &options.FilenameOptions).
197-
SelectorParam(options.Selector).
197+
LabelSelectorParam(options.Selector).
198198
Flatten().
199199
Do()
200200
err = r.Err()

pkg/kubectl/cmd/delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
182182
ContinueOnError().
183183
NamespaceParam(cmdNamespace).DefaultNamespace().
184184
FilenameParam(enforceNamespace, &o.FilenameOptions).
185-
SelectorParam(o.Selector).
185+
LabelSelectorParam(o.Selector).
186186
IncludeUninitialized(includeUninitialized).
187187
SelectAllParam(o.DeleteAll).
188188
ResourceTypeOrNameArgs(false, args...).RequireObject(false).

pkg/kubectl/cmd/describe.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
129129
ContinueOnError().
130130
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
131131
FilenameParam(enforceNamespace, options).
132-
SelectorParam(selector).
132+
LabelSelectorParam(selector).
133133
IncludeUninitialized(includeUninitialized).
134134
ResourceTypeOrNameArgs(true, args...).
135135
Flatten().

pkg/kubectl/cmd/drain.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ func (o *DrainOptions) SetupDrain(cmd *cobra.Command, args []string) error {
243243
Flatten()
244244

245245
if len(o.Selector) > 0 {
246-
builder = builder.SelectorParam(o.Selector).
246+
builder = builder.LabelSelectorParam(o.Selector).
247247
ResourceTypes("nodes")
248248
}
249249

pkg/kubectl/cmd/label.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
206206
return err
207207
}
208208

209-
b = b.SelectorParam(o.selector).
209+
b = b.LabelSelectorParam(o.selector).
210210
Unstructured(f.UnstructuredClientForMapping, mapper, typer).
211211
ResourceTypeOrNameArgs(o.all, o.resources...).
212212
Latest()

0 commit comments

Comments
 (0)