Merge pull request #46169 from kargakis/progress-when-ready

Automatic merge from submit-queue (batch tested with PRs 45864, 46169)

Account newly ready replicas as progress

@kubernetes/sig-apps-pr-reviews
This commit is contained in:
Kubernetes Submit Queue 2017-05-22 08:08:56 -07:00 committed by GitHub
commit 574608d2e9
2 changed files with 39 additions and 26 deletions

View File

@ -841,8 +841,8 @@ func DeploymentComplete(deployment *extensions.Deployment, newStatus *extensions
// DeploymentProgressing reports progress for a deployment. Progress is estimated by comparing the // DeploymentProgressing reports progress for a deployment. Progress is estimated by comparing the
// current with the new status of the deployment that the controller is observing. More specifically, // current with the new status of the deployment that the controller is observing. More specifically,
// when new pods are scaled up or become available, or old pods are scaled down, then we consider the // when new pods are scaled up or become ready or available, or old pods are scaled down, then we
// deployment is progressing. // consider the deployment is progressing.
func DeploymentProgressing(deployment *extensions.Deployment, newStatus *extensions.DeploymentStatus) bool { func DeploymentProgressing(deployment *extensions.Deployment, newStatus *extensions.DeploymentStatus) bool {
oldStatus := deployment.Status oldStatus := deployment.Status
@ -852,6 +852,7 @@ func DeploymentProgressing(deployment *extensions.Deployment, newStatus *extensi
return (newStatus.UpdatedReplicas > oldStatus.UpdatedReplicas) || return (newStatus.UpdatedReplicas > oldStatus.UpdatedReplicas) ||
(newStatusOldReplicas < oldStatusOldReplicas) || (newStatusOldReplicas < oldStatusOldReplicas) ||
newStatus.ReadyReplicas > deployment.Status.ReadyReplicas ||
newStatus.AvailableReplicas > deployment.Status.AvailableReplicas newStatus.AvailableReplicas > deployment.Status.AvailableReplicas
} }

View File

@ -1002,18 +1002,22 @@ func TestDeploymentComplete(t *testing.T) {
} }
func TestDeploymentProgressing(t *testing.T) { func TestDeploymentProgressing(t *testing.T) {
deployment := func(current, updated int32) *extensions.Deployment { deployment := func(current, updated, ready, available int32) *extensions.Deployment {
return &extensions.Deployment{ return &extensions.Deployment{
Status: extensions.DeploymentStatus{ Status: extensions.DeploymentStatus{
Replicas: current, Replicas: current,
UpdatedReplicas: updated, UpdatedReplicas: updated,
ReadyReplicas: ready,
AvailableReplicas: available,
}, },
} }
} }
newStatus := func(current, updated int32) extensions.DeploymentStatus { newStatus := func(current, updated, ready, available int32) extensions.DeploymentStatus {
return extensions.DeploymentStatus{ return extensions.DeploymentStatus{
Replicas: current, Replicas: current,
UpdatedReplicas: updated, UpdatedReplicas: updated,
ReadyReplicas: ready,
AvailableReplicas: available,
} }
} }
@ -1026,52 +1030,60 @@ func TestDeploymentProgressing(t *testing.T) {
expected bool expected bool
}{ }{
{ {
name: "progressing", name: "progressing: updated pods",
d: deployment(10, 4), d: deployment(10, 4, 4, 4),
newStatus: newStatus(10, 6), newStatus: newStatus(10, 6, 4, 4),
expected: true, expected: true,
}, },
{ {
name: "not progressing", name: "not progressing",
d: deployment(10, 4), d: deployment(10, 4, 4, 4),
newStatus: newStatus(10, 4), newStatus: newStatus(10, 4, 4, 4),
expected: false, expected: false,
}, },
{ {
name: "progressing #2", name: "progressing: old pods removed",
d: deployment(10, 4), d: deployment(10, 4, 6, 6),
newStatus: newStatus(8, 4), newStatus: newStatus(8, 4, 6, 6),
expected: true, expected: true,
}, },
{ {
name: "not progressing #2", name: "not progressing: less new pods",
d: deployment(10, 7), d: deployment(10, 7, 3, 3),
newStatus: newStatus(10, 6), newStatus: newStatus(10, 6, 3, 3),
expected: false, expected: false,
}, },
{ {
name: "progressing #3", name: "progressing: less overall but more new pods",
d: deployment(10, 4), d: deployment(10, 4, 7, 7),
newStatus: newStatus(8, 8), newStatus: newStatus(8, 8, 5, 5),
expected: true, expected: true,
}, },
{ {
name: "not progressing #2", name: "progressing: more ready pods",
d: deployment(10, 7), d: deployment(10, 10, 9, 8),
newStatus: newStatus(10, 7), newStatus: newStatus(10, 10, 10, 8),
expected: false, expected: true,
},
{
name: "progressing: more available pods",
d: deployment(10, 10, 10, 9),
newStatus: newStatus(10, 10, 10, 10),
expected: true,
}, },
} }