diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index df4907a7a..eb4791b04 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -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", diff --git a/go.mod b/go.mod index e74ce4d4a..3f6ea003a 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 1e4ea269b..bbaab90ae 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/pkg/cmd/drain/drain.go b/pkg/cmd/drain/drain.go index 04a7062e2..2cb0be633 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 83e88dc0a..adb2b29ea 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 e009098cf..8738df0d0 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 840f6dfc9..ce2a376d3 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) }