mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	test/e2e: Use apps/v1 Deployment/ReplicaSet.
This must be done at the same time as the controller update, since they share code.
This commit is contained in:
		@@ -39,6 +39,7 @@ go_library(
 | 
				
			|||||||
        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
					        "//vendor/github.com/stretchr/testify/assert:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
 | 
					        "//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library",
 | 
					        "//vendor/k8s.io/api/admissionregistration/v1beta1:go_default_library",
 | 
				
			||||||
 | 
					        "//vendor/k8s.io/api/apps/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/authorization/v1:go_default_library",
 | 
					        "//vendor/k8s.io/api/authorization/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/batch/v1:go_default_library",
 | 
					        "//vendor/k8s.io/api/batch/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/batch/v1beta1:go_default_library",
 | 
					        "//vendor/k8s.io/api/batch/v1beta1:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,8 +24,8 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
 | 
						rbacv1beta1 "k8s.io/api/rbac/v1beta1"
 | 
				
			||||||
	apierrs "k8s.io/apimachinery/pkg/api/errors"
 | 
						apierrs "k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
@@ -87,7 +87,7 @@ func cleanTest(client clientset.Interface, aggrclient *aggregatorclient.Clientse
 | 
				
			|||||||
	// delete the APIService first to avoid causing discovery errors
 | 
						// delete the APIService first to avoid causing discovery errors
 | 
				
			||||||
	_ = aggrclient.ApiregistrationV1beta1().APIServices().Delete("v1alpha1.wardle.k8s.io", nil)
 | 
						_ = aggrclient.ApiregistrationV1beta1().APIServices().Delete("v1alpha1.wardle.k8s.io", nil)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_ = client.ExtensionsV1beta1().Deployments(namespace).Delete("sample-apiserver", nil)
 | 
						_ = client.AppsV1().Deployments(namespace).Delete("sample-apiserver", nil)
 | 
				
			||||||
	_ = client.CoreV1().Secrets(namespace).Delete("sample-apiserver-secret", nil)
 | 
						_ = client.CoreV1().Secrets(namespace).Delete("sample-apiserver-secret", nil)
 | 
				
			||||||
	_ = client.CoreV1().Services(namespace).Delete("sample-api", nil)
 | 
						_ = client.CoreV1().Services(namespace).Delete("sample-api", nil)
 | 
				
			||||||
	_ = client.CoreV1().ServiceAccounts(namespace).Delete("sample-apiserver", nil)
 | 
						_ = client.CoreV1().ServiceAccounts(namespace).Delete("sample-apiserver", nil)
 | 
				
			||||||
@@ -171,14 +171,14 @@ func TestSampleAPIServer(f *framework.Framework, image string) {
 | 
				
			|||||||
			Image: etcdImage,
 | 
								Image: etcdImage,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	d := &extensions.Deployment{
 | 
						d := &apps.Deployment{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: deploymentName,
 | 
								Name: deploymentName,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Spec: extensions.DeploymentSpec{
 | 
							Spec: apps.DeploymentSpec{
 | 
				
			||||||
			Replicas: &replicas,
 | 
								Replicas: &replicas,
 | 
				
			||||||
			Strategy: extensions.DeploymentStrategy{
 | 
								Strategy: apps.DeploymentStrategy{
 | 
				
			||||||
				Type: extensions.RollingUpdateDeploymentStrategyType,
 | 
									Type: apps.RollingUpdateDeploymentStrategyType,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			Template: v1.PodTemplateSpec{
 | 
								Template: v1.PodTemplateSpec{
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{
 | 
									ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
@@ -192,7 +192,7 @@ func TestSampleAPIServer(f *framework.Framework, image string) {
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	deployment, err := client.ExtensionsV1beta1().Deployments(namespace).Create(d)
 | 
						deployment, err := client.AppsV1().Deployments(namespace).Create(d)
 | 
				
			||||||
	framework.ExpectNoError(err, "creating deployment %s in namespace %s", deploymentName, namespace)
 | 
						framework.ExpectNoError(err, "creating deployment %s in namespace %s", deploymentName, namespace)
 | 
				
			||||||
	err = framework.WaitForDeploymentRevisionAndImage(client, namespace, deploymentName, "1", image)
 | 
						err = framework.WaitForDeploymentRevisionAndImage(client, namespace, deploymentName, "1", image)
 | 
				
			||||||
	framework.ExpectNoError(err, "waiting for the deployment of image %s in %s in %s to complete", image, deploymentName, namespace)
 | 
						framework.ExpectNoError(err, "waiting for the deployment of image %s in %s in %s to complete", image, deploymentName, namespace)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,8 +23,8 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/api/admissionregistration/v1beta1"
 | 
						"k8s.io/api/admissionregistration/v1beta1"
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	rbacv1beta1 "k8s.io/api/rbac/v1beta1"
 | 
						rbacv1beta1 "k8s.io/api/rbac/v1beta1"
 | 
				
			||||||
	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
 | 
						apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
 | 
				
			||||||
	crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
 | 
						crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
 | 
				
			||||||
@@ -263,14 +263,14 @@ func deployWebhookAndService(f *framework.Framework, image string, context *cert
 | 
				
			|||||||
			Image: image,
 | 
								Image: image,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	d := &extensions.Deployment{
 | 
						d := &apps.Deployment{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: deploymentName,
 | 
								Name: deploymentName,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Spec: extensions.DeploymentSpec{
 | 
							Spec: apps.DeploymentSpec{
 | 
				
			||||||
			Replicas: &replicas,
 | 
								Replicas: &replicas,
 | 
				
			||||||
			Strategy: extensions.DeploymentStrategy{
 | 
								Strategy: apps.DeploymentStrategy{
 | 
				
			||||||
				Type: extensions.RollingUpdateDeploymentStrategyType,
 | 
									Type: apps.RollingUpdateDeploymentStrategyType,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			Template: v1.PodTemplateSpec{
 | 
								Template: v1.PodTemplateSpec{
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{
 | 
									ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
@@ -284,7 +284,7 @@ func deployWebhookAndService(f *framework.Framework, image string, context *cert
 | 
				
			|||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	deployment, err := client.ExtensionsV1beta1().Deployments(namespace).Create(d)
 | 
						deployment, err := client.AppsV1().Deployments(namespace).Create(d)
 | 
				
			||||||
	framework.ExpectNoError(err, "creating deployment %s in namespace %s", deploymentName, namespace)
 | 
						framework.ExpectNoError(err, "creating deployment %s in namespace %s", deploymentName, namespace)
 | 
				
			||||||
	By("Wait for the deployment to be ready")
 | 
						By("Wait for the deployment to be ready")
 | 
				
			||||||
	err = framework.WaitForDeploymentRevisionAndImage(client, namespace, deploymentName, "1", image)
 | 
						err = framework.WaitForDeploymentRevisionAndImage(client, namespace, deploymentName, "1", image)
 | 
				
			||||||
@@ -976,7 +976,7 @@ func updateConfigMap(c clientset.Interface, ns, name string, update updateConfig
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func cleanWebhookTest(client clientset.Interface, namespaceName string) {
 | 
					func cleanWebhookTest(client clientset.Interface, namespaceName string) {
 | 
				
			||||||
	_ = client.CoreV1().Services(namespaceName).Delete(serviceName, nil)
 | 
						_ = client.CoreV1().Services(namespaceName).Delete(serviceName, nil)
 | 
				
			||||||
	_ = client.ExtensionsV1beta1().Deployments(namespaceName).Delete(deploymentName, nil)
 | 
						_ = client.AppsV1().Deployments(namespaceName).Delete(deploymentName, nil)
 | 
				
			||||||
	_ = client.CoreV1().Secrets(namespaceName).Delete(secretName, nil)
 | 
						_ = client.CoreV1().Secrets(namespaceName).Delete(secretName, nil)
 | 
				
			||||||
	_ = client.RbacV1beta1().RoleBindings("kube-system").Delete(roleBindingName, nil)
 | 
						_ = client.RbacV1beta1().RoleBindings("kube-system").Delete(roleBindingName, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,7 @@ go_library(
 | 
				
			|||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/api/legacyscheme:go_default_library",
 | 
					        "//pkg/api/legacyscheme:go_default_library",
 | 
				
			||||||
        "//pkg/api/v1/pod:go_default_library",
 | 
					        "//pkg/api/v1/pod:go_default_library",
 | 
				
			||||||
 | 
					        "//pkg/apis/apps:go_default_library",
 | 
				
			||||||
        "//pkg/apis/batch:go_default_library",
 | 
					        "//pkg/apis/batch:go_default_library",
 | 
				
			||||||
        "//pkg/apis/core:go_default_library",
 | 
					        "//pkg/apis/core:go_default_library",
 | 
				
			||||||
        "//pkg/apis/extensions:go_default_library",
 | 
					        "//pkg/apis/extensions:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,7 @@ import (
 | 
				
			|||||||
	. "github.com/onsi/ginkgo"
 | 
						. "github.com/onsi/ginkgo"
 | 
				
			||||||
	. "github.com/onsi/gomega"
 | 
						. "github.com/onsi/gomega"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
						extensions "k8s.io/api/extensions/v1beta1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
						"k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
@@ -36,7 +37,7 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/watch"
 | 
						"k8s.io/apimachinery/pkg/watch"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	scaleclient "k8s.io/client-go/scale"
 | 
						scaleclient "k8s.io/client-go/scale"
 | 
				
			||||||
	extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
 | 
						appsinternal "k8s.io/kubernetes/pkg/apis/apps"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
						deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubectl"
 | 
						"k8s.io/kubernetes/pkg/kubectl"
 | 
				
			||||||
@@ -51,7 +52,7 @@ const (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	nilRs *extensions.ReplicaSet
 | 
						nilRs *apps.ReplicaSet
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var _ = SIGDescribe("Deployment", func() {
 | 
					var _ = SIGDescribe("Deployment", func() {
 | 
				
			||||||
@@ -101,7 +102,7 @@ var _ = SIGDescribe("Deployment", func() {
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func failureTrap(c clientset.Interface, ns string) {
 | 
					func failureTrap(c clientset.Interface, ns string) {
 | 
				
			||||||
	deployments, err := c.ExtensionsV1beta1().Deployments(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()})
 | 
						deployments, err := c.AppsV1().Deployments(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		framework.Logf("Could not list Deployments in namespace %q: %v", ns, err)
 | 
							framework.Logf("Could not list Deployments in namespace %q: %v", ns, err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -110,7 +111,7 @@ func failureTrap(c clientset.Interface, ns string) {
 | 
				
			|||||||
		d := deployments.Items[i]
 | 
							d := deployments.Items[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		framework.Logf(spew.Sprintf("Deployment %q:\n%+v\n", d.Name, d))
 | 
							framework.Logf(spew.Sprintf("Deployment %q:\n%+v\n", d.Name, d))
 | 
				
			||||||
		_, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(&d, c.ExtensionsV1beta1())
 | 
							_, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(&d, c.AppsV1())
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			framework.Logf("Could not list ReplicaSets for Deployment %q: %v", d.Name, err)
 | 
								framework.Logf("Could not list ReplicaSets for Deployment %q: %v", d.Name, err)
 | 
				
			||||||
			return
 | 
								return
 | 
				
			||||||
@@ -127,7 +128,7 @@ func failureTrap(c clientset.Interface, ns string) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	framework.Logf("Log out all the ReplicaSets if there is no deployment created")
 | 
						framework.Logf("Log out all the ReplicaSets if there is no deployment created")
 | 
				
			||||||
	rss, err := c.ExtensionsV1beta1().ReplicaSets(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()})
 | 
						rss, err := c.AppsV1().ReplicaSets(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		framework.Logf("Could not list ReplicaSets in namespace %q: %v", ns, err)
 | 
							framework.Logf("Could not list ReplicaSets in namespace %q: %v", ns, err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
@@ -160,11 +161,11 @@ func newDeploymentRollback(name string, annotations map[string]string, revision
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func stopDeployment(c clientset.Interface, internalClient internalclientset.Interface, scaleClient scaleclient.ScalesGetter, ns, deploymentName string) {
 | 
					func stopDeployment(c clientset.Interface, internalClient internalclientset.Interface, scaleClient scaleclient.ScalesGetter, ns, deploymentName string) {
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Deleting deployment %s", deploymentName)
 | 
						framework.Logf("Deleting deployment %s", deploymentName)
 | 
				
			||||||
	reaper, err := kubectl.ReaperFor(extensionsinternal.Kind("Deployment"), internalClient, scaleClient)
 | 
						reaper, err := kubectl.ReaperFor(appsinternal.Kind("Deployment"), internalClient, scaleClient)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	timeout := 1 * time.Minute
 | 
						timeout := 1 * time.Minute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -172,14 +173,14 @@ func stopDeployment(c clientset.Interface, internalClient internalclientset.Inte
 | 
				
			|||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Ensuring deployment %s was deleted", deploymentName)
 | 
						framework.Logf("Ensuring deployment %s was deleted", deploymentName)
 | 
				
			||||||
	_, err = c.ExtensionsV1beta1().Deployments(ns).Get(deployment.Name, metav1.GetOptions{})
 | 
						_, err = c.AppsV1().Deployments(ns).Get(deployment.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).To(HaveOccurred())
 | 
						Expect(err).To(HaveOccurred())
 | 
				
			||||||
	Expect(errors.IsNotFound(err)).To(BeTrue())
 | 
						Expect(errors.IsNotFound(err)).To(BeTrue())
 | 
				
			||||||
	framework.Logf("Ensuring deployment %s's RSes were deleted", deploymentName)
 | 
						framework.Logf("Ensuring deployment %s's RSes were deleted", deploymentName)
 | 
				
			||||||
	selector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector)
 | 
						selector, err := metav1.LabelSelectorAsSelector(deployment.Spec.Selector)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	options := metav1.ListOptions{LabelSelector: selector.String()}
 | 
						options := metav1.ListOptions{LabelSelector: selector.String()}
 | 
				
			||||||
	rss, err := c.ExtensionsV1beta1().ReplicaSets(ns).List(options)
 | 
						rss, err := c.AppsV1().ReplicaSets(ns).List(options)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(rss.Items).Should(HaveLen(0))
 | 
						Expect(rss.Items).Should(HaveLen(0))
 | 
				
			||||||
	framework.Logf("Ensuring deployment %s's Pods were deleted", deploymentName)
 | 
						framework.Logf("Ensuring deployment %s's Pods were deleted", deploymentName)
 | 
				
			||||||
@@ -208,9 +209,9 @@ func testDeleteDeployment(f *framework.Framework) {
 | 
				
			|||||||
	podLabels := map[string]string{"name": NginxImageName}
 | 
						podLabels := map[string]string{"name": NginxImageName}
 | 
				
			||||||
	replicas := int32(1)
 | 
						replicas := int32(1)
 | 
				
			||||||
	framework.Logf("Creating simple deployment %s", deploymentName)
 | 
						framework.Logf("Creating simple deployment %s", deploymentName)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	d.Annotations = map[string]string{"test": "should-copy-to-replica-set", v1.LastAppliedConfigAnnotation: "should-not-copy-to-replica-set"}
 | 
						d.Annotations = map[string]string{"test": "should-copy-to-replica-set", v1.LastAppliedConfigAnnotation: "should-not-copy-to-replica-set"}
 | 
				
			||||||
	deploy, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deploy, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Wait for it to be updated to revision 1
 | 
						// Wait for it to be updated to revision 1
 | 
				
			||||||
@@ -220,9 +221,9 @@ func testDeleteDeployment(f *framework.Framework) {
 | 
				
			|||||||
	err = framework.WaitForDeploymentComplete(c, deploy)
 | 
						err = framework.WaitForDeploymentComplete(c, deploy)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(newRS).NotTo(Equal(nilRs))
 | 
						Expect(newRS).NotTo(Equal(nilRs))
 | 
				
			||||||
	stopDeployment(c, internalClient, f.ScalesGetter, ns, deploymentName)
 | 
						stopDeployment(c, internalClient, f.ScalesGetter, ns, deploymentName)
 | 
				
			||||||
@@ -243,10 +244,10 @@ func testRollingUpdateDeployment(f *framework.Framework) {
 | 
				
			|||||||
	rsRevision := "3546343826724305832"
 | 
						rsRevision := "3546343826724305832"
 | 
				
			||||||
	annotations := make(map[string]string)
 | 
						annotations := make(map[string]string)
 | 
				
			||||||
	annotations[deploymentutil.RevisionAnnotation] = rsRevision
 | 
						annotations[deploymentutil.RevisionAnnotation] = rsRevision
 | 
				
			||||||
	rs := newExtensionsRS(rsName, replicas, rsPodLabels, NginxImageName, NginxImage)
 | 
						rs := newRS(rsName, replicas, rsPodLabels, NginxImageName, NginxImage)
 | 
				
			||||||
	rs.Annotations = annotations
 | 
						rs.Annotations = annotations
 | 
				
			||||||
	framework.Logf("Creating replica set %q (going to be adopted)", rs.Name)
 | 
						framework.Logf("Creating replica set %q (going to be adopted)", rs.Name)
 | 
				
			||||||
	_, err := c.ExtensionsV1beta1().ReplicaSets(ns).Create(rs)
 | 
						_, err := c.AppsV1().ReplicaSets(ns).Create(rs)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	// Verify that the required pods have come up.
 | 
						// Verify that the required pods have come up.
 | 
				
			||||||
	err = framework.VerifyPodsRunning(c, ns, "sample-pod", false, replicas)
 | 
						err = framework.VerifyPodsRunning(c, ns, "sample-pod", false, replicas)
 | 
				
			||||||
@@ -255,8 +256,8 @@ func testRollingUpdateDeployment(f *framework.Framework) {
 | 
				
			|||||||
	// Create a deployment to delete nginx pods and instead bring up redis pods.
 | 
						// Create a deployment to delete nginx pods and instead bring up redis pods.
 | 
				
			||||||
	deploymentName := "test-rolling-update-deployment"
 | 
						deploymentName := "test-rolling-update-deployment"
 | 
				
			||||||
	framework.Logf("Creating deployment %q", deploymentName)
 | 
						framework.Logf("Creating deployment %q", deploymentName)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, deploymentPodLabels, RedisImageName, RedisImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, deploymentPodLabels, RedisImageName, RedisImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	deploy, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deploy, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Wait for it to be updated to revision 3546343826724305833.
 | 
						// Wait for it to be updated to revision 3546343826724305833.
 | 
				
			||||||
@@ -270,9 +271,9 @@ func testRollingUpdateDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// There should be 1 old RS (nginx-controller, which is adopted)
 | 
						// There should be 1 old RS (nginx-controller, which is adopted)
 | 
				
			||||||
	framework.Logf("Ensuring deployment %q has one old replica set (the one it adopted)", deploy.Name)
 | 
						framework.Logf("Ensuring deployment %q has one old replica set (the one it adopted)", deploy.Name)
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	_, allOldRSs, err := deploymentutil.GetOldReplicaSets(deployment, c.ExtensionsV1beta1())
 | 
						_, allOldRSs, err := deploymentutil.GetOldReplicaSets(deployment, c.AppsV1())
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(len(allOldRSs)).Should(Equal(1))
 | 
						Expect(len(allOldRSs)).Should(Equal(1))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -284,8 +285,8 @@ func testRecreateDeployment(f *framework.Framework) {
 | 
				
			|||||||
	// Create a deployment that brings up redis pods.
 | 
						// Create a deployment that brings up redis pods.
 | 
				
			||||||
	deploymentName := "test-recreate-deployment"
 | 
						deploymentName := "test-recreate-deployment"
 | 
				
			||||||
	framework.Logf("Creating deployment %q", deploymentName)
 | 
						framework.Logf("Creating deployment %q", deploymentName)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, int32(1), map[string]string{"name": "sample-pod-3"}, RedisImageName, RedisImage, extensions.RecreateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, int32(1), map[string]string{"name": "sample-pod-3"}, RedisImageName, RedisImage, apps.RecreateDeploymentStrategyType)
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deployment, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Wait for it to be updated to revision 1
 | 
						// Wait for it to be updated to revision 1
 | 
				
			||||||
@@ -298,7 +299,7 @@ func testRecreateDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Update deployment to delete redis pods and bring up nginx pods.
 | 
						// Update deployment to delete redis pods and bring up nginx pods.
 | 
				
			||||||
	framework.Logf("Triggering a new rollout for deployment %q", deploymentName)
 | 
						framework.Logf("Triggering a new rollout for deployment %q", deploymentName)
 | 
				
			||||||
	deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(update *extensions.Deployment) {
 | 
						deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Name = NginxImageName
 | 
							update.Spec.Template.Spec.Containers[0].Name = NginxImageName
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Image = NginxImage
 | 
							update.Spec.Template.Spec.Containers[0].Image = NginxImage
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -321,7 +322,7 @@ func testDeploymentCleanUpPolicy(f *framework.Framework) {
 | 
				
			|||||||
	rsName := "test-cleanup-controller"
 | 
						rsName := "test-cleanup-controller"
 | 
				
			||||||
	replicas := int32(1)
 | 
						replicas := int32(1)
 | 
				
			||||||
	revisionHistoryLimit := utilpointer.Int32Ptr(0)
 | 
						revisionHistoryLimit := utilpointer.Int32Ptr(0)
 | 
				
			||||||
	_, err := c.ExtensionsV1beta1().ReplicaSets(ns).Create(newExtensionsRS(rsName, replicas, rsPodLabels, NginxImageName, NginxImage))
 | 
						_, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, replicas, rsPodLabels, NginxImageName, NginxImage))
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Verify that the required pods have come up.
 | 
						// Verify that the required pods have come up.
 | 
				
			||||||
@@ -368,9 +369,9 @@ func testDeploymentCleanUpPolicy(f *framework.Framework) {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, deploymentPodLabels, RedisImageName, RedisImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, deploymentPodLabels, RedisImageName, RedisImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	d.Spec.RevisionHistoryLimit = revisionHistoryLimit
 | 
						d.Spec.RevisionHistoryLimit = revisionHistoryLimit
 | 
				
			||||||
	_, err = c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						_, err = c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	By(fmt.Sprintf("Waiting for deployment %s history to be cleaned up", deploymentName))
 | 
						By(fmt.Sprintf("Waiting for deployment %s history to be cleaned up", deploymentName))
 | 
				
			||||||
@@ -392,7 +393,7 @@ func testRolloverDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	rsName := "test-rollover-controller"
 | 
						rsName := "test-rollover-controller"
 | 
				
			||||||
	rsReplicas := int32(1)
 | 
						rsReplicas := int32(1)
 | 
				
			||||||
	_, err := c.ExtensionsV1beta1().ReplicaSets(ns).Create(newExtensionsRS(rsName, rsReplicas, rsPodLabels, NginxImageName, NginxImage))
 | 
						_, err := c.AppsV1().ReplicaSets(ns).Create(newRS(rsName, rsReplicas, rsPodLabels, NginxImageName, NginxImage))
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	// Verify that the required pods have come up.
 | 
						// Verify that the required pods have come up.
 | 
				
			||||||
	err = framework.VerifyPodsRunning(c, ns, podName, false, rsReplicas)
 | 
						err = framework.VerifyPodsRunning(c, ns, podName, false, rsReplicas)
 | 
				
			||||||
@@ -407,19 +408,19 @@ func testRolloverDeployment(f *framework.Framework) {
 | 
				
			|||||||
	deploymentName, deploymentImageName := "test-rollover-deployment", "redis-slave"
 | 
						deploymentName, deploymentImageName := "test-rollover-deployment", "redis-slave"
 | 
				
			||||||
	deploymentReplicas := int32(1)
 | 
						deploymentReplicas := int32(1)
 | 
				
			||||||
	deploymentImage := "gcr.io/google_samples/gb-redisslave:nonexistent"
 | 
						deploymentImage := "gcr.io/google_samples/gb-redisslave:nonexistent"
 | 
				
			||||||
	deploymentStrategyType := extensions.RollingUpdateDeploymentStrategyType
 | 
						deploymentStrategyType := apps.RollingUpdateDeploymentStrategyType
 | 
				
			||||||
	framework.Logf("Creating deployment %q", deploymentName)
 | 
						framework.Logf("Creating deployment %q", deploymentName)
 | 
				
			||||||
	newDeployment := framework.NewDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType)
 | 
						newDeployment := framework.NewDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType)
 | 
				
			||||||
	newDeployment.Spec.Strategy.RollingUpdate = &extensions.RollingUpdateDeployment{
 | 
						newDeployment.Spec.Strategy.RollingUpdate = &apps.RollingUpdateDeployment{
 | 
				
			||||||
		MaxUnavailable: intOrStrP(0),
 | 
							MaxUnavailable: intOrStrP(0),
 | 
				
			||||||
		MaxSurge:       intOrStrP(1),
 | 
							MaxSurge:       intOrStrP(1),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	newDeployment.Spec.MinReadySeconds = int32(10)
 | 
						newDeployment.Spec.MinReadySeconds = int32(10)
 | 
				
			||||||
	_, err = c.ExtensionsV1beta1().Deployments(ns).Create(newDeployment)
 | 
						_, err = c.AppsV1().Deployments(ns).Create(newDeployment)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Verify that the pods were scaled up and down as expected.
 | 
						// Verify that the pods were scaled up and down as expected.
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	framework.Logf("Make sure deployment %q performs scaling operations", deploymentName)
 | 
						framework.Logf("Make sure deployment %q performs scaling operations", deploymentName)
 | 
				
			||||||
	// Make sure the deployment starts to scale up and down replica sets by checking if its updated replicas >= 1
 | 
						// Make sure the deployment starts to scale up and down replica sets by checking if its updated replicas >= 1
 | 
				
			||||||
@@ -430,17 +431,17 @@ func testRolloverDeployment(f *framework.Framework) {
 | 
				
			|||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Ensure that both replica sets have 1 created replica")
 | 
						framework.Logf("Ensure that both replica sets have 1 created replica")
 | 
				
			||||||
	oldRS, err := c.ExtensionsV1beta1().ReplicaSets(ns).Get(rsName, metav1.GetOptions{})
 | 
						oldRS, err := c.AppsV1().ReplicaSets(ns).Get(rsName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	ensureReplicas(oldRS, int32(1))
 | 
						ensureReplicas(oldRS, int32(1))
 | 
				
			||||||
	newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	ensureReplicas(newRS, int32(1))
 | 
						ensureReplicas(newRS, int32(1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// The deployment is stuck, update it to rollover the above 2 ReplicaSets and bring up redis pods.
 | 
						// The deployment is stuck, update it to rollover the above 2 ReplicaSets and bring up redis pods.
 | 
				
			||||||
	framework.Logf("Rollover old replica sets for deployment %q with new image update", deploymentName)
 | 
						framework.Logf("Rollover old replica sets for deployment %q with new image update", deploymentName)
 | 
				
			||||||
	updatedDeploymentImageName, updatedDeploymentImage := RedisImageName, RedisImage
 | 
						updatedDeploymentImageName, updatedDeploymentImage := RedisImageName, RedisImage
 | 
				
			||||||
	deployment, err = framework.UpdateDeploymentWithRetries(c, ns, newDeployment.Name, func(update *extensions.Deployment) {
 | 
						deployment, err = framework.UpdateDeploymentWithRetries(c, ns, newDeployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
 | 
							update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
 | 
							update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@@ -461,16 +462,16 @@ func testRolloverDeployment(f *framework.Framework) {
 | 
				
			|||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Ensure that both old replica sets have no replicas")
 | 
						framework.Logf("Ensure that both old replica sets have no replicas")
 | 
				
			||||||
	oldRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(rsName, metav1.GetOptions{})
 | 
						oldRS, err = c.AppsV1().ReplicaSets(ns).Get(rsName, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	ensureReplicas(oldRS, int32(0))
 | 
						ensureReplicas(oldRS, int32(0))
 | 
				
			||||||
	// Not really the new replica set anymore but we GET by name so that's fine.
 | 
						// Not really the new replica set anymore but we GET by name so that's fine.
 | 
				
			||||||
	newRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(newRS.Name, metav1.GetOptions{})
 | 
						newRS, err = c.AppsV1().ReplicaSets(ns).Get(newRS.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	ensureReplicas(newRS, int32(0))
 | 
						ensureReplicas(newRS, int32(0))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ensureReplicas(rs *extensions.ReplicaSet, replicas int32) {
 | 
					func ensureReplicas(rs *apps.ReplicaSet, replicas int32) {
 | 
				
			||||||
	Expect(*rs.Spec.Replicas).Should(Equal(replicas))
 | 
						Expect(*rs.Spec.Replicas).Should(Equal(replicas))
 | 
				
			||||||
	Expect(rs.Status.Replicas).Should(Equal(replicas))
 | 
						Expect(rs.Status.Replicas).Should(Equal(replicas))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -490,12 +491,12 @@ func testRollbackDeployment(f *framework.Framework) {
 | 
				
			|||||||
	deploymentName, deploymentImageName := "test-rollback-deployment", NginxImageName
 | 
						deploymentName, deploymentImageName := "test-rollback-deployment", NginxImageName
 | 
				
			||||||
	deploymentReplicas := int32(1)
 | 
						deploymentReplicas := int32(1)
 | 
				
			||||||
	deploymentImage := NginxImage
 | 
						deploymentImage := NginxImage
 | 
				
			||||||
	deploymentStrategyType := extensions.RollingUpdateDeploymentStrategyType
 | 
						deploymentStrategyType := apps.RollingUpdateDeploymentStrategyType
 | 
				
			||||||
	framework.Logf("Creating deployment %s", deploymentName)
 | 
						framework.Logf("Creating deployment %s", deploymentName)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, deploymentReplicas, deploymentPodLabels, deploymentImageName, deploymentImage, deploymentStrategyType)
 | 
				
			||||||
	createAnnotation := map[string]string{"action": "create", "author": "node"}
 | 
						createAnnotation := map[string]string{"action": "create", "author": "node"}
 | 
				
			||||||
	d.Annotations = createAnnotation
 | 
						d.Annotations = createAnnotation
 | 
				
			||||||
	deploy, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deploy, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Wait for it to be updated to revision 1
 | 
						// Wait for it to be updated to revision 1
 | 
				
			||||||
@@ -513,7 +514,7 @@ func testRollbackDeployment(f *framework.Framework) {
 | 
				
			|||||||
	updatedDeploymentImage := RedisImage
 | 
						updatedDeploymentImage := RedisImage
 | 
				
			||||||
	updatedDeploymentImageName := RedisImageName
 | 
						updatedDeploymentImageName := RedisImageName
 | 
				
			||||||
	updateAnnotation := map[string]string{"action": "update", "log": "I need to update it"}
 | 
						updateAnnotation := map[string]string{"action": "update", "log": "I need to update it"}
 | 
				
			||||||
	deployment, err := framework.UpdateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
 | 
						deployment, err := framework.UpdateDeploymentWithRetries(c, ns, d.Name, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
 | 
							update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
 | 
							update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
 | 
				
			||||||
		update.Annotations = updateAnnotation
 | 
							update.Annotations = updateAnnotation
 | 
				
			||||||
@@ -616,7 +617,7 @@ func testRollbackDeployment(f *framework.Framework) {
 | 
				
			|||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func randomScale(d *extensions.Deployment, i int) {
 | 
					func randomScale(d *apps.Deployment, i int) {
 | 
				
			||||||
	switch r := rand.Float32(); {
 | 
						switch r := rand.Float32(); {
 | 
				
			||||||
	case r < 0.3:
 | 
						case r < 0.3:
 | 
				
			||||||
		framework.Logf("%02d: scaling up", i)
 | 
							framework.Logf("%02d: scaling up", i)
 | 
				
			||||||
@@ -641,12 +642,12 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
	// Create a nginx deployment.
 | 
						// Create a nginx deployment.
 | 
				
			||||||
	deploymentName := "nginx"
 | 
						deploymentName := "nginx"
 | 
				
			||||||
	thirty := int32(30)
 | 
						thirty := int32(30)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	d.Spec.ProgressDeadlineSeconds = &thirty
 | 
						d.Spec.ProgressDeadlineSeconds = &thirty
 | 
				
			||||||
	d.Spec.RevisionHistoryLimit = &two
 | 
						d.Spec.RevisionHistoryLimit = &two
 | 
				
			||||||
	d.Spec.Template.Spec.TerminationGracePeriodSeconds = &zero
 | 
						d.Spec.Template.Spec.TerminationGracePeriodSeconds = &zero
 | 
				
			||||||
	framework.Logf("Creating deployment %q", deploymentName)
 | 
						framework.Logf("Creating deployment %q", deploymentName)
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deployment, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	iterations := 20
 | 
						iterations := 20
 | 
				
			||||||
@@ -659,7 +660,7 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
		case n < 0.2:
 | 
							case n < 0.2:
 | 
				
			||||||
			// trigger a new deployment
 | 
								// trigger a new deployment
 | 
				
			||||||
			framework.Logf("%02d: triggering a new rollout for deployment %q", i, deployment.Name)
 | 
								framework.Logf("%02d: triggering a new rollout for deployment %q", i, deployment.Name)
 | 
				
			||||||
			deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
								deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
				newEnv := v1.EnvVar{Name: "A", Value: fmt.Sprintf("%d", i)}
 | 
									newEnv := v1.EnvVar{Name: "A", Value: fmt.Sprintf("%d", i)}
 | 
				
			||||||
				update.Spec.Template.Spec.Containers[0].Env = append(update.Spec.Template.Spec.Containers[0].Env, newEnv)
 | 
									update.Spec.Template.Spec.Containers[0].Env = append(update.Spec.Template.Spec.Containers[0].Env, newEnv)
 | 
				
			||||||
				randomScale(update, i)
 | 
									randomScale(update, i)
 | 
				
			||||||
@@ -669,16 +670,18 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
		case n < 0.4:
 | 
							case n < 0.4:
 | 
				
			||||||
			// rollback to the previous version
 | 
								// rollback to the previous version
 | 
				
			||||||
			framework.Logf("%02d: rolling back a rollout for deployment %q", i, deployment.Name)
 | 
								framework.Logf("%02d: rolling back a rollout for deployment %q", i, deployment.Name)
 | 
				
			||||||
			deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
								deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
				rollbackTo := &extensions.RollbackConfig{Revision: 0}
 | 
									if update.Annotations == nil {
 | 
				
			||||||
				update.Spec.RollbackTo = rollbackTo
 | 
										update.Annotations = make(map[string]string)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									update.Annotations[apps.DeprecatedRollbackTo] = "0"
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			Expect(err).NotTo(HaveOccurred())
 | 
								Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		case n < 0.6:
 | 
							case n < 0.6:
 | 
				
			||||||
			// just scaling
 | 
								// just scaling
 | 
				
			||||||
			framework.Logf("%02d: scaling deployment %q", i, deployment.Name)
 | 
								framework.Logf("%02d: scaling deployment %q", i, deployment.Name)
 | 
				
			||||||
			deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
								deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
				randomScale(update, i)
 | 
									randomScale(update, i)
 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
			Expect(err).NotTo(HaveOccurred())
 | 
								Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
@@ -687,14 +690,14 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
			// toggling the deployment
 | 
								// toggling the deployment
 | 
				
			||||||
			if deployment.Spec.Paused {
 | 
								if deployment.Spec.Paused {
 | 
				
			||||||
				framework.Logf("%02d: pausing deployment %q", i, deployment.Name)
 | 
									framework.Logf("%02d: pausing deployment %q", i, deployment.Name)
 | 
				
			||||||
				deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
									deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
					update.Spec.Paused = true
 | 
										update.Spec.Paused = true
 | 
				
			||||||
					randomScale(update, i)
 | 
										randomScale(update, i)
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
				Expect(err).NotTo(HaveOccurred())
 | 
									Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				framework.Logf("%02d: resuming deployment %q", i, deployment.Name)
 | 
									framework.Logf("%02d: resuming deployment %q", i, deployment.Name)
 | 
				
			||||||
				deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
									deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
					update.Spec.Paused = false
 | 
										update.Spec.Paused = false
 | 
				
			||||||
					randomScale(update, i)
 | 
										randomScale(update, i)
 | 
				
			||||||
				})
 | 
									})
 | 
				
			||||||
@@ -728,10 +731,10 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// unpause the deployment if we end up pausing it
 | 
						// unpause the deployment if we end up pausing it
 | 
				
			||||||
	deployment, err = c.ExtensionsV1beta1().Deployments(ns).Get(deployment.Name, metav1.GetOptions{})
 | 
						deployment, err = c.AppsV1().Deployments(ns).Get(deployment.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	if deployment.Spec.Paused {
 | 
						if deployment.Spec.Paused {
 | 
				
			||||||
		deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
							deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
			update.Spec.Paused = false
 | 
								update.Spec.Paused = false
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -743,7 +746,7 @@ func testIterativeDeployments(f *framework.Framework) {
 | 
				
			|||||||
	Expect(framework.WaitForDeploymentComplete(c, deployment)).NotTo(HaveOccurred())
 | 
						Expect(framework.WaitForDeploymentComplete(c, deployment)).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Checking deployment %q for a complete condition", deploymentName)
 | 
						framework.Logf("Checking deployment %q for a complete condition", deploymentName)
 | 
				
			||||||
	Expect(framework.WaitForDeploymentWithCondition(c, ns, deploymentName, deploymentutil.NewRSAvailableReason, extensions.DeploymentProgressing)).NotTo(HaveOccurred())
 | 
						Expect(framework.WaitForDeploymentWithCondition(c, ns, deploymentName, deploymentutil.NewRSAvailableReason, apps.DeploymentProgressing)).NotTo(HaveOccurred())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func testDeploymentsControllerRef(f *framework.Framework) {
 | 
					func testDeploymentsControllerRef(f *framework.Framework) {
 | 
				
			||||||
@@ -754,8 +757,8 @@ func testDeploymentsControllerRef(f *framework.Framework) {
 | 
				
			|||||||
	framework.Logf("Creating Deployment %q", deploymentName)
 | 
						framework.Logf("Creating Deployment %q", deploymentName)
 | 
				
			||||||
	podLabels := map[string]string{"name": NginxImageName}
 | 
						podLabels := map[string]string{"name": NginxImageName}
 | 
				
			||||||
	replicas := int32(1)
 | 
						replicas := int32(1)
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	deploy, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deploy, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	err = framework.WaitForDeploymentComplete(c, deploy)
 | 
						err = framework.WaitForDeploymentComplete(c, deploy)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
@@ -781,8 +784,8 @@ func testDeploymentsControllerRef(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	deploymentName = "test-adopt-deployment"
 | 
						deploymentName = "test-adopt-deployment"
 | 
				
			||||||
	framework.Logf("Creating Deployment %q to adopt the ReplicaSet", deploymentName)
 | 
						framework.Logf("Creating Deployment %q to adopt the ReplicaSet", deploymentName)
 | 
				
			||||||
	d = framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d = framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	deploy, err = c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deploy, err = c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	err = framework.WaitForDeploymentComplete(c, deploy)
 | 
						err = framework.WaitForDeploymentComplete(c, deploy)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
@@ -811,13 +814,13 @@ func testProportionalScalingDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Create a nginx deployment.
 | 
						// Create a nginx deployment.
 | 
				
			||||||
	deploymentName := "nginx-deployment"
 | 
						deploymentName := "nginx-deployment"
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, replicas, podLabels, NginxImageName, NginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	d.Spec.Strategy.RollingUpdate = new(extensions.RollingUpdateDeployment)
 | 
						d.Spec.Strategy.RollingUpdate = new(apps.RollingUpdateDeployment)
 | 
				
			||||||
	d.Spec.Strategy.RollingUpdate.MaxSurge = intOrStrP(3)
 | 
						d.Spec.Strategy.RollingUpdate.MaxSurge = intOrStrP(3)
 | 
				
			||||||
	d.Spec.Strategy.RollingUpdate.MaxUnavailable = intOrStrP(2)
 | 
						d.Spec.Strategy.RollingUpdate.MaxUnavailable = intOrStrP(2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Creating deployment %q", deploymentName)
 | 
						framework.Logf("Creating deployment %q", deploymentName)
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Create(d)
 | 
						deployment, err := c.AppsV1().Deployments(ns).Create(d)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Waiting for observed generation %d", deployment.Generation)
 | 
						framework.Logf("Waiting for observed generation %d", deployment.Generation)
 | 
				
			||||||
@@ -831,13 +834,13 @@ func testProportionalScalingDeployment(f *framework.Framework) {
 | 
				
			|||||||
	framework.Logf("Waiting for deployment %q to complete", deployment.Name)
 | 
						framework.Logf("Waiting for deployment %q to complete", deployment.Name)
 | 
				
			||||||
	Expect(framework.WaitForDeploymentComplete(c, deployment)).NotTo(HaveOccurred())
 | 
						Expect(framework.WaitForDeploymentComplete(c, deployment)).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	firstRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						firstRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Update the deployment with a non-existent image so that the new replica set
 | 
						// Update the deployment with a non-existent image so that the new replica set
 | 
				
			||||||
	// will be blocked to simulate a partial rollout.
 | 
						// will be blocked to simulate a partial rollout.
 | 
				
			||||||
	framework.Logf("Updating deployment %q with a non-existent image", deploymentName)
 | 
						framework.Logf("Updating deployment %q with a non-existent image", deploymentName)
 | 
				
			||||||
	deployment, err = framework.UpdateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
 | 
						deployment, err = framework.UpdateDeploymentWithRetries(c, ns, d.Name, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Image = "nginx:404"
 | 
							update.Spec.Template.Spec.Containers[0].Image = "nginx:404"
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
@@ -860,13 +863,13 @@ func testProportionalScalingDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// The desired replicas wait makes sure that the RS controller has created expected number of pods.
 | 
						// The desired replicas wait makes sure that the RS controller has created expected number of pods.
 | 
				
			||||||
	framework.Logf("Waiting for the first rollout's replicaset of deployment %q to have desired number of replicas", deploymentName)
 | 
						framework.Logf("Waiting for the first rollout's replicaset of deployment %q to have desired number of replicas", deploymentName)
 | 
				
			||||||
	firstRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(firstRS.Name, metav1.GetOptions{})
 | 
						firstRS, err = c.AppsV1().ReplicaSets(ns).Get(firstRS.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	err = framework.WaitForReplicaSetDesiredReplicas(c.ExtensionsV1beta1(), firstRS)
 | 
						err = framework.WaitForReplicaSetDesiredReplicas(c.AppsV1(), firstRS)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Checking state of second rollout's replicaset.
 | 
						// Checking state of second rollout's replicaset.
 | 
				
			||||||
	secondRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						secondRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	maxSurge, err := intstr.GetValueFromIntOrPercent(deployment.Spec.Strategy.RollingUpdate.MaxSurge, int(*(deployment.Spec.Replicas)), false)
 | 
						maxSurge, err := intstr.GetValueFromIntOrPercent(deployment.Spec.Strategy.RollingUpdate.MaxSurge, int(*(deployment.Spec.Replicas)), false)
 | 
				
			||||||
@@ -883,9 +886,9 @@ func testProportionalScalingDeployment(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// The desired replicas wait makes sure that the RS controller has created expected number of pods.
 | 
						// The desired replicas wait makes sure that the RS controller has created expected number of pods.
 | 
				
			||||||
	framework.Logf("Waiting for the second rollout's replicaset of deployment %q to have desired number of replicas", deploymentName)
 | 
						framework.Logf("Waiting for the second rollout's replicaset of deployment %q to have desired number of replicas", deploymentName)
 | 
				
			||||||
	secondRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(secondRS.Name, metav1.GetOptions{})
 | 
						secondRS, err = c.AppsV1().ReplicaSets(ns).Get(secondRS.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	err = framework.WaitForReplicaSetDesiredReplicas(c.ExtensionsV1beta1(), secondRS)
 | 
						err = framework.WaitForReplicaSetDesiredReplicas(c.AppsV1(), secondRS)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check the deployment's minimum availability.
 | 
						// Check the deployment's minimum availability.
 | 
				
			||||||
@@ -897,15 +900,15 @@ func testProportionalScalingDeployment(f *framework.Framework) {
 | 
				
			|||||||
	// Scale the deployment to 30 replicas.
 | 
						// Scale the deployment to 30 replicas.
 | 
				
			||||||
	newReplicas = int32(30)
 | 
						newReplicas = int32(30)
 | 
				
			||||||
	framework.Logf("Scaling up the deployment %q from %d to %d", deploymentName, replicas, newReplicas)
 | 
						framework.Logf("Scaling up the deployment %q from %d to %d", deploymentName, replicas, newReplicas)
 | 
				
			||||||
	deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *extensions.Deployment) {
 | 
						deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deployment.Name, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Replicas = &newReplicas
 | 
							update.Spec.Replicas = &newReplicas
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	framework.Logf("Waiting for the replicasets of deployment %q to have desired number of replicas", deploymentName)
 | 
						framework.Logf("Waiting for the replicasets of deployment %q to have desired number of replicas", deploymentName)
 | 
				
			||||||
	firstRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(firstRS.Name, metav1.GetOptions{})
 | 
						firstRS, err = c.AppsV1().ReplicaSets(ns).Get(firstRS.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	secondRS, err = c.ExtensionsV1beta1().ReplicaSets(ns).Get(secondRS.Name, metav1.GetOptions{})
 | 
						secondRS, err = c.AppsV1().ReplicaSets(ns).Get(secondRS.Name, metav1.GetOptions{})
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// First rollout's replicaset should have .spec.replicas = 8 + (30-10)*(8/13) = 8 + 12 = 20 replicas.
 | 
						// First rollout's replicaset should have .spec.replicas = 8 + (30-10)*(8/13) = 8 + 12 = 20 replicas.
 | 
				
			||||||
@@ -943,18 +946,18 @@ func waitDeploymentReplicaSetsOrphaned(c clientset.Interface, ns string, label m
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func listDeploymentReplicaSets(c clientset.Interface, ns string, label map[string]string) *extensions.ReplicaSetList {
 | 
					func listDeploymentReplicaSets(c clientset.Interface, ns string, label map[string]string) *apps.ReplicaSetList {
 | 
				
			||||||
	selector := labels.Set(label).AsSelector()
 | 
						selector := labels.Set(label).AsSelector()
 | 
				
			||||||
	options := metav1.ListOptions{LabelSelector: selector.String()}
 | 
						options := metav1.ListOptions{LabelSelector: selector.String()}
 | 
				
			||||||
	rsList, err := c.ExtensionsV1beta1().ReplicaSets(ns).List(options)
 | 
						rsList, err := c.AppsV1().ReplicaSets(ns).List(options)
 | 
				
			||||||
	Expect(err).NotTo(HaveOccurred())
 | 
						Expect(err).NotTo(HaveOccurred())
 | 
				
			||||||
	Expect(len(rsList.Items)).To(BeNumerically(">", 0))
 | 
						Expect(len(rsList.Items)).To(BeNumerically(">", 0))
 | 
				
			||||||
	return rsList
 | 
						return rsList
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func orphanDeploymentReplicaSets(c clientset.Interface, d *extensions.Deployment) error {
 | 
					func orphanDeploymentReplicaSets(c clientset.Interface, d *apps.Deployment) error {
 | 
				
			||||||
	trueVar := true
 | 
						trueVar := true
 | 
				
			||||||
	deleteOptions := &metav1.DeleteOptions{OrphanDependents: &trueVar}
 | 
						deleteOptions := &metav1.DeleteOptions{OrphanDependents: &trueVar}
 | 
				
			||||||
	deleteOptions.Preconditions = metav1.NewUIDPreconditions(string(d.UID))
 | 
						deleteOptions.Preconditions = metav1.NewUIDPreconditions(string(d.UID))
 | 
				
			||||||
	return c.ExtensionsV1beta1().Deployments(d.Namespace).Delete(d.Name, deleteOptions)
 | 
						return c.AppsV1().Deployments(d.Namespace).Delete(d.Name, deleteOptions)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,6 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	apps "k8s.io/api/apps/v1"
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
						"k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
						"k8s.io/apimachinery/pkg/api/resource"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
@@ -66,33 +65,6 @@ func newRS(rsName string, replicas int32, rsPodLabels map[string]string, imageNa
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO(#55714): Remove this when Deployment tests use apps/v1 ReplicaSet.
 | 
					 | 
				
			||||||
func newExtensionsRS(rsName string, replicas int32, rsPodLabels map[string]string, imageName string, image string) *extensions.ReplicaSet {
 | 
					 | 
				
			||||||
	zero := int64(0)
 | 
					 | 
				
			||||||
	return &extensions.ReplicaSet{
 | 
					 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
					 | 
				
			||||||
			Name: rsName,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		Spec: extensions.ReplicaSetSpec{
 | 
					 | 
				
			||||||
			Replicas: &replicas,
 | 
					 | 
				
			||||||
			Template: v1.PodTemplateSpec{
 | 
					 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{
 | 
					 | 
				
			||||||
					Labels: rsPodLabels,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				Spec: v1.PodSpec{
 | 
					 | 
				
			||||||
					TerminationGracePeriodSeconds: &zero,
 | 
					 | 
				
			||||||
					Containers: []v1.Container{
 | 
					 | 
				
			||||||
						{
 | 
					 | 
				
			||||||
							Name:  imageName,
 | 
					 | 
				
			||||||
							Image: image,
 | 
					 | 
				
			||||||
						},
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func newPodQuota(name, number string) *v1.ResourceQuota {
 | 
					func newPodQuota(name, number string) *v1.ResourceQuota {
 | 
				
			||||||
	return &v1.ResourceQuota{
 | 
						return &v1.ResourceQuota{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,6 +29,7 @@ go_library(
 | 
				
			|||||||
        "//vendor/github.com/evanphx/json-patch:go_default_library",
 | 
					        "//vendor/github.com/evanphx/json-patch:go_default_library",
 | 
				
			||||||
        "//vendor/github.com/onsi/ginkgo:go_default_library",
 | 
					        "//vendor/github.com/onsi/ginkgo:go_default_library",
 | 
				
			||||||
        "//vendor/github.com/onsi/gomega:go_default_library",
 | 
					        "//vendor/github.com/onsi/gomega:go_default_library",
 | 
				
			||||||
 | 
					        "//vendor/k8s.io/api/apps/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/batch/v1:go_default_library",
 | 
					        "//vendor/k8s.io/api/batch/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/certificates/v1beta1:go_default_library",
 | 
					        "//vendor/k8s.io/api/certificates/v1beta1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/core/v1:go_default_library",
 | 
					        "//vendor/k8s.io/api/core/v1:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,8 +23,8 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	apiv1 "k8s.io/api/core/v1"
 | 
						apiv1 "k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
 | 
						apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
 | 
				
			||||||
	apiextensionclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
 | 
						apiextensionclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
 | 
				
			||||||
	"k8s.io/apiextensions-apiserver/test/integration/testserver"
 | 
						"k8s.io/apiextensions-apiserver/test/integration/testserver"
 | 
				
			||||||
@@ -222,29 +222,29 @@ var _ = SIGDescribe("Advanced Audit", func() {
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
				func() {
 | 
									func() {
 | 
				
			||||||
					podLabels := map[string]string{"name": "audit-deployment-pod"}
 | 
										podLabels := map[string]string{"name": "audit-deployment-pod"}
 | 
				
			||||||
					d := framework.NewDeployment("audit-deployment", int32(1), podLabels, "redis", imageutils.GetE2EImage(imageutils.Redis), extensions.RecreateDeploymentStrategyType)
 | 
										d := framework.NewDeployment("audit-deployment", int32(1), podLabels, "redis", imageutils.GetE2EImage(imageutils.Redis), apps.RecreateDeploymentStrategyType)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					_, err := f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Create(d)
 | 
										_, err := f.ClientSet.AppsV1().Deployments(namespace).Create(d)
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to create audit-deployment")
 | 
										framework.ExpectNoError(err, "failed to create audit-deployment")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					_, err = f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Get(d.Name, metav1.GetOptions{})
 | 
										_, err = f.ClientSet.AppsV1().Deployments(namespace).Get(d.Name, metav1.GetOptions{})
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to get audit-deployment")
 | 
										framework.ExpectNoError(err, "failed to get audit-deployment")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					deploymentChan, err := f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Watch(watchOptions)
 | 
										deploymentChan, err := f.ClientSet.AppsV1().Deployments(namespace).Watch(watchOptions)
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to create watch for deployments")
 | 
										framework.ExpectNoError(err, "failed to create watch for deployments")
 | 
				
			||||||
					for range deploymentChan.ResultChan() {
 | 
										for range deploymentChan.ResultChan() {
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					_, err = f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Update(d)
 | 
										_, err = f.ClientSet.AppsV1().Deployments(namespace).Update(d)
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to update audit-deployment")
 | 
										framework.ExpectNoError(err, "failed to update audit-deployment")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					_, err = f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Patch(d.Name, types.JSONPatchType, patch)
 | 
										_, err = f.ClientSet.AppsV1().Deployments(namespace).Patch(d.Name, types.JSONPatchType, patch)
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to patch deployment")
 | 
										framework.ExpectNoError(err, "failed to patch deployment")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					_, err = f.ClientSet.ExtensionsV1beta1().Deployments(namespace).List(metav1.ListOptions{})
 | 
										_, err = f.ClientSet.AppsV1().Deployments(namespace).List(metav1.ListOptions{})
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to create list deployments")
 | 
										framework.ExpectNoError(err, "failed to create list deployments")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					err = f.ClientSet.ExtensionsV1beta1().Deployments(namespace).Delete("audit-deployment", &metav1.DeleteOptions{})
 | 
										err = f.ClientSet.AppsV1().Deployments(namespace).Delete("audit-deployment", &metav1.DeleteOptions{})
 | 
				
			||||||
					framework.ExpectNoError(err, "failed to delete deployments")
 | 
										framework.ExpectNoError(err, "failed to delete deployments")
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				[]auditEvent{
 | 
									[]auditEvent{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,9 +141,9 @@ go_library(
 | 
				
			|||||||
        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/dynamic:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/informers:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/informers:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/kubernetes:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/kubernetes:go_default_library",
 | 
				
			||||||
 | 
					        "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library",
 | 
					 | 
				
			||||||
        "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/rest:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
					        "//vendor/k8s.io/client-go/restmapper:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,36 +22,36 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	. "github.com/onsi/ginkgo"
 | 
						. "github.com/onsi/ginkgo"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/uuid"
 | 
						"k8s.io/apimachinery/pkg/util/uuid"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/watch"
 | 
						"k8s.io/apimachinery/pkg/watch"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	scaleclient "k8s.io/client-go/scale"
 | 
						scaleclient "k8s.io/client-go/scale"
 | 
				
			||||||
	extensionsinternal "k8s.io/kubernetes/pkg/apis/extensions"
 | 
						appsinternal "k8s.io/kubernetes/pkg/apis/apps"
 | 
				
			||||||
	deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
						deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string, applyUpdate testutils.UpdateDeploymentFunc) (*extensions.Deployment, error) {
 | 
					func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string, applyUpdate testutils.UpdateDeploymentFunc) (*apps.Deployment, error) {
 | 
				
			||||||
	return testutils.UpdateDeploymentWithRetries(c, namespace, name, applyUpdate, Logf, Poll, pollShortTimeout)
 | 
						return testutils.UpdateDeploymentWithRetries(c, namespace, name, applyUpdate, Logf, Poll, pollShortTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Waits for the deployment to clean up old rcs.
 | 
					// Waits for the deployment to clean up old rcs.
 | 
				
			||||||
func WaitForDeploymentOldRSsNum(c clientset.Interface, ns, deploymentName string, desiredRSNum int) error {
 | 
					func WaitForDeploymentOldRSsNum(c clientset.Interface, ns, deploymentName string, desiredRSNum int) error {
 | 
				
			||||||
	var oldRSs []*extensions.ReplicaSet
 | 
						var oldRSs []*apps.ReplicaSet
 | 
				
			||||||
	var d *extensions.Deployment
 | 
						var d *apps.Deployment
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pollErr := wait.PollImmediate(Poll, 5*time.Minute, func() (bool, error) {
 | 
						pollErr := wait.PollImmediate(Poll, 5*time.Minute, func() (bool, error) {
 | 
				
			||||||
		deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		d = deployment
 | 
							d = deployment
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		_, oldRSs, err = deploymentutil.GetOldReplicaSets(deployment, c.ExtensionsV1beta1())
 | 
							_, oldRSs, err = deploymentutil.GetOldReplicaSets(deployment, c.AppsV1())
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -64,7 +64,7 @@ func WaitForDeploymentOldRSsNum(c clientset.Interface, ns, deploymentName string
 | 
				
			|||||||
	return pollErr
 | 
						return pollErr
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func logReplicaSetsOfDeployment(deployment *extensions.Deployment, allOldRSs []*extensions.ReplicaSet, newRS *extensions.ReplicaSet) {
 | 
					func logReplicaSetsOfDeployment(deployment *apps.Deployment, allOldRSs []*apps.ReplicaSet, newRS *apps.ReplicaSet) {
 | 
				
			||||||
	testutils.LogReplicaSetsOfDeployment(deployment, allOldRSs, newRS, Logf)
 | 
						testutils.LogReplicaSetsOfDeployment(deployment, allOldRSs, newRS, Logf)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,7 +72,7 @@ func WaitForObservedDeployment(c clientset.Interface, ns, deploymentName string,
 | 
				
			|||||||
	return testutils.WaitForObservedDeployment(c, ns, deploymentName, desiredGeneration)
 | 
						return testutils.WaitForObservedDeployment(c, ns, deploymentName, desiredGeneration)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType extensions.DeploymentConditionType) error {
 | 
					func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType apps.DeploymentConditionType) error {
 | 
				
			||||||
	return testutils.WaitForDeploymentWithCondition(c, ns, deploymentName, reason, condType, Logf, Poll, pollLongTimeout)
 | 
						return testutils.WaitForDeploymentWithCondition(c, ns, deploymentName, reason, condType, Logf, Poll, pollLongTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,16 +83,16 @@ func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName
 | 
				
			|||||||
	return testutils.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, revision, image, Logf, Poll, pollLongTimeout)
 | 
						return testutils.WaitForDeploymentRevisionAndImage(c, ns, deploymentName, revision, image, Logf, Poll, pollLongTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewDeployment(deploymentName string, replicas int32, podLabels map[string]string, imageName, image string, strategyType extensions.DeploymentStrategyType) *extensions.Deployment {
 | 
					func NewDeployment(deploymentName string, replicas int32, podLabels map[string]string, imageName, image string, strategyType apps.DeploymentStrategyType) *apps.Deployment {
 | 
				
			||||||
	zero := int64(0)
 | 
						zero := int64(0)
 | 
				
			||||||
	return &extensions.Deployment{
 | 
						return &apps.Deployment{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: deploymentName,
 | 
								Name: deploymentName,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Spec: extensions.DeploymentSpec{
 | 
							Spec: apps.DeploymentSpec{
 | 
				
			||||||
			Replicas: &replicas,
 | 
								Replicas: &replicas,
 | 
				
			||||||
			Selector: &metav1.LabelSelector{MatchLabels: podLabels},
 | 
								Selector: &metav1.LabelSelector{MatchLabels: podLabels},
 | 
				
			||||||
			Strategy: extensions.DeploymentStrategy{
 | 
								Strategy: apps.DeploymentStrategy{
 | 
				
			||||||
				Type: strategyType,
 | 
									Type: strategyType,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			Template: v1.PodTemplateSpec{
 | 
								Template: v1.PodTemplateSpec{
 | 
				
			||||||
@@ -116,13 +116,13 @@ func NewDeployment(deploymentName string, replicas int32, podLabels map[string]s
 | 
				
			|||||||
// Waits for the deployment to complete, and don't check if rolling update strategy is broken.
 | 
					// Waits for the deployment to complete, and don't check if rolling update strategy is broken.
 | 
				
			||||||
// Rolling update strategy is used only during a rolling update, and can be violated in other situations,
 | 
					// Rolling update strategy is used only during a rolling update, and can be violated in other situations,
 | 
				
			||||||
// such as shortly after a scaling event or the deployment is just created.
 | 
					// such as shortly after a scaling event or the deployment is just created.
 | 
				
			||||||
func WaitForDeploymentComplete(c clientset.Interface, d *extensions.Deployment) error {
 | 
					func WaitForDeploymentComplete(c clientset.Interface, d *apps.Deployment) error {
 | 
				
			||||||
	return testutils.WaitForDeploymentComplete(c, d, Logf, Poll, pollLongTimeout)
 | 
						return testutils.WaitForDeploymentComplete(c, d, Logf, Poll, pollLongTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
 | 
					// Waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
 | 
				
			||||||
// Rolling update strategy should not be broken during a rolling update.
 | 
					// Rolling update strategy should not be broken during a rolling update.
 | 
				
			||||||
func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *extensions.Deployment) error {
 | 
					func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *apps.Deployment) error {
 | 
				
			||||||
	return testutils.WaitForDeploymentCompleteAndCheckRolling(c, d, Logf, Poll, pollLongTimeout)
 | 
						return testutils.WaitForDeploymentCompleteAndCheckRolling(c, d, Logf, Poll, pollLongTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -139,12 +139,12 @@ func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// WatchRecreateDeployment watches Recreate deployments and ensures no new pods will run at the same time with
 | 
					// WatchRecreateDeployment watches Recreate deployments and ensures no new pods will run at the same time with
 | 
				
			||||||
// old pods.
 | 
					// old pods.
 | 
				
			||||||
func WatchRecreateDeployment(c clientset.Interface, d *extensions.Deployment) error {
 | 
					func WatchRecreateDeployment(c clientset.Interface, d *apps.Deployment) error {
 | 
				
			||||||
	if d.Spec.Strategy.Type != extensions.RecreateDeploymentStrategyType {
 | 
						if d.Spec.Strategy.Type != apps.RecreateDeploymentStrategyType {
 | 
				
			||||||
		return fmt.Errorf("deployment %q does not use a Recreate strategy: %s", d.Name, d.Spec.Strategy.Type)
 | 
							return fmt.Errorf("deployment %q does not use a Recreate strategy: %s", d.Name, d.Spec.Strategy.Type)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	w, err := c.ExtensionsV1beta1().Deployments(d.Namespace).Watch(metav1.SingleObject(metav1.ObjectMeta{Name: d.Name, ResourceVersion: d.ResourceVersion}))
 | 
						w, err := c.AppsV1().Deployments(d.Namespace).Watch(metav1.SingleObject(metav1.ObjectMeta{Name: d.Name, ResourceVersion: d.ResourceVersion}))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -152,12 +152,12 @@ func WatchRecreateDeployment(c clientset.Interface, d *extensions.Deployment) er
 | 
				
			|||||||
	status := d.Status
 | 
						status := d.Status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	condition := func(event watch.Event) (bool, error) {
 | 
						condition := func(event watch.Event) (bool, error) {
 | 
				
			||||||
		d := event.Object.(*extensions.Deployment)
 | 
							d := event.Object.(*apps.Deployment)
 | 
				
			||||||
		status = d.Status
 | 
							status = d.Status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if d.Status.UpdatedReplicas > 0 && d.Status.Replicas != d.Status.UpdatedReplicas {
 | 
							if d.Status.UpdatedReplicas > 0 && d.Status.Replicas != d.Status.UpdatedReplicas {
 | 
				
			||||||
			_, allOldRSs, err := deploymentutil.GetOldReplicaSets(d, c.ExtensionsV1beta1())
 | 
								_, allOldRSs, err := deploymentutil.GetOldReplicaSets(d, c.AppsV1())
 | 
				
			||||||
			newRS, nerr := deploymentutil.GetNewReplicaSet(d, c.ExtensionsV1beta1())
 | 
								newRS, nerr := deploymentutil.GetNewReplicaSet(d, c.AppsV1())
 | 
				
			||||||
			if err == nil && nerr == nil {
 | 
								if err == nil && nerr == nil {
 | 
				
			||||||
				Logf("%+v", d)
 | 
									Logf("%+v", d)
 | 
				
			||||||
				logReplicaSetsOfDeployment(d, allOldRSs, newRS)
 | 
									logReplicaSetsOfDeployment(d, allOldRSs, newRS)
 | 
				
			||||||
@@ -179,7 +179,7 @@ func WatchRecreateDeployment(c clientset.Interface, d *extensions.Deployment) er
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ScaleDeployment(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ns, name string, size uint, wait bool) error {
 | 
					func ScaleDeployment(clientset clientset.Interface, scalesGetter scaleclient.ScalesGetter, ns, name string, size uint, wait bool) error {
 | 
				
			||||||
	return ScaleResource(clientset, scalesGetter, ns, name, size, wait, extensionsinternal.Kind("Deployment"), extensionsinternal.Resource("deployments"))
 | 
						return ScaleResource(clientset, scalesGetter, ns, name, size, wait, appsinternal.Kind("Deployment"), appsinternal.Resource("deployments"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func RunDeployment(config testutils.DeploymentConfig) error {
 | 
					func RunDeployment(config testutils.DeploymentConfig) error {
 | 
				
			||||||
@@ -189,13 +189,13 @@ func RunDeployment(config testutils.DeploymentConfig) error {
 | 
				
			|||||||
	return testutils.RunDeployment(config)
 | 
						return testutils.RunDeployment(config)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func logPodsOfDeployment(c clientset.Interface, deployment *extensions.Deployment, rsList []*extensions.ReplicaSet) {
 | 
					func logPodsOfDeployment(c clientset.Interface, deployment *apps.Deployment, rsList []*apps.ReplicaSet) {
 | 
				
			||||||
	testutils.LogPodsOfDeployment(c, deployment, rsList, Logf)
 | 
						testutils.LogPodsOfDeployment(c, deployment, rsList, Logf)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func WaitForDeploymentRevision(c clientset.Interface, d *extensions.Deployment, targetRevision string) error {
 | 
					func WaitForDeploymentRevision(c clientset.Interface, d *apps.Deployment, targetRevision string) error {
 | 
				
			||||||
	err := wait.PollImmediate(Poll, pollLongTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(Poll, pollLongTimeout, func() (bool, error) {
 | 
				
			||||||
		deployment, err := c.ExtensionsV1beta1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
 | 
							deployment, err := c.AppsV1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -213,9 +213,9 @@ func CheckDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName,
 | 
				
			|||||||
	return testutils.CheckDeploymentRevisionAndImage(c, ns, deploymentName, revision, image)
 | 
						return testutils.CheckDeploymentRevisionAndImage(c, ns, deploymentName, revision, image)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func CreateDeployment(client clientset.Interface, replicas int32, podLabels map[string]string, nodeSelector map[string]string, namespace string, pvclaims []*v1.PersistentVolumeClaim, command string) (*extensions.Deployment, error) {
 | 
					func CreateDeployment(client clientset.Interface, replicas int32, podLabels map[string]string, nodeSelector map[string]string, namespace string, pvclaims []*v1.PersistentVolumeClaim, command string) (*apps.Deployment, error) {
 | 
				
			||||||
	deploymentSpec := MakeDeployment(replicas, podLabels, nodeSelector, namespace, pvclaims, false, command)
 | 
						deploymentSpec := MakeDeployment(replicas, podLabels, nodeSelector, namespace, pvclaims, false, command)
 | 
				
			||||||
	deployment, err := client.ExtensionsV1beta1().Deployments(namespace).Create(deploymentSpec)
 | 
						deployment, err := client.AppsV1().Deployments(namespace).Create(deploymentSpec)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("deployment %q Create API error: %v", deploymentSpec.Name, err)
 | 
							return nil, fmt.Errorf("deployment %q Create API error: %v", deploymentSpec.Name, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -229,18 +229,18 @@ func CreateDeployment(client clientset.Interface, replicas int32, podLabels map[
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// MakeDeployment creates a deployment definition based on the namespace. The deployment references the PVC's
 | 
					// MakeDeployment creates a deployment definition based on the namespace. The deployment references the PVC's
 | 
				
			||||||
// name.  A slice of BASH commands can be supplied as args to be run by the pod
 | 
					// name.  A slice of BASH commands can be supplied as args to be run by the pod
 | 
				
			||||||
func MakeDeployment(replicas int32, podLabels map[string]string, nodeSelector map[string]string, namespace string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) *extensions.Deployment {
 | 
					func MakeDeployment(replicas int32, podLabels map[string]string, nodeSelector map[string]string, namespace string, pvclaims []*v1.PersistentVolumeClaim, isPrivileged bool, command string) *apps.Deployment {
 | 
				
			||||||
	if len(command) == 0 {
 | 
						if len(command) == 0 {
 | 
				
			||||||
		command = "while true; do sleep 1; done"
 | 
							command = "while true; do sleep 1; done"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	zero := int64(0)
 | 
						zero := int64(0)
 | 
				
			||||||
	deploymentName := "deployment-" + string(uuid.NewUUID())
 | 
						deploymentName := "deployment-" + string(uuid.NewUUID())
 | 
				
			||||||
	deploymentSpec := &extensions.Deployment{
 | 
						deploymentSpec := &apps.Deployment{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name:      deploymentName,
 | 
								Name:      deploymentName,
 | 
				
			||||||
			Namespace: namespace,
 | 
								Namespace: namespace,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Spec: extensions.DeploymentSpec{
 | 
							Spec: apps.DeploymentSpec{
 | 
				
			||||||
			Replicas: &replicas,
 | 
								Replicas: &replicas,
 | 
				
			||||||
			Template: v1.PodTemplateSpec{
 | 
								Template: v1.PodTemplateSpec{
 | 
				
			||||||
				ObjectMeta: metav1.ObjectMeta{
 | 
									ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
@@ -280,8 +280,8 @@ func MakeDeployment(replicas int32, podLabels map[string]string, nodeSelector ma
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetPodsForDeployment gets pods for the given deployment
 | 
					// GetPodsForDeployment gets pods for the given deployment
 | 
				
			||||||
func GetPodsForDeployment(client clientset.Interface, deployment *extensions.Deployment) (*v1.PodList, error) {
 | 
					func GetPodsForDeployment(client clientset.Interface, deployment *apps.Deployment) (*v1.PodList, error) {
 | 
				
			||||||
	replicaSet, err := deploymentutil.GetNewReplicaSet(deployment, client.ExtensionsV1beta1())
 | 
						replicaSet, err := deploymentutil.GetNewReplicaSet(deployment, client.AppsV1())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("Failed to get new replica set for deployment %q: %v", deployment.Name, err)
 | 
							return nil, fmt.Errorf("Failed to get new replica set for deployment %q: %v", deployment.Name, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -291,7 +291,7 @@ func GetPodsForDeployment(client clientset.Interface, deployment *extensions.Dep
 | 
				
			|||||||
	podListFunc := func(namespace string, options metav1.ListOptions) (*v1.PodList, error) {
 | 
						podListFunc := func(namespace string, options metav1.ListOptions) (*v1.PodList, error) {
 | 
				
			||||||
		return client.CoreV1().Pods(namespace).List(options)
 | 
							return client.CoreV1().Pods(namespace).List(options)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	rsList := []*extensions.ReplicaSet{replicaSet}
 | 
						rsList := []*apps.ReplicaSet{replicaSet}
 | 
				
			||||||
	podList, err := deploymentutil.ListPods(deployment, rsList, podListFunc)
 | 
						podList, err := deploymentutil.ListPods(deployment, rsList, podListFunc)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("Failed to list Pods of Deployment %q: %v", deployment.Name, err)
 | 
							return nil, fmt.Errorf("Failed to list Pods of Deployment %q: %v", deployment.Name, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,16 +23,15 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	apps "k8s.io/api/apps/v1"
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	extensionsclient "k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
 | 
						appsclient "k8s.io/client-go/kubernetes/typed/apps/v1"
 | 
				
			||||||
	deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
						deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
				
			||||||
	testutils "k8s.io/kubernetes/test/utils"
 | 
						testutils "k8s.io/kubernetes/test/utils"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type updateRsFunc func(d *extensions.ReplicaSet)
 | 
					type updateRsFunc func(d *apps.ReplicaSet)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func UpdateReplicaSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate testutils.UpdateReplicaSetFunc) (*apps.ReplicaSet, error) {
 | 
					func UpdateReplicaSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate testutils.UpdateReplicaSetFunc) (*apps.ReplicaSet, error) {
 | 
				
			||||||
	return testutils.UpdateReplicaSetWithRetries(c, namespace, name, applyUpdate, Logf, Poll, pollShortTimeout)
 | 
						return testutils.UpdateReplicaSetWithRetries(c, namespace, name, applyUpdate, Logf, Poll, pollShortTimeout)
 | 
				
			||||||
@@ -40,11 +39,11 @@ func UpdateReplicaSetWithRetries(c clientset.Interface, namespace, name string,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// CheckNewRSAnnotations check if the new RS's annotation is as expected
 | 
					// CheckNewRSAnnotations check if the new RS's annotation is as expected
 | 
				
			||||||
func CheckNewRSAnnotations(c clientset.Interface, ns, deploymentName string, expectedAnnotations map[string]string) error {
 | 
					func CheckNewRSAnnotations(c clientset.Interface, ns, deploymentName string, expectedAnnotations map[string]string) error {
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -60,7 +59,7 @@ func CheckNewRSAnnotations(c clientset.Interface, ns, deploymentName string, exp
 | 
				
			|||||||
// WaitForReadyReplicaSet waits until the replicaset has all of its replicas ready.
 | 
					// WaitForReadyReplicaSet waits until the replicaset has all of its replicas ready.
 | 
				
			||||||
func WaitForReadyReplicaSet(c clientset.Interface, ns, name string) error {
 | 
					func WaitForReadyReplicaSet(c clientset.Interface, ns, name string) error {
 | 
				
			||||||
	err := wait.Poll(Poll, pollShortTimeout, func() (bool, error) {
 | 
						err := wait.Poll(Poll, pollShortTimeout, func() (bool, error) {
 | 
				
			||||||
		rs, err := c.ExtensionsV1beta1().ReplicaSets(ns).Get(name, metav1.GetOptions{})
 | 
							rs, err := c.AppsV1().ReplicaSets(ns).Get(name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -73,7 +72,7 @@ func WaitForReadyReplicaSet(c clientset.Interface, ns, name string) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitForReplicaSetDesiredReplicas waits until the replicaset has desired number of replicas.
 | 
					// WaitForReplicaSetDesiredReplicas waits until the replicaset has desired number of replicas.
 | 
				
			||||||
func WaitForReplicaSetDesiredReplicas(rsClient extensionsclient.ReplicaSetsGetter, replicaSet *extensions.ReplicaSet) error {
 | 
					func WaitForReplicaSetDesiredReplicas(rsClient appsclient.ReplicaSetsGetter, replicaSet *apps.ReplicaSet) error {
 | 
				
			||||||
	desiredGeneration := replicaSet.Generation
 | 
						desiredGeneration := replicaSet.Generation
 | 
				
			||||||
	err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
				
			||||||
		rs, err := rsClient.ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
							rs, err := rsClient.ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
				
			||||||
@@ -89,10 +88,10 @@ func WaitForReplicaSetDesiredReplicas(rsClient extensionsclient.ReplicaSetsGette
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitForReplicaSetTargetSpecReplicas waits for .spec.replicas of a RS to equal targetReplicaNum
 | 
					// WaitForReplicaSetTargetSpecReplicas waits for .spec.replicas of a RS to equal targetReplicaNum
 | 
				
			||||||
func WaitForReplicaSetTargetSpecReplicas(c clientset.Interface, replicaSet *extensions.ReplicaSet, targetReplicaNum int32) error {
 | 
					func WaitForReplicaSetTargetSpecReplicas(c clientset.Interface, replicaSet *apps.ReplicaSet, targetReplicaNum int32) error {
 | 
				
			||||||
	desiredGeneration := replicaSet.Generation
 | 
						desiredGeneration := replicaSet.Generation
 | 
				
			||||||
	err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
				
			||||||
		rs, err := c.ExtensionsV1beta1().ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
							rs, err := c.AppsV1().ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -105,10 +104,10 @@ func WaitForReplicaSetTargetSpecReplicas(c clientset.Interface, replicaSet *exte
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitForReplicaSetTargetAvailableReplicas waits for .status.availableReplicas of a RS to equal targetReplicaNum
 | 
					// WaitForReplicaSetTargetAvailableReplicas waits for .status.availableReplicas of a RS to equal targetReplicaNum
 | 
				
			||||||
func WaitForReplicaSetTargetAvailableReplicas(c clientset.Interface, replicaSet *extensions.ReplicaSet, targetReplicaNum int32) error {
 | 
					func WaitForReplicaSetTargetAvailableReplicas(c clientset.Interface, replicaSet *apps.ReplicaSet, targetReplicaNum int32) error {
 | 
				
			||||||
	desiredGeneration := replicaSet.Generation
 | 
						desiredGeneration := replicaSet.Generation
 | 
				
			||||||
	err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(Poll, pollShortTimeout, func() (bool, error) {
 | 
				
			||||||
		rs, err := c.ExtensionsV1beta1().ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
							rs, err := c.AppsV1().ReplicaSets(replicaSet.Namespace).Get(replicaSet.Name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,8 +21,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	. "github.com/onsi/ginkgo"
 | 
						. "github.com/onsi/ginkgo"
 | 
				
			||||||
	. "github.com/onsi/gomega"
 | 
						. "github.com/onsi/gomega"
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	storage "k8s.io/api/storage/v1"
 | 
						storage "k8s.io/api/storage/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
						"k8s.io/apimachinery/pkg/api/resource"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
@@ -113,7 +113,7 @@ var _ = utils.SIGDescribe("Mounted volume expand [Feature:ExpandPersistentVolume
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		By("Creating a deployment with the provisioned volume")
 | 
							By("Creating a deployment with the provisioned volume")
 | 
				
			||||||
		deployment, err := framework.CreateDeployment(c, int32(1), map[string]string{"test": "app"}, nodeKeyValueLabel, ns, pvcClaims, "")
 | 
							deployment, err := framework.CreateDeployment(c, int32(1), map[string]string{"test": "app"}, nodeKeyValueLabel, ns, pvcClaims, "")
 | 
				
			||||||
		defer c.ExtensionsV1beta1().Deployments(ns).Delete(deployment.Name, &metav1.DeleteOptions{})
 | 
							defer c.AppsV1().Deployments(ns).Delete(deployment.Name, &metav1.DeleteOptions{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		By("Expanding current pvc")
 | 
							By("Expanding current pvc")
 | 
				
			||||||
		newSize := resource.MustParse("6Gi")
 | 
							newSize := resource.MustParse("6Gi")
 | 
				
			||||||
@@ -152,7 +152,7 @@ var _ = utils.SIGDescribe("Mounted volume expand [Feature:ExpandPersistentVolume
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func waitForDeploymentToRecreatePod(client clientset.Interface, deployment *extensions.Deployment) (v1.Pod, error) {
 | 
					func waitForDeploymentToRecreatePod(client clientset.Interface, deployment *apps.Deployment) (v1.Pod, error) {
 | 
				
			||||||
	var runningPod v1.Pod
 | 
						var runningPod v1.Pod
 | 
				
			||||||
	waitErr := wait.PollImmediate(10*time.Second, 5*time.Minute, func() (bool, error) {
 | 
						waitErr := wait.PollImmediate(10*time.Second, 5*time.Minute, func() (bool, error) {
 | 
				
			||||||
		podList, err := framework.GetPodsForDeployment(client, deployment)
 | 
							podList, err := framework.GetPodsForDeployment(client, deployment)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,8 +53,8 @@ go_library(
 | 
				
			|||||||
        "//vendor/github.com/vmware/govmomi/vim25/soap:go_default_library",
 | 
					        "//vendor/github.com/vmware/govmomi/vim25/soap:go_default_library",
 | 
				
			||||||
        "//vendor/github.com/vmware/govmomi/vim25/types:go_default_library",
 | 
					        "//vendor/github.com/vmware/govmomi/vim25/types:go_default_library",
 | 
				
			||||||
        "//vendor/gopkg.in/gcfg.v1:go_default_library",
 | 
					        "//vendor/gopkg.in/gcfg.v1:go_default_library",
 | 
				
			||||||
 | 
					        "//vendor/k8s.io/api/apps/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/api/core/v1: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/storage/v1:go_default_library",
 | 
					        "//vendor/k8s.io/api/storage/v1:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
					        "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
				
			||||||
        "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
 | 
					        "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,8 +26,8 @@ import (
 | 
				
			|||||||
	"github.com/vmware/govmomi/object"
 | 
						"github.com/vmware/govmomi/object"
 | 
				
			||||||
	vimtypes "github.com/vmware/govmomi/vim25/types"
 | 
						vimtypes "github.com/vmware/govmomi/vim25/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
@@ -140,7 +140,7 @@ var _ = utils.SIGDescribe("Node Poweroff [Feature:vsphere] [Slow] [Disruptive]",
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Wait until the pod failed over to a different node, or time out after 3 minutes
 | 
					// Wait until the pod failed over to a different node, or time out after 3 minutes
 | 
				
			||||||
func waitForPodToFailover(client clientset.Interface, deployment *extensions.Deployment, oldNode string) (string, error) {
 | 
					func waitForPodToFailover(client clientset.Interface, deployment *apps.Deployment, oldNode string) (string, error) {
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		err      error
 | 
							err      error
 | 
				
			||||||
		newNode  string
 | 
							newNode  string
 | 
				
			||||||
@@ -175,7 +175,7 @@ func waitForPodToFailover(client clientset.Interface, deployment *extensions.Dep
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// getNodeForDeployment returns node name for the Deployment
 | 
					// getNodeForDeployment returns node name for the Deployment
 | 
				
			||||||
func getNodeForDeployment(client clientset.Interface, deployment *extensions.Deployment) (string, error) {
 | 
					func getNodeForDeployment(client clientset.Interface, deployment *apps.Deployment) (string, error) {
 | 
				
			||||||
	podList, err := framework.GetPodsForDeployment(client, deployment)
 | 
						podList, err := framework.GetPodsForDeployment(client, deployment)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return "", err
 | 
							return "", err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package upgrades
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/types"
 | 
						"k8s.io/apimachinery/pkg/types"
 | 
				
			||||||
	deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
						deploymentutil "k8s.io/kubernetes/pkg/controller/deployment/util"
 | 
				
			||||||
@@ -54,11 +54,11 @@ func (t *DeploymentUpgradeTest) Setup(f *framework.Framework) {
 | 
				
			|||||||
	nginxImage := imageutils.GetE2EImage(imageutils.NginxSlim)
 | 
						nginxImage := imageutils.GetE2EImage(imageutils.NginxSlim)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ns := f.Namespace.Name
 | 
						ns := f.Namespace.Name
 | 
				
			||||||
	deploymentClient := c.ExtensionsV1beta1().Deployments(ns)
 | 
						deploymentClient := c.AppsV1().Deployments(ns)
 | 
				
			||||||
	rsClient := c.ExtensionsV1beta1().ReplicaSets(ns)
 | 
						rsClient := c.AppsV1().ReplicaSets(ns)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	By(fmt.Sprintf("Creating a deployment %q with 1 replica in namespace %q", deploymentName, ns))
 | 
						By(fmt.Sprintf("Creating a deployment %q with 1 replica in namespace %q", deploymentName, ns))
 | 
				
			||||||
	d := framework.NewDeployment(deploymentName, int32(1), map[string]string{"test": "upgrade"}, "nginx", nginxImage, extensions.RollingUpdateDeploymentStrategyType)
 | 
						d := framework.NewDeployment(deploymentName, int32(1), map[string]string{"test": "upgrade"}, "nginx", nginxImage, apps.RollingUpdateDeploymentStrategyType)
 | 
				
			||||||
	deployment, err := deploymentClient.Create(d)
 | 
						deployment, err := deploymentClient.Create(d)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,7 +81,7 @@ func (t *DeploymentUpgradeTest) Setup(f *framework.Framework) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Trigger a new rollout so that we have some history.
 | 
						// Trigger a new rollout so that we have some history.
 | 
				
			||||||
	By(fmt.Sprintf("Triggering a new rollout for deployment %q", deploymentName))
 | 
						By(fmt.Sprintf("Triggering a new rollout for deployment %q", deploymentName))
 | 
				
			||||||
	deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(update *extensions.Deployment) {
 | 
						deployment, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(update *apps.Deployment) {
 | 
				
			||||||
		update.Spec.Template.Spec.Containers[0].Name = "updated-name"
 | 
							update.Spec.Template.Spec.Containers[0].Name = "updated-name"
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
@@ -121,8 +121,8 @@ func (t *DeploymentUpgradeTest) Test(f *framework.Framework, done <-chan struct{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	c := f.ClientSet
 | 
						c := f.ClientSet
 | 
				
			||||||
	ns := f.Namespace.Name
 | 
						ns := f.Namespace.Name
 | 
				
			||||||
	deploymentClient := c.ExtensionsV1beta1().Deployments(ns)
 | 
						deploymentClient := c.AppsV1().Deployments(ns)
 | 
				
			||||||
	rsClient := c.ExtensionsV1beta1().ReplicaSets(ns)
 | 
						rsClient := c.AppsV1().ReplicaSets(ns)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	deployment, err := deploymentClient.Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := deploymentClient.Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
@@ -157,7 +157,7 @@ func (t *DeploymentUpgradeTest) Test(f *framework.Framework, done <-chan struct{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Verify the upgraded deployment is active by scaling up the deployment by 1
 | 
						// Verify the upgraded deployment is active by scaling up the deployment by 1
 | 
				
			||||||
	By(fmt.Sprintf("Scaling up replicaset of deployment %q by 1", deploymentName))
 | 
						By(fmt.Sprintf("Scaling up replicaset of deployment %q by 1", deploymentName))
 | 
				
			||||||
	_, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(deployment *extensions.Deployment) {
 | 
						_, err = framework.UpdateDeploymentWithRetries(c, ns, deploymentName, func(deployment *apps.Deployment) {
 | 
				
			||||||
		*deployment.Spec.Replicas = *deployment.Spec.Replicas + 1
 | 
							*deployment.Spec.Replicas = *deployment.Spec.Replicas + 1
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,8 +22,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/davecgh/go-spew/spew"
 | 
						"github.com/davecgh/go-spew/spew"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apps "k8s.io/api/apps/v1"
 | 
				
			||||||
	"k8s.io/api/core/v1"
 | 
						"k8s.io/api/core/v1"
 | 
				
			||||||
	extensions "k8s.io/api/extensions/v1beta1"
 | 
					 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
@@ -34,7 +34,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type LogfFn func(format string, args ...interface{})
 | 
					type LogfFn func(format string, args ...interface{})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func LogReplicaSetsOfDeployment(deployment *extensions.Deployment, allOldRSs []*extensions.ReplicaSet, newRS *extensions.ReplicaSet, logf LogfFn) {
 | 
					func LogReplicaSetsOfDeployment(deployment *apps.Deployment, allOldRSs []*apps.ReplicaSet, newRS *apps.ReplicaSet, logf LogfFn) {
 | 
				
			||||||
	if newRS != nil {
 | 
						if newRS != nil {
 | 
				
			||||||
		logf(spew.Sprintf("New ReplicaSet %q of Deployment %q:\n%+v", newRS.Name, deployment.Name, *newRS))
 | 
							logf(spew.Sprintf("New ReplicaSet %q of Deployment %q:\n%+v", newRS.Name, deployment.Name, *newRS))
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
@@ -48,7 +48,7 @@ func LogReplicaSetsOfDeployment(deployment *extensions.Deployment, allOldRSs []*
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deployment, rsList []*extensions.ReplicaSet, logf LogfFn) {
 | 
					func LogPodsOfDeployment(c clientset.Interface, deployment *apps.Deployment, rsList []*apps.ReplicaSet, logf LogfFn) {
 | 
				
			||||||
	minReadySeconds := deployment.Spec.MinReadySeconds
 | 
						minReadySeconds := deployment.Spec.MinReadySeconds
 | 
				
			||||||
	podListFunc := func(namespace string, options metav1.ListOptions) (*v1.PodList, error) {
 | 
						podListFunc := func(namespace string, options metav1.ListOptions) (*v1.PodList, error) {
 | 
				
			||||||
		return c.CoreV1().Pods(namespace).List(options)
 | 
							return c.CoreV1().Pods(namespace).List(options)
 | 
				
			||||||
@@ -72,15 +72,15 @@ func LogPodsOfDeployment(c clientset.Interface, deployment *extensions.Deploymen
 | 
				
			|||||||
// If during a rolling update (rolling == true), returns an error if the deployment's
 | 
					// If during a rolling update (rolling == true), returns an error if the deployment's
 | 
				
			||||||
// rolling update strategy (max unavailable or max surge) is broken at any times.
 | 
					// rolling update strategy (max unavailable or max surge) is broken at any times.
 | 
				
			||||||
// It's not seen as a rolling update if shortly after a scaling event or the deployment is just created.
 | 
					// It's not seen as a rolling update if shortly after a scaling event or the deployment is just created.
 | 
				
			||||||
func waitForDeploymentCompleteMaybeCheckRolling(c clientset.Interface, d *extensions.Deployment, rolling bool, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
					func waitForDeploymentCompleteMaybeCheckRolling(c clientset.Interface, d *apps.Deployment, rolling bool, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		deployment *extensions.Deployment
 | 
							deployment *apps.Deployment
 | 
				
			||||||
		reason     string
 | 
							reason     string
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
		deployment, err = c.ExtensionsV1beta1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
 | 
							deployment, err = c.AppsV1().Deployments(d.Namespace).Get(d.Name, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -114,9 +114,9 @@ func waitForDeploymentCompleteMaybeCheckRolling(c clientset.Interface, d *extens
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func checkRollingUpdateStatus(c clientset.Interface, deployment *extensions.Deployment, logf LogfFn) (string, error) {
 | 
					func checkRollingUpdateStatus(c clientset.Interface, deployment *apps.Deployment, logf LogfFn) (string, error) {
 | 
				
			||||||
	var reason string
 | 
						var reason string
 | 
				
			||||||
	oldRSs, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(deployment, c.ExtensionsV1beta1())
 | 
						oldRSs, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(deployment, c.AppsV1())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return "", err
 | 
							return "", err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -128,7 +128,7 @@ func checkRollingUpdateStatus(c clientset.Interface, deployment *extensions.Depl
 | 
				
			|||||||
	allRSs := append(oldRSs, newRS)
 | 
						allRSs := append(oldRSs, newRS)
 | 
				
			||||||
	// The old/new ReplicaSets need to contain the pod-template-hash label
 | 
						// The old/new ReplicaSets need to contain the pod-template-hash label
 | 
				
			||||||
	for i := range allRSs {
 | 
						for i := range allRSs {
 | 
				
			||||||
		if !labelsutil.SelectorHasLabel(allRSs[i].Spec.Selector, extensions.DefaultDeploymentUniqueLabelKey) {
 | 
							if !labelsutil.SelectorHasLabel(allRSs[i].Spec.Selector, apps.DefaultDeploymentUniqueLabelKey) {
 | 
				
			||||||
			reason = "all replica sets need to contain the pod-template-hash label"
 | 
								reason = "all replica sets need to contain the pod-template-hash label"
 | 
				
			||||||
			return reason, nil
 | 
								return reason, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -153,7 +153,7 @@ func checkRollingUpdateStatus(c clientset.Interface, deployment *extensions.Depl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
 | 
					// Waits for the deployment to complete, and check rolling update strategy isn't broken at any times.
 | 
				
			||||||
// Rolling update strategy should not be broken during a rolling update.
 | 
					// Rolling update strategy should not be broken during a rolling update.
 | 
				
			||||||
func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *extensions.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *apps.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	rolling := true
 | 
						rolling := true
 | 
				
			||||||
	return waitForDeploymentCompleteMaybeCheckRolling(c, d, rolling, logf, pollInterval, pollTimeout)
 | 
						return waitForDeploymentCompleteMaybeCheckRolling(c, d, rolling, logf, pollInterval, pollTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -161,7 +161,7 @@ func WaitForDeploymentCompleteAndCheckRolling(c clientset.Interface, d *extensio
 | 
				
			|||||||
// Waits for the deployment to complete, and don't check if rolling update strategy is broken.
 | 
					// Waits for the deployment to complete, and don't check if rolling update strategy is broken.
 | 
				
			||||||
// Rolling update strategy is used only during a rolling update, and can be violated in other situations,
 | 
					// Rolling update strategy is used only during a rolling update, and can be violated in other situations,
 | 
				
			||||||
// such as shortly after a scaling event or the deployment is just created.
 | 
					// such as shortly after a scaling event or the deployment is just created.
 | 
				
			||||||
func WaitForDeploymentComplete(c clientset.Interface, d *extensions.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentComplete(c clientset.Interface, d *apps.Deployment, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	rolling := false
 | 
						rolling := false
 | 
				
			||||||
	return waitForDeploymentCompleteMaybeCheckRolling(c, d, rolling, logf, pollInterval, pollTimeout)
 | 
						return waitForDeploymentCompleteMaybeCheckRolling(c, d, rolling, logf, pollInterval, pollTimeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -169,17 +169,17 @@ func WaitForDeploymentComplete(c clientset.Interface, d *extensions.Deployment,
 | 
				
			|||||||
// WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image.
 | 
					// WaitForDeploymentRevisionAndImage waits for the deployment's and its new RS's revision and container image to match the given revision and image.
 | 
				
			||||||
// Note that deployment revision and its new RS revision should be updated shortly, so we only wait for 1 minute here to fail early.
 | 
					// Note that deployment revision and its new RS revision should be updated shortly, so we only wait for 1 minute here to fail early.
 | 
				
			||||||
func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName string, revision, image string, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	var deployment *extensions.Deployment
 | 
						var deployment *apps.Deployment
 | 
				
			||||||
	var newRS *extensions.ReplicaSet
 | 
						var newRS *apps.ReplicaSet
 | 
				
			||||||
	var reason string
 | 
						var reason string
 | 
				
			||||||
	err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
		deployment, err = c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							deployment, err = c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// The new ReplicaSet needs to be non-nil and contain the pod-template-hash label
 | 
							// The new ReplicaSet needs to be non-nil and contain the pod-template-hash label
 | 
				
			||||||
		newRS, err = deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
							newRS, err = deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -205,26 +205,26 @@ func WaitForDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// CheckDeploymentRevisionAndImage checks if the input deployment's and its new replica set's revision and image are as expected.
 | 
					// CheckDeploymentRevisionAndImage checks if the input deployment's and its new replica set's revision and image are as expected.
 | 
				
			||||||
func CheckDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName, revision, image string) error {
 | 
					func CheckDeploymentRevisionAndImage(c clientset.Interface, ns, deploymentName, revision, image string) error {
 | 
				
			||||||
	deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
						deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("unable to get deployment %s during revision check: %v", deploymentName, err)
 | 
							return fmt.Errorf("unable to get deployment %s during revision check: %v", deploymentName, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check revision of the new replica set of this deployment
 | 
						// Check revision of the new replica set of this deployment
 | 
				
			||||||
	newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.ExtensionsV1beta1())
 | 
						newRS, err := deploymentutil.GetNewReplicaSet(deployment, c.AppsV1())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("unable to get new replicaset of deployment %s during revision check: %v", deploymentName, err)
 | 
							return fmt.Errorf("unable to get new replicaset of deployment %s during revision check: %v", deploymentName, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return checkRevisionAndImage(deployment, newRS, revision, image)
 | 
						return checkRevisionAndImage(deployment, newRS, revision, image)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func checkRevisionAndImage(deployment *extensions.Deployment, newRS *extensions.ReplicaSet, revision, image string) error {
 | 
					func checkRevisionAndImage(deployment *apps.Deployment, newRS *apps.ReplicaSet, revision, image string) error {
 | 
				
			||||||
	// The new ReplicaSet needs to be non-nil and contain the pod-template-hash label
 | 
						// The new ReplicaSet needs to be non-nil and contain the pod-template-hash label
 | 
				
			||||||
	if newRS == nil {
 | 
						if newRS == nil {
 | 
				
			||||||
		return fmt.Errorf("new replicaset for deployment %q is yet to be created", deployment.Name)
 | 
							return fmt.Errorf("new replicaset for deployment %q is yet to be created", deployment.Name)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if !labelsutil.SelectorHasLabel(newRS.Spec.Selector, extensions.DefaultDeploymentUniqueLabelKey) {
 | 
						if !labelsutil.SelectorHasLabel(newRS.Spec.Selector, apps.DefaultDeploymentUniqueLabelKey) {
 | 
				
			||||||
		return fmt.Errorf("new replica set %q doesn't have %q label selector", newRS.Name, extensions.DefaultDeploymentUniqueLabelKey)
 | 
							return fmt.Errorf("new replica set %q doesn't have %q label selector", newRS.Name, apps.DefaultDeploymentUniqueLabelKey)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Check revision of this deployment, and of the new replica set of this deployment
 | 
						// Check revision of this deployment, and of the new replica set of this deployment
 | 
				
			||||||
	if deployment.Annotations == nil || deployment.Annotations[deploymentutil.RevisionAnnotation] != revision {
 | 
						if deployment.Annotations == nil || deployment.Annotations[deploymentutil.RevisionAnnotation] != revision {
 | 
				
			||||||
@@ -252,19 +252,19 @@ func containsImage(containers []v1.Container, imageName string) bool {
 | 
				
			|||||||
	return false
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type UpdateDeploymentFunc func(d *extensions.Deployment)
 | 
					type UpdateDeploymentFunc func(d *apps.Deployment)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string, applyUpdate UpdateDeploymentFunc, logf LogfFn, pollInterval, pollTimeout time.Duration) (*extensions.Deployment, error) {
 | 
					func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string, applyUpdate UpdateDeploymentFunc, logf LogfFn, pollInterval, pollTimeout time.Duration) (*apps.Deployment, error) {
 | 
				
			||||||
	var deployment *extensions.Deployment
 | 
						var deployment *apps.Deployment
 | 
				
			||||||
	var updateErr error
 | 
						var updateErr error
 | 
				
			||||||
	pollErr := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						pollErr := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
		if deployment, err = c.ExtensionsV1beta1().Deployments(namespace).Get(name, metav1.GetOptions{}); err != nil {
 | 
							if deployment, err = c.AppsV1().Deployments(namespace).Get(name, metav1.GetOptions{}); err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Apply the update, then attempt to push it to the apiserver.
 | 
							// Apply the update, then attempt to push it to the apiserver.
 | 
				
			||||||
		applyUpdate(deployment)
 | 
							applyUpdate(deployment)
 | 
				
			||||||
		if deployment, err = c.ExtensionsV1beta1().Deployments(namespace).Update(deployment); err == nil {
 | 
							if deployment, err = c.AppsV1().Deployments(namespace).Update(deployment); err == nil {
 | 
				
			||||||
			logf("Updating deployment %s", name)
 | 
								logf("Updating deployment %s", name)
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -278,20 +278,20 @@ func UpdateDeploymentWithRetries(c clientset.Interface, namespace, name string,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func WaitForObservedDeployment(c clientset.Interface, ns, deploymentName string, desiredGeneration int64) error {
 | 
					func WaitForObservedDeployment(c clientset.Interface, ns, deploymentName string, desiredGeneration int64) error {
 | 
				
			||||||
	return deploymentutil.WaitForObservedDeployment(func() (*extensions.Deployment, error) {
 | 
						return deploymentutil.WaitForObservedDeployment(func() (*apps.Deployment, error) {
 | 
				
			||||||
		return c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							return c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
	}, desiredGeneration, 2*time.Second, 1*time.Minute)
 | 
						}, desiredGeneration, 2*time.Second, 1*time.Minute)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// WaitForDeploymentRollbackCleared waits for given deployment either started rolling back or doesn't need to rollback.
 | 
					// WaitForDeploymentRollbackCleared waits for given deployment either started rolling back or doesn't need to rollback.
 | 
				
			||||||
func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName string, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName string, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		deployment, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							deployment, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Rollback not set or is kicked off
 | 
							// Rollback not set or is kicked off
 | 
				
			||||||
		if deployment.Spec.RollbackTo == nil {
 | 
							if deployment.Annotations[apps.DeprecatedRollbackTo] == "" {
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return false, nil
 | 
							return false, nil
 | 
				
			||||||
@@ -304,9 +304,9 @@ func WaitForDeploymentRollbackCleared(c clientset.Interface, ns, deploymentName
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// WaitForDeploymentUpdatedReplicasGTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas
 | 
					// WaitForDeploymentUpdatedReplicasGTE waits for given deployment to be observed by the controller and has at least a number of updatedReplicas
 | 
				
			||||||
func WaitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int32, desiredGeneration int64, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentName string, minUpdatedReplicas int32, desiredGeneration int64, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	var deployment *extensions.Deployment
 | 
						var deployment *apps.Deployment
 | 
				
			||||||
	err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						err := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		d, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							d, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -319,10 +319,10 @@ func WaitForDeploymentUpdatedReplicasGTE(c clientset.Interface, ns, deploymentNa
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType extensions.DeploymentConditionType, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
					func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, reason string, condType apps.DeploymentConditionType, logf LogfFn, pollInterval, pollTimeout time.Duration) error {
 | 
				
			||||||
	var deployment *extensions.Deployment
 | 
						var deployment *apps.Deployment
 | 
				
			||||||
	pollErr := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
						pollErr := wait.PollImmediate(pollInterval, pollTimeout, func() (bool, error) {
 | 
				
			||||||
		d, err := c.ExtensionsV1beta1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
							d, err := c.AppsV1().Deployments(ns).Get(deploymentName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			return false, err
 | 
								return false, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -332,7 +332,7 @@ func WaitForDeploymentWithCondition(c clientset.Interface, ns, deploymentName, r
 | 
				
			|||||||
	})
 | 
						})
 | 
				
			||||||
	if pollErr == wait.ErrWaitTimeout {
 | 
						if pollErr == wait.ErrWaitTimeout {
 | 
				
			||||||
		pollErr = fmt.Errorf("deployment %q never updated with the desired condition and reason, latest deployment conditions: %+v", deployment.Name, deployment.Status.Conditions)
 | 
							pollErr = fmt.Errorf("deployment %q never updated with the desired condition and reason, latest deployment conditions: %+v", deployment.Name, deployment.Status.Conditions)
 | 
				
			||||||
		_, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(deployment, c.ExtensionsV1beta1())
 | 
							_, allOldRSs, newRS, err := deploymentutil.GetAllReplicaSets(deployment, c.AppsV1())
 | 
				
			||||||
		if err == nil {
 | 
							if err == nil {
 | 
				
			||||||
			LogReplicaSetsOfDeployment(deployment, allOldRSs, newRS, logf)
 | 
								LogReplicaSetsOfDeployment(deployment, allOldRSs, newRS, logf)
 | 
				
			||||||
			LogPodsOfDeployment(c, deployment, append(allOldRSs, newRS), logf)
 | 
								LogPodsOfDeployment(c, deployment, append(allOldRSs, newRS), logf)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user