mirror of https://github.com/k3s-io/k3s
Merge pull request #39291 from xilabao/fix-set-selector
Automatic merge from submit-queue (batch tested with PRs 38766, 39291) fix kubectl set selector fix #39290pull/6/head
commit
acc81d6d96
|
@ -30,6 +30,7 @@ go_library(
|
|||
"//pkg/runtime:go_default_library",
|
||||
"//pkg/util/errors:go_default_library",
|
||||
"//pkg/util/strategicpatch:go_default_library",
|
||||
"//pkg/util/validation:go_default_library",
|
||||
"//vendor:github.com/spf13/cobra",
|
||||
],
|
||||
)
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/validation"
|
||||
)
|
||||
|
||||
// SelectorOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
|
||||
|
@ -77,7 +78,7 @@ func NewCmdSelector(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||
cmd := &cobra.Command{
|
||||
Use: "selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]",
|
||||
Short: "Set the selector on a resource",
|
||||
Long: fmt.Sprintf(selectorLong),
|
||||
Long: fmt.Sprintf(selectorLong, validation.LabelValueMaxLength),
|
||||
Example: selectorExample,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
cmdutil.CheckErr(options.Complete(f, cmd, args, out))
|
||||
|
@ -136,6 +137,9 @@ func (o *SelectorOptions) Validate() error {
|
|||
if len(o.resources) < 1 && cmdutil.IsFilenameEmpty(o.fileOptions.Filenames) {
|
||||
return fmt.Errorf("one or more resources must be specified as <resource> <name> or <resource>/<name>")
|
||||
}
|
||||
if o.selector == nil {
|
||||
return fmt.Errorf("one selector is required")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -213,9 +217,10 @@ func updateSelectorForObject(obj runtime.Object, selector metav1.LabelSelector)
|
|||
|
||||
// getResourcesAndSelector retrieves resources and the selector expression from the given args (assuming selectors the last arg)
|
||||
func getResourcesAndSelector(args []string) (resources []string, selector *metav1.LabelSelector, err error) {
|
||||
if len(args) > 1 {
|
||||
resources = args[:len(args)-1]
|
||||
if len(args) == 0 {
|
||||
return []string{}, nil, nil
|
||||
}
|
||||
resources = args[:len(args)-1]
|
||||
selector, err = metav1.ParseToLabelSelector(args[len(args)-1])
|
||||
return resources, selector, err
|
||||
}
|
||||
|
|
|
@ -283,6 +283,13 @@ func TestGetResourcesAndSelector(t *testing.T) {
|
|||
MatchExpressions: []metav1.LabelSelectorRequirement{},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "no resource and selector",
|
||||
args: args{args: []string{}},
|
||||
wantResources: []string{},
|
||||
wantErr: false,
|
||||
wantSelector: nil,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
gotResources, gotSelector, err := getResourcesAndSelector(tt.args.args)
|
||||
|
|
Loading…
Reference in New Issue