mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Retry all Update in deployment e2e tests
This commit is contained in:
parent
8bda033ef1
commit
98a1eaf245
@ -484,10 +484,10 @@ func testRolloverDeployment(f *Framework) {
|
|||||||
// If the deployment already finished here, the test would fail. When this happens, increase its minReadySeconds or replicas to prevent it.
|
// If the deployment already finished here, the test would fail. When this happens, increase its minReadySeconds or replicas to prevent it.
|
||||||
Expect(newRS.Spec.Replicas).Should(BeNumerically("<", deploymentReplicas))
|
Expect(newRS.Spec.Replicas).Should(BeNumerically("<", deploymentReplicas))
|
||||||
updatedDeploymentImage := "redis"
|
updatedDeploymentImage := "redis"
|
||||||
newDeployment.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImage
|
_, err = updateDeploymentWithRetries(c, ns, newDeployment.Name, func(update *extensions.Deployment) {
|
||||||
newDeployment.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImage
|
||||||
Logf("updating deployment %s", deploymentName)
|
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||||
_, err = c.Extensions().Deployments(ns).Update(newDeployment)
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, deploymentMinReadySeconds)
|
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, deploymentMinReadySeconds)
|
||||||
@ -524,8 +524,9 @@ func testPausedDeployment(f *Framework) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Update the deployment to run
|
// Update the deployment to run
|
||||||
deployment.Spec.Paused = false
|
deployment, err = updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||||
deployment, err = c.Extensions().Deployments(ns).Update(deployment)
|
update.Spec.Paused = false
|
||||||
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
selector, err := unversioned.LabelSelectorAsSelector(deployment.Spec.Selector)
|
selector, err := unversioned.LabelSelectorAsSelector(deployment.Spec.Selector)
|
||||||
@ -546,9 +547,9 @@ func testPausedDeployment(f *Framework) {
|
|||||||
|
|
||||||
// Pause the deployment and delete the replica set.
|
// Pause the deployment and delete the replica set.
|
||||||
// The paused deployment shouldn't recreate a new one.
|
// The paused deployment shouldn't recreate a new one.
|
||||||
deployment.Spec.Paused = true
|
deployment, err = updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||||
deployment.ResourceVersion = ""
|
update.Spec.Paused = true
|
||||||
deployment, err = c.Extensions().Deployments(ns).Update(deployment)
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
newRS, err := deploymentutil.GetNewReplicaSet(*deployment, c)
|
newRS, err := deploymentutil.GetNewReplicaSet(*deployment, c)
|
||||||
@ -613,10 +614,10 @@ func testRollbackDeployment(f *Framework) {
|
|||||||
// Update the deployment to create redis pods.
|
// Update the deployment to create redis pods.
|
||||||
updatedDeploymentImage := "redis"
|
updatedDeploymentImage := "redis"
|
||||||
updatedDeploymentImageName := "redis"
|
updatedDeploymentImageName := "redis"
|
||||||
d.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
_, err = updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||||
d.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
||||||
Logf("updating deployment %s", deploymentName)
|
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||||
_, err = c.Extensions().Deployments(ns).Update(d)
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, 0)
|
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, 0)
|
||||||
@ -731,10 +732,10 @@ func testRollbackDeploymentRSNoRevision(f *Framework) {
|
|||||||
// Update the deployment to create redis pods.
|
// Update the deployment to create redis pods.
|
||||||
updatedDeploymentImage := "redis"
|
updatedDeploymentImage := "redis"
|
||||||
updatedDeploymentImageName := "redis"
|
updatedDeploymentImageName := "redis"
|
||||||
d.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
_, err = updateDeploymentWithRetries(c, ns, d.Name, func(update *extensions.Deployment) {
|
||||||
d.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
update.Spec.Template.Spec.Containers[0].Name = updatedDeploymentImageName
|
||||||
Logf("updating deployment %s", deploymentName)
|
update.Spec.Template.Spec.Containers[0].Image = updatedDeploymentImage
|
||||||
_, err = c.Extensions().Deployments(ns).Update(d)
|
})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, 0)
|
err = waitForDeploymentStatus(c, ns, deploymentName, deploymentReplicas, deploymentReplicas-1, deploymentReplicas+1, 0)
|
||||||
|
@ -2204,6 +2204,25 @@ func waitForPartialEvents(c *client.Client, ns string, objOrRef runtime.Object,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type updateDeploymentFunc func(d *extensions.Deployment)
|
||||||
|
|
||||||
|
func updateDeploymentWithRetries(c *clientset.Clientset, namespace, name string, applyUpdate updateDeploymentFunc) (deployment *extensions.Deployment, err error) {
|
||||||
|
deployments := c.Extensions().Deployments(namespace)
|
||||||
|
err = wait.Poll(10*time.Millisecond, 1*time.Minute, func() (bool, error) {
|
||||||
|
if deployment, err = deployments.Get(name); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
// Apply the update, then attempt to push it to the apiserver.
|
||||||
|
applyUpdate(deployment)
|
||||||
|
if deployment, err = deployments.Update(deployment); err == nil {
|
||||||
|
Logf("updating deployment %s", name)
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
})
|
||||||
|
return deployment, err
|
||||||
|
}
|
||||||
|
|
||||||
// FailedContainers inspects all containers in a pod and returns failure
|
// FailedContainers inspects all containers in a pod and returns failure
|
||||||
// information for containers that have failed or been restarted.
|
// information for containers that have failed or been restarted.
|
||||||
// A map is returned where the key is the containerID and the value is a
|
// A map is returned where the key is the containerID and the value is a
|
||||||
|
Loading…
Reference in New Issue
Block a user