From f93ad0204eeeb21e567df3d5841847373bf7a646 Mon Sep 17 00:00:00 2001 From: Yuvaraj Kakaraparthi Date: Mon, 6 Jul 2020 10:07:26 -0700 Subject: [PATCH] kubectl: cannot use --force with --server-side --- .../src/k8s.io/kubectl/pkg/cmd/apply/apply.go | 4 +++ .../kubectl/pkg/cmd/apply/apply_test.go | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply.go b/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply.go index 553d2cf3c2c..7531f581af1 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply.go @@ -250,6 +250,10 @@ func (o *ApplyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error { return err } + if o.ServerSideApply && o.DeleteOptions.ForceDeletion { + return fmt.Errorf("--force cannot be used with --server-side") + } + if o.DryRunStrategy == cmdutil.DryRunServer && o.DeleteOptions.ForceDeletion { return fmt.Errorf("--dry-run=server cannot be used with --force") } diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply_test.go b/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply_test.go index ca910582065..7fec5564bbd 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply_test.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/apply/apply_test.go @@ -1412,6 +1412,34 @@ func TestDontAllowForceApplyWithServerDryRun(t *testing.T) { t.Fatalf(`expected error "%s"`, expectedError) } +func TestDontAllowForceApplyWithServerSide(t *testing.T) { + expectedError := "error: --force cannot be used with --server-side" + + cmdutil.BehaviorOnFatal(func(str string, code int) { + panic(str) + }) + defer func() { + actualError := recover() + if expectedError != actualError { + t.Fatalf(`expected error "%s", but got "%s"`, expectedError, actualError) + } + }() + + tf := cmdtesting.NewTestFactory().WithNamespace("test") + defer tf.Cleanup() + + tf.ClientConfigVal = cmdtesting.DefaultClientConfig() + + ioStreams, _, _, _ := genericclioptions.NewTestIOStreams() + cmd := NewCmdApply("kubectl", tf, ioStreams) + cmd.Flags().Set("filename", filenameRC) + cmd.Flags().Set("server-side", "true") + cmd.Flags().Set("force", "true") + cmd.Run(cmd, []string{}) + + 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) {