Merge pull request #95076 from dougsland/deprecate-delete-local-data

kubectl: deprecate --delete-local-data

Kubernetes-commit: f7cfe3ba0f0434f82208cc940c0770984e5758f5
This commit is contained in:
Kubernetes Publisher 2020-11-03 05:50:15 -08:00
commit 6e0a2df5c6
7 changed files with 28 additions and 14 deletions

4
Godeps/Godeps.json generated
View File

@ -768,7 +768,7 @@
},
{
"ImportPath": "k8s.io/apimachinery",
"Rev": "a876aa51a713"
"Rev": "1aed267868af"
},
{
"ImportPath": "k8s.io/cli-runtime",
@ -776,7 +776,7 @@
},
{
"ImportPath": "k8s.io/client-go",
"Rev": "4ef01cd5e2b2"
"Rev": "534b10dd0412"
},
{
"ImportPath": "k8s.io/code-generator",

10
go.mod
View File

@ -35,9 +35,9 @@ require (
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4
gopkg.in/yaml.v2 v2.2.8
k8s.io/api v0.0.0-20201103002210-18d4659ab40b
k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713
k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af
k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60
k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2
k8s.io/client-go v0.0.0-20201103122446-534b10dd0412
k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128
k8s.io/klog/v2 v2.2.0
k8s.io/kube-openapi v0.0.0-20200923155610-8b5066479488
@ -49,10 +49,12 @@ require (
replace (
k8s.io/api => k8s.io/api v0.0.0-20201103002210-18d4659ab40b
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60
k8s.io/client-go => k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2
k8s.io/client-go => k8s.io/client-go v0.0.0-20201103122446-534b10dd0412
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20201102201853-e7a6809e9fe3
k8s.io/component-base => k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128
k8s.io/metrics => k8s.io/metrics v0.0.0-20201102204027-de1a3d1600b4
)
replace k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20201103005013-f4b28bd014f1

4
go.sum
View File

@ -509,9 +509,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
k8s.io/api v0.0.0-20201103002210-18d4659ab40b/go.mod h1:b+K6RbdbECmbVaw11+iMzmt6th7YpfdynGdh/HKUa54=
k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713/go.mod h1:6s3VNb000AUbBIxR7q3WHlbBwfpEGqIJsCG5gIX+0LI=
k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af/go.mod h1:6s3VNb000AUbBIxR7q3WHlbBwfpEGqIJsCG5gIX+0LI=
k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60/go.mod h1:BPUgo08u37PddGZFkOYILKKyRdwmYp82Z1RunIwiQ+4=
k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2/go.mod h1:q8iYaakKTdWiTaU4ZsW7uUdg++3YOt99MPnpQ4BlG+w=
k8s.io/client-go v0.0.0-20201103122446-534b10dd0412/go.mod h1:eZXqnPJiVVWY2+7NwTdK2FTjO8hczO3Dyc4NYU9HPOs=
k8s.io/code-generator v0.0.0-20201102201853-e7a6809e9fe3/go.mod h1:oioc17TXBB973K4R+ytm5k9jY1BktboxJc7qu3i29V0=
k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128/go.mod h1:/nWuTBUUN0ayOy6M2gPPEbJLcu3pBzdQG+RvOeE0nr8=
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=

View File

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

View File

@ -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,
},

View File

@ -52,7 +52,7 @@ type Helper struct {
GracePeriodSeconds int
IgnoreAllDaemonSets bool
Timeout time.Duration
DeleteLocalData bool
DeleteEmptyDirData bool
Selector string
PodSelector string

View File

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