diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index f9f3d072065..8dd6029f796 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -2642,6 +2642,36 @@ func WaitForRCPodsRunning(c clientset.Interface, ns, rcName string) error { return nil } +func ScaleDeployment(clientset clientset.Interface, ns, name string, size uint, wait bool) error { + By(fmt.Sprintf("Scaling Deployment %s in namespace %s to %d", name, ns, size)) + scaler, err := kubectl.ScalerFor(extensions.Kind("Deployment"), clientset) + if err != nil { + return err + } + waitForScale := kubectl.NewRetryParams(5*time.Second, 1*time.Minute) + waitForReplicas := kubectl.NewRetryParams(5*time.Second, 5*time.Minute) + if err = scaler.Scale(ns, name, size, nil, waitForScale, waitForReplicas); err != nil { + return fmt.Errorf("error while scaling Deployment %s to %d replicas: %v", name, size, err) + } + if !wait { + return nil + } + return WaitForDeploymentPodsRunning(clientset, ns, name) +} + +func WaitForDeploymentPodsRunning(c clientset.Interface, ns, name string) error { + deployment, err := c.Extensions().Deployments(ns).Get(name) + if err != nil { + return err + } + selector := labels.SelectorFromSet(labels.Set(deployment.Spec.Selector.MatchLabels)) + err = testutils.WaitForPodsWithLabelRunning(c, ns, selector) + if err != nil { + return fmt.Errorf("Error while waiting for Deployment %s pods to be running: %v", name, err) + } + return nil +} + // Returns true if all the specified pods are scheduled, else returns false. func podsWithLabelScheduled(c clientset.Interface, ns string, label labels.Selector) (bool, error) { PodStore := testutils.NewPodStore(c, ns, label, fields.Everything()) diff --git a/test/e2e/rescheduler.go b/test/e2e/rescheduler.go index 1f51cb8d5e4..962fba7888e 100644 --- a/test/e2e/rescheduler.go +++ b/test/e2e/rescheduler.go @@ -55,16 +55,17 @@ var _ = framework.KubeDescribe("Rescheduler [Serial]", func() { By("creating a new instance of Dashboard and waiting for Dashboard to be scheduled") label := labels.SelectorFromSet(labels.Set(map[string]string{"k8s-app": "kubernetes-dashboard"})) listOpts := api.ListOptions{LabelSelector: label} - rcs, err := f.ClientSet.Core().ReplicationControllers(api.NamespaceSystem).List(listOpts) + deployments, err := f.ClientSet.Extensions().Deployments(api.NamespaceSystem).List(listOpts) framework.ExpectNoError(err) - Expect(len(rcs.Items)).Should(Equal(1)) + Expect(len(deployments.Items)).Should(Equal(1)) - rc := rcs.Items[0] - replicas := uint(rc.Spec.Replicas) + deployment := deployments.Items[0] + replicas := uint(deployment.Spec.Replicas) - err = framework.ScaleRC(f.ClientSet, api.NamespaceSystem, rc.Name, replicas+1, true) - defer framework.ExpectNoError(framework.ScaleRC(f.ClientSet, api.NamespaceSystem, rc.Name, replicas, true)) + err = framework.ScaleDeployment(f.ClientSet, api.NamespaceSystem, deployment.Name, replicas+1, true) + defer framework.ExpectNoError(framework.ScaleDeployment(f.ClientSet, api.NamespaceSystem, deployment.Name, replicas, true)) framework.ExpectNoError(err) + }) })