code: func DeploymentProgressing(deployment *apps.Deployment, newStatus *apps.DeploymentStatus) bool {
  	oldStatus := deployment.Status
  
  	// Old replicas that need to be scaled down
  	oldStatusOldReplicas := oldStatus.Replicas - oldStatus.UpdatedReplicas
  	newStatusOldReplicas := newStatus.Replicas - newStatus.UpdatedReplicas
  
  	return (newStatus.UpdatedReplicas > oldStatus.UpdatedReplicas) ||
  		(newStatusOldReplicas < oldStatusOldReplicas) ||
  		newStatus.ReadyReplicas > deployment.Status.ReadyReplicas ||
  		newStatus.AvailableReplicas > deployment.Status.AvailableReplicas
  }
docs: // 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,
  // when new pods are scaled up or become ready or available, or old pods are scaled down, then we
  // consider the deployment is progressing.