diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index 599665331b9..c8a6ce007ba 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -72,7 +72,6 @@ go_library( "//pkg/api/legacyscheme:go_default_library", "//pkg/api/validation:go_default_library", "//pkg/apis/certificates:go_default_library", - "//pkg/apis/policy:go_default_library", "//pkg/apis/rbac:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library", @@ -116,6 +115,7 @@ go_library( "//vendor/k8s.io/api/batch/v1beta1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", + "//vendor/k8s.io/api/policy/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -139,6 +139,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", + "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", "//vendor/k8s.io/client-go/tools/portforward:go_default_library", @@ -206,7 +207,6 @@ go_test( "//pkg/api/testing:go_default_library", "//pkg/apis/batch:go_default_library", "//pkg/apis/extensions:go_default_library", - "//pkg/apis/policy:go_default_library", "//pkg/apis/rbac:go_default_library", "//pkg/kubectl:go_default_library", "//pkg/kubectl/cmd/testing:go_default_library", @@ -223,6 +223,7 @@ go_test( "//vendor/github.com/stretchr/testify/assert:go_default_library", "//vendor/gopkg.in/yaml.v2:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", + "//vendor/k8s.io/api/policy/v1beta1:go_default_library", "//vendor/k8s.io/api/rbac/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", diff --git a/pkg/kubectl/cmd/drain.go b/pkg/kubectl/cmd/drain.go index 9a678e771c0..19d49c3e6e5 100644 --- a/pkg/kubectl/cmd/drain.go +++ b/pkg/kubectl/cmd/drain.go @@ -28,6 +28,7 @@ import ( "github.com/spf13/cobra" corev1 "k8s.io/api/core/v1" + policyv1beta1 "k8s.io/api/policy/v1beta1" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -38,11 +39,9 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/wait" + "k8s.io/client-go/kubernetes" restclient "k8s.io/client-go/rest" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/apis/policy" - "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl/cmd/templates" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" @@ -51,7 +50,7 @@ import ( ) type DrainOptions struct { - client internalclientset.Interface + client kubernetes.Interface restClient *restclient.RESTClient Factory cmdutil.Factory Force bool @@ -71,7 +70,7 @@ type DrainOptions struct { // Takes a pod and returns a bool indicating whether or not to operate on the // pod, an optional warning message, and an optional fatal error. -type podFilter func(api.Pod) (include bool, w *warning, f *fatal) +type podFilter func(corev1.Pod) (include bool, w *warning, f *fatal) type warning struct { string } @@ -220,7 +219,7 @@ func (o *DrainOptions) SetupDrain(cmd *cobra.Command, args []string) error { o.DryRun = cmdutil.GetFlagBool(cmd, "dry-run") - if o.client, err = o.Factory.ClientSet(); err != nil { + if o.client, err = o.Factory.KubernetesClientSet(); err != nil { return err } @@ -339,12 +338,12 @@ func (o *DrainOptions) getController(namespace string, controllerRef *metav1.Own case "ReplicaSet": return o.client.Extensions().ReplicaSets(namespace).Get(controllerRef.Name, metav1.GetOptions{}) case "StatefulSet": - return o.client.Apps().StatefulSets(namespace).Get(controllerRef.Name, metav1.GetOptions{}) + return o.client.AppsV1beta1().StatefulSets(namespace).Get(controllerRef.Name, metav1.GetOptions{}) } return nil, fmt.Errorf("Unknown controller kind %q", controllerRef.Kind) } -func (o *DrainOptions) getPodController(pod api.Pod) (*metav1.OwnerReference, error) { +func (o *DrainOptions) getPodController(pod corev1.Pod) (*metav1.OwnerReference, error) { controllerRef := metav1.GetControllerOf(&pod) if controllerRef == nil { return nil, nil @@ -362,9 +361,9 @@ func (o *DrainOptions) getPodController(pod api.Pod) (*metav1.OwnerReference, er return controllerRef, nil } -func (o *DrainOptions) unreplicatedFilter(pod api.Pod) (bool, *warning, *fatal) { +func (o *DrainOptions) unreplicatedFilter(pod corev1.Pod) (bool, *warning, *fatal) { // any finished pod can be removed - if pod.Status.Phase == api.PodSucceeded || pod.Status.Phase == api.PodFailed { + if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed { return true, nil, nil } @@ -385,7 +384,7 @@ func (o *DrainOptions) unreplicatedFilter(pod api.Pod) (bool, *warning, *fatal) return true, &warning{kUnmanagedWarning}, nil } -func (o *DrainOptions) daemonsetFilter(pod api.Pod) (bool, *warning, *fatal) { +func (o *DrainOptions) daemonsetFilter(pod corev1.Pod) (bool, *warning, *fatal) { // Note that we return false in cases where the pod is DaemonSet managed, // regardless of flags. We never delete them, the only question is whether // their presence constitutes an error. @@ -413,14 +412,14 @@ func (o *DrainOptions) daemonsetFilter(pod api.Pod) (bool, *warning, *fatal) { return false, &warning{kDaemonsetWarning}, nil } -func mirrorPodFilter(pod api.Pod) (bool, *warning, *fatal) { +func mirrorPodFilter(pod corev1.Pod) (bool, *warning, *fatal) { if _, found := pod.ObjectMeta.Annotations[corev1.MirrorPodAnnotationKey]; found { return false, nil, nil } return true, nil, nil } -func hasLocalStorage(pod api.Pod) bool { +func hasLocalStorage(pod corev1.Pod) bool { for _, volume := range pod.Spec.Volumes { if volume.EmptyDir != nil { return true @@ -430,7 +429,7 @@ func hasLocalStorage(pod api.Pod) bool { return false } -func (o *DrainOptions) localStorageFilter(pod api.Pod) (bool, *warning, *fatal) { +func (o *DrainOptions) localStorageFilter(pod corev1.Pod) (bool, *warning, *fatal) { if !hasLocalStorage(pod) { return true, nil, nil } @@ -454,7 +453,7 @@ func (ps podStatuses) Message() string { // getPodsForDeletion receives resource info for a node, and returns all the pods from the given node that we // are planning on deleting. If there are any pods preventing us from deleting, we return that list in an error. -func (o *DrainOptions) getPodsForDeletion(nodeInfo *resource.Info) (pods []api.Pod, err error) { +func (o *DrainOptions) getPodsForDeletion(nodeInfo *resource.Info) (pods []corev1.Pod, err error) { podList, err := o.client.Core().Pods(metav1.NamespaceAll).List(metav1.ListOptions{ FieldSelector: fields.SelectorFromSet(fields.Set{"spec.nodeName": nodeInfo.Name}).String()}) if err != nil { @@ -483,7 +482,7 @@ func (o *DrainOptions) getPodsForDeletion(nodeInfo *resource.Info) (pods []api.P } if len(fs) > 0 { - return []api.Pod{}, errors.New(fs.Message()) + return []corev1.Pod{}, errors.New(fs.Message()) } if len(ws) > 0 { fmt.Fprintf(o.ErrOut, "WARNING: %s\n", ws.Message()) @@ -491,7 +490,7 @@ func (o *DrainOptions) getPodsForDeletion(nodeInfo *resource.Info) (pods []api.P return pods, nil } -func (o *DrainOptions) deletePod(pod api.Pod) error { +func (o *DrainOptions) deletePod(pod corev1.Pod) error { deleteOptions := &metav1.DeleteOptions{} if o.GracePeriodSeconds >= 0 { gracePeriodSeconds := int64(o.GracePeriodSeconds) @@ -500,13 +499,13 @@ func (o *DrainOptions) deletePod(pod api.Pod) error { return o.client.Core().Pods(pod.Namespace).Delete(pod.Name, deleteOptions) } -func (o *DrainOptions) evictPod(pod api.Pod, policyGroupVersion string) error { +func (o *DrainOptions) evictPod(pod corev1.Pod, policyGroupVersion string) error { deleteOptions := &metav1.DeleteOptions{} if o.GracePeriodSeconds >= 0 { gracePeriodSeconds := int64(o.GracePeriodSeconds) deleteOptions.GracePeriodSeconds = &gracePeriodSeconds } - eviction := &policy.Eviction{ + eviction := &policyv1beta1.Eviction{ TypeMeta: metav1.TypeMeta{ APIVersion: policyGroupVersion, Kind: EvictionKind, @@ -522,7 +521,7 @@ func (o *DrainOptions) evictPod(pod api.Pod, policyGroupVersion string) error { } // deleteOrEvictPods deletes or evicts the pods on the api server -func (o *DrainOptions) deleteOrEvictPods(pods []api.Pod) error { +func (o *DrainOptions) deleteOrEvictPods(pods []corev1.Pod) error { if len(pods) == 0 { return nil } @@ -532,7 +531,7 @@ func (o *DrainOptions) deleteOrEvictPods(pods []api.Pod) error { return err } - getPodFn := func(namespace, name string) (*api.Pod, error) { + getPodFn := func(namespace, name string) (*corev1.Pod, error) { return o.client.Core().Pods(namespace).Get(name, metav1.GetOptions{}) } @@ -543,12 +542,12 @@ func (o *DrainOptions) deleteOrEvictPods(pods []api.Pod) error { } } -func (o *DrainOptions) evictPods(pods []api.Pod, policyGroupVersion string, getPodFn func(namespace, name string) (*api.Pod, error)) error { +func (o *DrainOptions) evictPods(pods []corev1.Pod, policyGroupVersion string, getPodFn func(namespace, name string) (*corev1.Pod, error)) error { doneCh := make(chan bool, len(pods)) errCh := make(chan error, 1) for _, pod := range pods { - go func(pod api.Pod, doneCh chan bool, errCh chan error) { + go func(pod corev1.Pod, doneCh chan bool, errCh chan error) { var err error for { err = o.evictPod(pod, policyGroupVersion) @@ -564,7 +563,7 @@ func (o *DrainOptions) evictPods(pods []api.Pod, policyGroupVersion string, getP return } } - podArray := []api.Pod{pod} + podArray := []corev1.Pod{pod} _, err = o.waitForDelete(podArray, kubectl.Interval, time.Duration(math.MaxInt64), true, getPodFn) if err == nil { doneCh <- true @@ -597,7 +596,7 @@ func (o *DrainOptions) evictPods(pods []api.Pod, policyGroupVersion string, getP } } -func (o *DrainOptions) deletePods(pods []api.Pod, getPodFn func(namespace, name string) (*api.Pod, error)) error { +func (o *DrainOptions) deletePods(pods []corev1.Pod, getPodFn func(namespace, name string) (*corev1.Pod, error)) error { // 0 timeout means infinite, we use MaxInt64 to represent it. var globalTimeout time.Duration if o.Timeout == 0 { @@ -615,7 +614,7 @@ func (o *DrainOptions) deletePods(pods []api.Pod, getPodFn func(namespace, name return err } -func (o *DrainOptions) waitForDelete(pods []api.Pod, interval, timeout time.Duration, usingEviction bool, getPodFn func(string, string) (*api.Pod, error)) ([]api.Pod, error) { +func (o *DrainOptions) waitForDelete(pods []corev1.Pod, interval, timeout time.Duration, usingEviction bool, getPodFn func(string, string) (*corev1.Pod, error)) ([]corev1.Pod, error) { var verbStr string if usingEviction { verbStr = "evicted" @@ -623,7 +622,7 @@ func (o *DrainOptions) waitForDelete(pods []api.Pod, interval, timeout time.Dura verbStr = "deleted" } err := wait.PollImmediate(interval, timeout, func() (bool, error) { - pendingPods := []api.Pod{} + pendingPods := []corev1.Pod{} for i, pod := range pods { p, err := getPodFn(pod.Namespace, pod.Name) if apierrors.IsNotFound(err) || (p != nil && p.ObjectMeta.UID != pod.ObjectMeta.UID) { @@ -646,7 +645,7 @@ func (o *DrainOptions) waitForDelete(pods []api.Pod, interval, timeout time.Dura // SupportEviction uses Discovery API to find out if the server support eviction subresource // If support, it will return its groupVersion; Otherwise, it will return "" -func SupportEviction(clientset internalclientset.Interface) (string, error) { +func SupportEviction(clientset kubernetes.Interface) (string, error) { discoveryClient := clientset.Discovery() groupList, err := discoveryClient.ServerGroups() if err != nil { diff --git a/pkg/kubectl/cmd/drain_test.go b/pkg/kubectl/cmd/drain_test.go index 5d277055f47..10be330fad1 100644 --- a/pkg/kubectl/cmd/drain_test.go +++ b/pkg/kubectl/cmd/drain_test.go @@ -33,7 +33,8 @@ import ( "github.com/spf13/cobra" - "k8s.io/api/core/v1" + corev1 "k8s.io/api/core/v1" + policyv1beta1 "k8s.io/api/policy/v1beta1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -48,7 +49,6 @@ import ( "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/apis/extensions" - "k8s.io/kubernetes/pkg/apis/policy" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" ) @@ -58,22 +58,22 @@ const ( DeleteMethod = "Delete" ) -var node *v1.Node -var cordoned_node *v1.Node +var node *corev1.Node +var cordoned_node *corev1.Node func boolptr(b bool) *bool { return &b } func TestMain(m *testing.M) { // Create a node. - node = &v1.Node{ + node = &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: "node", CreationTimestamp: metav1.Time{Time: time.Now()}, }, - Spec: v1.NodeSpec{ + Spec: corev1.NodeSpec{ ExternalID: "node", }, - Status: v1.NodeStatus{}, + Status: corev1.NodeStatus{}, } // A copy of the same node, but cordoned. @@ -85,8 +85,8 @@ func TestMain(m *testing.M) { func TestCordon(t *testing.T) { tests := []struct { description string - node *v1.Node - expected *v1.Node + node *corev1.Node + expected *corev1.Node cmd func(cmdutil.Factory, io.Writer) *cobra.Command arg string expectFatal bool @@ -151,7 +151,7 @@ func TestCordon(t *testing.T) { for _, test := range tests { f, tf, codec, ns := cmdtesting.NewAPIFactory() - new_node := &v1.Node{} + new_node := &corev1.Node{} updated := false tf.Client = &fake.RESTClient{ GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, @@ -173,7 +173,7 @@ func TestCordon(t *testing.T) { if err != nil { t.Fatalf("%s: unexpected error: %v", test.description, err) } - appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &v1.Node{}) + appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &corev1.Node{}) if err != nil { t.Fatalf("%s: unexpected error: %v", test.description, err) } @@ -250,7 +250,7 @@ func TestDrain(t *testing.T) { rc_anno := make(map[string]string) rc_anno[api.CreatedByAnnotation] = refJson(t, &rc) - rc_pod := api.Pod{ + rc_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", @@ -269,7 +269,7 @@ func TestDrain(t *testing.T) { }, }, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", }, } @@ -289,7 +289,7 @@ func TestDrain(t *testing.T) { ds_anno := make(map[string]string) ds_anno[api.CreatedByAnnotation] = refJson(t, &ds) - ds_pod := api.Pod{ + ds_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", @@ -307,7 +307,7 @@ func TestDrain(t *testing.T) { }, }, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", }, } @@ -327,7 +327,7 @@ func TestDrain(t *testing.T) { missing_ds_anno := make(map[string]string) missing_ds_anno[api.CreatedByAnnotation] = refJson(t, &missing_ds) - orphaned_ds_pod := api.Pod{ + orphaned_ds_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", @@ -345,7 +345,7 @@ func TestDrain(t *testing.T) { }, }, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", }, } @@ -362,7 +362,7 @@ func TestDrain(t *testing.T) { }, } - job_pod := api.Pod{ + job_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", @@ -398,7 +398,7 @@ func TestDrain(t *testing.T) { rs_anno := make(map[string]string) rs_anno[api.CreatedByAnnotation] = refJson(t, &rs) - rs_pod := api.Pod{ + rs_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", @@ -416,36 +416,36 @@ func TestDrain(t *testing.T) { }, }, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", }, } - naked_pod := api.Pod{ + naked_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", CreationTimestamp: metav1.Time{Time: time.Now()}, Labels: labels, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", }, } - emptydir_pod := api.Pod{ + emptydir_pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", Namespace: "default", CreationTimestamp: metav1.Time{Time: time.Now()}, Labels: labels, }, - Spec: api.PodSpec{ + Spec: corev1.PodSpec{ NodeName: "node", - Volumes: []api.Volume{ + Volumes: []corev1.Volume{ { Name: "scratch", - VolumeSource: api.VolumeSource{EmptyDir: &api.EmptyDirVolumeSource{Medium: ""}}, + VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{Medium: ""}}, }, }, }, @@ -453,9 +453,9 @@ func TestDrain(t *testing.T) { tests := []struct { description string - node *v1.Node - expected *v1.Node - pods []api.Pod + node *corev1.Node + expected *corev1.Node + pods []corev1.Pod rcs []api.ReplicationController replicaSets []extensions.ReplicaSet args []string @@ -466,7 +466,7 @@ func TestDrain(t *testing.T) { description: "RC-managed pod", node: node, expected: cordoned_node, - pods: []api.Pod{rc_pod}, + pods: []corev1.Pod{rc_pod}, rcs: []api.ReplicationController{rc}, args: []string{"node"}, expectFatal: false, @@ -476,7 +476,7 @@ func TestDrain(t *testing.T) { description: "DS-managed pod", node: node, expected: cordoned_node, - pods: []api.Pod{ds_pod}, + pods: []corev1.Pod{ds_pod}, rcs: []api.ReplicationController{rc}, args: []string{"node"}, expectFatal: true, @@ -486,7 +486,7 @@ func TestDrain(t *testing.T) { description: "orphaned DS-managed pod", node: node, expected: cordoned_node, - pods: []api.Pod{orphaned_ds_pod}, + pods: []corev1.Pod{orphaned_ds_pod}, rcs: []api.ReplicationController{}, args: []string{"node"}, expectFatal: true, @@ -496,7 +496,7 @@ func TestDrain(t *testing.T) { description: "orphaned DS-managed pod with --force", node: node, expected: cordoned_node, - pods: []api.Pod{orphaned_ds_pod}, + pods: []corev1.Pod{orphaned_ds_pod}, rcs: []api.ReplicationController{}, args: []string{"node", "--force"}, expectFatal: false, @@ -506,7 +506,7 @@ func TestDrain(t *testing.T) { description: "DS-managed pod with --ignore-daemonsets", node: node, expected: cordoned_node, - pods: []api.Pod{ds_pod}, + pods: []corev1.Pod{ds_pod}, rcs: []api.ReplicationController{rc}, args: []string{"node", "--ignore-daemonsets"}, expectFatal: false, @@ -516,7 +516,7 @@ func TestDrain(t *testing.T) { description: "Job-managed pod", node: node, expected: cordoned_node, - pods: []api.Pod{job_pod}, + pods: []corev1.Pod{job_pod}, rcs: []api.ReplicationController{rc}, args: []string{"node"}, expectFatal: false, @@ -526,7 +526,7 @@ func TestDrain(t *testing.T) { description: "RS-managed pod", node: node, expected: cordoned_node, - pods: []api.Pod{rs_pod}, + pods: []corev1.Pod{rs_pod}, replicaSets: []extensions.ReplicaSet{rs}, args: []string{"node"}, expectFatal: false, @@ -536,7 +536,7 @@ func TestDrain(t *testing.T) { description: "naked pod", node: node, expected: cordoned_node, - pods: []api.Pod{naked_pod}, + pods: []corev1.Pod{naked_pod}, rcs: []api.ReplicationController{}, args: []string{"node"}, expectFatal: true, @@ -546,7 +546,7 @@ func TestDrain(t *testing.T) { description: "naked pod with --force", node: node, expected: cordoned_node, - pods: []api.Pod{naked_pod}, + pods: []corev1.Pod{naked_pod}, rcs: []api.ReplicationController{}, args: []string{"node", "--force"}, expectFatal: false, @@ -556,7 +556,7 @@ func TestDrain(t *testing.T) { description: "pod with EmptyDir", node: node, expected: cordoned_node, - pods: []api.Pod{emptydir_pod}, + pods: []corev1.Pod{emptydir_pod}, args: []string{"node", "--force"}, expectFatal: true, expectDelete: false, @@ -565,7 +565,7 @@ func TestDrain(t *testing.T) { description: "pod with EmptyDir and --delete-local-data", node: node, expected: cordoned_node, - pods: []api.Pod{emptydir_pod}, + pods: []corev1.Pod{emptydir_pod}, args: []string{"node", "--force", "--delete-local-data=true"}, expectFatal: false, expectDelete: true, @@ -574,7 +574,7 @@ func TestDrain(t *testing.T) { description: "empty node", node: node, expected: cordoned_node, - pods: []api.Pod{}, + pods: []corev1.Pod{}, rcs: []api.ReplicationController{rc}, args: []string{"node"}, expectFatal: false, @@ -592,7 +592,7 @@ func TestDrain(t *testing.T) { currMethod = DeleteMethod } for _, test := range tests { - new_node := &v1.Node{} + new_node := &corev1.Node{} deleted := false evicted := false f, tf, codec, ns := cmdtesting.NewAPIFactory() @@ -645,7 +645,7 @@ func TestDrain(t *testing.T) { case m.isFor("GET", "/namespaces/default/replicasets/rs"): return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(testapi.Extensions.Codec(), &test.replicaSets[0])}, nil case m.isFor("GET", "/namespaces/default/pods/bar"): - return &http.Response{StatusCode: 404, Header: defaultHeader(), Body: objBody(codec, &api.Pod{})}, nil + return &http.Response{StatusCode: 404, Header: defaultHeader(), Body: objBody(codec, &corev1.Pod{})}, nil case m.isFor("GET", "/pods"): values, err := url.ParseQuery(req.URL.RawQuery) if err != nil { @@ -656,7 +656,7 @@ func TestDrain(t *testing.T) { if !reflect.DeepEqual(get_params, values) { t.Fatalf("%s: expected:\n%v\nsaw:\n%v\n", test.description, get_params, values) } - return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.PodList{Items: test.pods})}, nil + return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &corev1.PodList{Items: test.pods})}, nil case m.isFor("GET", "/replicationcontrollers"): return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationControllerList{Items: test.rcs})}, nil case m.isFor("PATCH", "/nodes/node"): @@ -669,7 +669,7 @@ func TestDrain(t *testing.T) { if err != nil { t.Fatalf("%s: unexpected error: %v", test.description, err) } - appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &v1.Node{}) + appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &corev1.Node{}) if err != nil { t.Fatalf("%s: unexpected error: %v", test.description, err) } @@ -685,7 +685,7 @@ func TestDrain(t *testing.T) { return &http.Response{StatusCode: 204, Header: defaultHeader(), Body: objBody(codec, &test.pods[0])}, nil case m.isFor("POST", "/namespaces/default/pods/bar/eviction"): evicted = true - return &http.Response{StatusCode: 201, Header: defaultHeader(), Body: policyObjBody(&policy.Eviction{})}, nil + return &http.Response{StatusCode: 201, Header: defaultHeader(), Body: policyObjBody(&policyv1beta1.Eviction{})}, nil default: t.Fatalf("%s: unexpected request: %v %#v\n%#v", test.description, req.Method, req.URL, req) return nil, nil @@ -744,7 +744,7 @@ func TestDeletePods(t *testing.T) { expectPendingPods bool expectError bool expectedError *error - getPodFn func(namespace, name string) (*api.Pod, error) + getPodFn func(namespace, name string) (*corev1.Pod, error) }{ { description: "Wait for deleting to complete", @@ -753,7 +753,7 @@ func TestDeletePods(t *testing.T) { expectPendingPods: false, expectError: false, expectedError: nil, - getPodFn: func(namespace, name string) (*api.Pod, error) { + getPodFn: func(namespace, name string) (*corev1.Pod, error) { oldPodMap, _ := createPods(false) newPodMap, _ := createPods(true) if oldPod, found := oldPodMap[name]; found { @@ -778,7 +778,7 @@ func TestDeletePods(t *testing.T) { expectPendingPods: true, expectError: true, expectedError: &wait.ErrWaitTimeout, - getPodFn: func(namespace, name string) (*api.Pod, error) { + getPodFn: func(namespace, name string) (*corev1.Pod, error) { oldPodMap, _ := createPods(false) if oldPod, found := oldPodMap[name]; found { return &oldPod, nil @@ -793,7 +793,7 @@ func TestDeletePods(t *testing.T) { expectPendingPods: true, expectError: true, expectedError: nil, - getPodFn: func(namespace, name string) (*api.Pod, error) { + getPodFn: func(namespace, name string) (*corev1.Pod, error) { return nil, errors.New("This is a random error for testing") }, }, @@ -828,9 +828,9 @@ func TestDeletePods(t *testing.T) { } } -func createPods(ifCreateNewPods bool) (map[string]api.Pod, []api.Pod) { - podMap := make(map[string]api.Pod) - podSlice := []api.Pod{} +func createPods(ifCreateNewPods bool) (map[string]corev1.Pod, []corev1.Pod) { + podMap := make(map[string]corev1.Pod) + podSlice := []corev1.Pod{} for i := 0; i < 8; i++ { var uid types.UID if ifCreateNewPods { @@ -838,7 +838,7 @@ func createPods(ifCreateNewPods bool) (map[string]api.Pod, []api.Pod) { } else { uid = types.UID(strconv.Itoa(i) + strconv.Itoa(i)) } - pod := api.Pod{ + pod := corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "pod" + strconv.Itoa(i), Namespace: "default",