Merge pull request #21152 from kargakis/fix-cleanup-policy

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2016-02-13 03:47:33 -08:00
commit 524aaa2f7f
3 changed files with 23 additions and 32 deletions

View File

@ -432,6 +432,17 @@ func FilterActivePods(pods []api.Pod) []*api.Pod {
return result
}
// FilterActiveReplicaSets returns replica sets that have (or at least ought to have) pods.
func FilterActiveReplicaSets(replicaSets []*extensions.ReplicaSet) []*extensions.ReplicaSet {
active := []*extensions.ReplicaSet{}
for i := range replicaSets {
if replicaSets[i].Spec.Replicas > 0 {
active = append(active, replicaSets[i])
}
}
return active
}
// ControllersByCreationTimestamp sorts a list of ReplicationControllers by creation timestamp, using their names as a tie breaker.
type ControllersByCreationTimestamp []*api.ReplicationController

View File

@ -441,7 +441,7 @@ func (dc *DeploymentController) syncDeployment(key string) error {
// Rolling back to a revision; no-op if the toRevision is deployment's current revision
func (dc *DeploymentController) rollback(deployment *extensions.Deployment, toRevision *int64) (*extensions.Deployment, error) {
newRS, allOldRSs, err := dc.getNewAndAllOldReplicaSets(*deployment)
newRS, allOldRSs, err := dc.getAllReplicaSets(*deployment)
if err != nil {
return nil, err
}
@ -493,14 +493,14 @@ func (dc *DeploymentController) updateDeploymentAndClearRollbackTo(deployment *e
}
func (dc *DeploymentController) syncRecreateDeployment(deployment extensions.Deployment) error {
newRS, oldRSs, err := dc.getNewAndOldReplicaSets(deployment)
newRS, oldRSs, err := dc.getAllReplicaSets(deployment)
if err != nil {
return err
}
allRSs := append(oldRSs, newRS)
allRSs := append(controller.FilterActiveReplicaSets(oldRSs), newRS)
// scale down old replica sets
scaledDown, err := dc.scaleDownOldReplicaSetsForRecreate(oldRSs, deployment)
scaledDown, err := dc.scaleDownOldReplicaSetsForRecreate(controller.FilterActiveReplicaSets(oldRSs), deployment)
if err != nil {
return err
}
@ -526,16 +526,14 @@ func (dc *DeploymentController) syncRecreateDeployment(deployment extensions.Dep
// Sync deployment status
return dc.syncDeploymentStatus(allRSs, newRS, deployment)
// TODO: raise an event, neither scaled up nor down.
}
func (dc *DeploymentController) syncRollingUpdateDeployment(deployment extensions.Deployment) error {
newRS, oldRSs, err := dc.getNewAndOldReplicaSets(deployment)
newRS, oldRSs, err := dc.getAllReplicaSets(deployment)
if err != nil {
return err
}
allRSs := append(oldRSs, newRS)
allRSs := append(controller.FilterActiveReplicaSets(oldRSs), newRS)
// Scale up, if we can.
scaledUp, err := dc.reconcileNewReplicaSet(allRSs, newRS, deployment)
@ -548,7 +546,7 @@ func (dc *DeploymentController) syncRollingUpdateDeployment(deployment extension
}
// Scale down, if we can.
scaledDown, err := dc.reconcileOldReplicaSets(allRSs, oldRSs, newRS, deployment, true)
scaledDown, err := dc.reconcileOldReplicaSets(allRSs, controller.FilterActiveReplicaSets(oldRSs), newRS, deployment, true)
if err != nil {
return err
}
@ -564,8 +562,6 @@ func (dc *DeploymentController) syncRollingUpdateDeployment(deployment extension
// Sync deployment status
return dc.syncDeploymentStatus(allRSs, newRS, deployment)
// TODO: raise an event, neither scaled up nor down.
}
// syncDeploymentStatus checks if the status is up-to-date and sync it if necessary
@ -580,10 +576,9 @@ func (dc *DeploymentController) syncDeploymentStatus(allRSs []*extensions.Replic
return nil
}
// getNewAndMaybeFilteredOldReplicaSets returns new replica set and old replica sets of the deployment. If ignoreNoPod is true,
// the returned old replica sets won't include the ones with no pods; otherwise, all old replica sets will be returned.
func (dc *DeploymentController) getNewAndMaybeFilteredOldReplicaSets(deployment extensions.Deployment, ignoreNoPod bool) (*extensions.ReplicaSet, []*extensions.ReplicaSet, error) {
oldRSs, allOldRSs, err := dc.getOldReplicaSets(deployment)
// getAllReplicaSets returns all the replica sets for the provided deployment (new and all old).
func (dc *DeploymentController) getAllReplicaSets(deployment extensions.Deployment) (*extensions.ReplicaSet, []*extensions.ReplicaSet, error) {
_, allOldRSs, err := dc.getOldReplicaSets(deployment)
if err != nil {
return nil, nil, err
}
@ -604,22 +599,7 @@ func (dc *DeploymentController) getNewAndMaybeFilteredOldReplicaSets(deployment
}
}
if !ignoreNoPod {
return newRS, allOldRSs, nil
}
return newRS, oldRSs, nil
}
// getNewAndOldReplicaSets returns new replica set and old replica sets of the deployment.
// Note that the returned old replica sets don't include the ones with no pods.
func (dc *DeploymentController) getNewAndOldReplicaSets(deployment extensions.Deployment) (*extensions.ReplicaSet, []*extensions.ReplicaSet, error) {
return dc.getNewAndMaybeFilteredOldReplicaSets(deployment, true)
}
// getNewAndAllOldReplicaSets returns new replica set and old replica sets of the deployment.
// Note that all old replica sets are returned, include the ones with no pods.
func (dc *DeploymentController) getNewAndAllOldReplicaSets(deployment extensions.Deployment) (*extensions.ReplicaSet, []*extensions.ReplicaSet, error) {
return dc.getNewAndMaybeFilteredOldReplicaSets(deployment, false)
return newRS, allOldRSs, nil
}
func maxRevision(allRSs []*extensions.ReplicaSet) int64 {

View File

@ -2117,7 +2117,7 @@ func waitForDeploymentOldRSsNum(c *clientset.Clientset, ns, deploymentName strin
if err != nil {
return false, err
}
oldRSs, _, err := deploymentutil.GetOldReplicaSets(*deployment, c)
_, oldRSs, err := deploymentutil.GetOldReplicaSets(*deployment, c)
if err != nil {
return false, err
}