From 56ea9621b7fc333d2d2dde8ae39c15cacf28dbf7 Mon Sep 17 00:00:00 2001 From: Douglas Schilling Landgraf Date: Fri, 25 Sep 2020 17:33:45 -0400 Subject: [PATCH] kubectl: deprecate --delete-local-data The option --delete-local-data according with users is not clear. This patch deprecate --delete-local-data in favor of --delete-emptydir-data. Reference: https://github.com/kubernetes/kubernetes/issues/80228 Signed-off-by: Douglas Schilling Landgraf Kubernetes-commit: 625e47aaa2769d221c59e5b9b05b4ac97212719b --- pkg/cmd/drain/drain.go | 4 +++- pkg/cmd/drain/drain_test.go | 14 ++++++++++++-- pkg/drain/drain.go | 2 +- pkg/drain/filters.go | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/pkg/cmd/drain/drain.go b/pkg/cmd/drain/drain.go index 04a7062e..2cb0be63 100644 --- a/pkg/cmd/drain/drain.go +++ b/pkg/cmd/drain/drain.go @@ -187,7 +187,9 @@ func NewCmdDrain(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr } cmd.Flags().BoolVar(&o.drainer.Force, "force", o.drainer.Force, "Continue even if there are pods not managed by a ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet.") cmd.Flags().BoolVar(&o.drainer.IgnoreAllDaemonSets, "ignore-daemonsets", o.drainer.IgnoreAllDaemonSets, "Ignore DaemonSet-managed pods.") - cmd.Flags().BoolVar(&o.drainer.DeleteLocalData, "delete-local-data", o.drainer.DeleteLocalData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).") + cmd.Flags().BoolVar(&o.drainer.DeleteEmptyDirData, "delete-local-data", o.drainer.DeleteEmptyDirData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).") + cmd.Flags().MarkDeprecated("delete-local-data", "This option is deprecated and will be deleted. Use --delete-emptydir-data.") + cmd.Flags().BoolVar(&o.drainer.DeleteEmptyDirData, "delete-emptydir-data", o.drainer.DeleteEmptyDirData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).") cmd.Flags().IntVar(&o.drainer.GracePeriodSeconds, "grace-period", o.drainer.GracePeriodSeconds, "Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used.") cmd.Flags().DurationVar(&o.drainer.Timeout, "timeout", o.drainer.Timeout, "The length of time to wait before giving up, zero means infinite") cmd.Flags().StringVarP(&o.drainer.Selector, "selector", "l", o.drainer.Selector, "Selector (label query) to filter on") diff --git a/pkg/cmd/drain/drain_test.go b/pkg/cmd/drain/drain_test.go index 83e88dc0..adb2b29e 100644 --- a/pkg/cmd/drain/drain_test.go +++ b/pkg/cmd/drain/drain_test.go @@ -626,6 +626,16 @@ func TestDrain(t *testing.T) { expected: cordonedNode, pods: []corev1.Pod{jobPod}, rcs: []corev1.ReplicationController{rc}, + args: []string{"node", "--force", "--delete-emptydir-data=true"}, + expectFatal: false, + expectDelete: true, + }, + { + description: "Ensure compatibility for --delete-local-data until fully deprecated", + node: node, + expected: cordonedNode, + pods: []corev1.Pod{jobPod}, + rcs: []corev1.ReplicationController{rc}, args: []string{"node", "--force", "--delete-local-data=true"}, expectFatal: false, expectDelete: true, @@ -690,11 +700,11 @@ func TestDrain(t *testing.T) { expectDelete: true, }, { - description: "pod with EmptyDir and --delete-local-data", + description: "pod with EmptyDir and --delete-emptydir-data", node: node, expected: cordonedNode, pods: []corev1.Pod{emptydirPod}, - args: []string{"node", "--force", "--delete-local-data=true"}, + args: []string{"node", "--force", "--delete-emptydir-data=true"}, expectFatal: false, expectDelete: true, }, diff --git a/pkg/drain/drain.go b/pkg/drain/drain.go index e009098c..8738df0d 100644 --- a/pkg/drain/drain.go +++ b/pkg/drain/drain.go @@ -52,7 +52,7 @@ type Helper struct { GracePeriodSeconds int IgnoreAllDaemonSets bool Timeout time.Duration - DeleteLocalData bool + DeleteEmptyDirData bool Selector string PodSelector string diff --git a/pkg/drain/filters.go b/pkg/drain/filters.go index 840f6dfc..ce2a376d 100644 --- a/pkg/drain/filters.go +++ b/pkg/drain/filters.go @@ -31,7 +31,7 @@ import ( const ( daemonSetFatal = "DaemonSet-managed Pods (use --ignore-daemonsets to ignore)" daemonSetWarning = "ignoring DaemonSet-managed Pods" - localStorageFatal = "Pods with local storage (use --delete-local-data to override)" + localStorageFatal = "Pods with local storage (use --delete-emptydir-data to override)" localStorageWarning = "deleting Pods with local storage" unmanagedFatal = "Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet (use --force to override)" unmanagedWarning = "deleting Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet" @@ -218,7 +218,7 @@ func (d *Helper) localStorageFilter(pod corev1.Pod) PodDeleteStatus { if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed { return MakePodDeleteStatusOkay() } - if !d.DeleteLocalData { + if !d.DeleteEmptyDirData { return MakePodDeleteStatusWithError(localStorageFatal) }