mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #88998 from zhouya0/kubectl_apply_generate_name_error_message
Add kubectl apply generate name error message
This commit is contained in:
commit
dbef5e3e31
@ -399,6 +399,14 @@ func (o *ApplyOptions) applyOneObject(info *resource.Info) error {
|
||||
klog.V(4).Infof("error recording current command: %v", err)
|
||||
}
|
||||
|
||||
if len(info.Name) == 0 {
|
||||
metadata, _ := meta.Accessor(info.Object)
|
||||
generatedName := metadata.GetGenerateName()
|
||||
if len(generatedName) > 0 {
|
||||
return fmt.Errorf("from %s: cannot use generate name with apply", generatedName)
|
||||
}
|
||||
}
|
||||
|
||||
helper := resource.NewHelper(info.Client, info.Mapping).
|
||||
DryRun(o.DryRunStrategy == cmdutil.DryRunServer).
|
||||
WithFieldManager(o.FieldManager)
|
||||
|
@ -97,6 +97,7 @@ const (
|
||||
filenameRCPatchTest = "../../../testdata/apply/patch.json"
|
||||
dirName = "../../../testdata/apply/testdir"
|
||||
filenameRCJSON = "../../../testdata/apply/rc.json"
|
||||
filenamePodGeneratedName = "../../../testdata/apply/pod-generated-name.yaml"
|
||||
|
||||
filenameWidgetClientside = "../../../testdata/apply/widget-clientside.yaml"
|
||||
filenameWidgetServerside = "../../../testdata/apply/widget-serverside.yaml"
|
||||
@ -1410,3 +1411,22 @@ func TestDontAllowForceApplyWithServerDryRun(t *testing.T) {
|
||||
|
||||
t.Fatalf(`expected error "%s"`, expectedError)
|
||||
}
|
||||
|
||||
func TestDontAllowApplyWithPodGeneratedName(t *testing.T) {
|
||||
expectedError := "error: from testing-: cannot use generate name with apply"
|
||||
cmdutil.BehaviorOnFatal(func(str string, code int) {
|
||||
if str != expectedError {
|
||||
t.Fatalf(`expected error "%s", but got "%s"`, expectedError, str)
|
||||
}
|
||||
})
|
||||
|
||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||
defer tf.Cleanup()
|
||||
tf.ClientConfigVal = cmdtesting.DefaultClientConfig()
|
||||
|
||||
ioStreams, _, _, _ := genericclioptions.NewTestIOStreams()
|
||||
cmd := NewCmdApply("kubectl", tf, ioStreams)
|
||||
cmd.Flags().Set("filename", filenamePodGeneratedName)
|
||||
cmd.Flags().Set("dry-run", "client")
|
||||
cmd.Run(cmd, []string{})
|
||||
}
|
||||
|
8
staging/src/k8s.io/kubectl/testdata/apply/pod-generated-name.yaml
vendored
Normal file
8
staging/src/k8s.io/kubectl/testdata/apply/pod-generated-name.yaml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
kind: Pod
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
generateName: testing-
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx
|
||||
name: nginx
|
Loading…
Reference in New Issue
Block a user