internal IEnumerable<DeployResult> PurgeDeployments(IEnumerable<DeployResult> results)
{
if (results.Any())
{
var toDelete = new List<DeployResult>();
toDelete.AddRange(GetPurgeTemporaryDeployments(results));
toDelete.AddRange(GetPurgeFailedDeployments(results));
toDelete.AddRange(this.GetPurgeObsoleteDeployments(results));
if (toDelete.Any())
{
var tracer = _traceFactory.GetTracer();
using (tracer.Step("Purge deployment items"))
{
foreach (DeployResult delete in toDelete)
{
_status.Delete(delete.Id);
tracer.Trace("Remove {0}, {1}, received at {2}",
delete.Id.Substring(0, Math.Min(delete.Id.Length, 9)),
delete.Status,
delete.ReceivedTime);
}
}
results = results.Where(r => !toDelete.Any(i => i.Id == r.Id));
}
}
return results;
}