private IEnumerable<DeployResult> GetPurgeObsoleteDeployments(IEnumerable<DeployResult> results)
{
var toDelete = new List<DeployResult>();
// limit number of ever-success items
// the assumption is user will no longer be interested on these items
var succeed = results.Where(r => r.LastSuccessEndTime != null);
if (succeed.Count() > MaxSuccessDeploymentResults)
{
// always maintain active and inprogress item
var activeId = _status.ActiveDeploymentId;
var purge = succeed.Skip(MaxSuccessDeploymentResults).Where(r =>
r.Id != activeId && (r.Status == DeployStatus.Failed || r.Status == DeployStatus.Success));
toDelete.AddRange(purge);
}
return toDelete;
}