Merge pull request #88998 from zhouya0/kubectl_apply_generate_name_error_message

Add kubectl apply generate name error message
This commit is contained in:
Kubernetes Prow Robot 2020-06-15 18:13:56 -07:00 committed by GitHub
commit dbef5e3e31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 0 deletions

View File

@ -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)

View File

@ -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{})
}

View File

@ -0,0 +1,8 @@
kind: Pod
apiVersion: v1
metadata:
generateName: testing-
spec:
containers:
- image: nginx
name: nginx