public async Task <JanitorReport[]> CleanupIdleGamespaces(JanitorOptions options) { var items = new List <JanitorReport>(); var gamespaces = (await _gamespaceStore.DeleteStale( options.IdleGamespaceExpiration.ToDatePast(), options.DryRun )).ToList(); if (!options.DryRun) { await RemoveVms(gamespaces .Select(w => w.GlobalId) .ToArray() ); } return(gamespaces.Select(g => new JanitorReport { Reason = "IdleGamespace", Id = g.Id, Name = g.Name, Age = g.LastActivity }).ToArray()); }
public async Task <JanitorReport[]> CleanupIdleWorkspaceVms(JanitorOptions options) { DateTime staleDate = options.IdleWorkspaceVmsExpiration.ToDatePast(); DateTime activeDate = staleDate.AddSeconds( -options.IdleWorkspaceVmsExpiration.ToSeconds() ); var workspaces = await _workspaceStore.List() .Where(w => w.LastActivity > activeDate && w.LastActivity < staleDate ) .ToArrayAsync(); if (!options.DryRun) { await RemoveVms(workspaces .Select(w => w.GlobalId) .ToArray() ); } return(workspaces.Select(g => new JanitorReport { Reason = "IdleWorkspaceVms", Id = g.Id, Name = g.Name, Age = g.LastActivity }).ToArray()); }
public async Task <JanitorReport[]> CleanupUnpublishedWorkspaces(JanitorOptions options) { return(await CleanupWorkspaces( "UnpublishedWorkspace", options.UnpublishedWorkspaceTimeout, false, options.DryRun )); }
public async Task <JanitorReport[]> CleanupInactiveWorkspaces(JanitorOptions options) { return(await CleanupWorkspaces( "InactiveWorkspace", options.InactiveWorkspaceExpiration, true, options.DryRun )); }
public async Task <JanitorReport[]> Cleanup(JanitorOptions options = null) { var result = new List <JanitorReport>(); var opt = options ?? _options.Expirations; result.AddRange(await CleanupIdleWorkspaceVms(opt)); result.AddRange(await CleanupUnpublishedWorkspaces(opt)); result.AddRange(await CleanupInactiveWorkspaces(opt)); return(result.ToArray()); }
public async Task <ActionResult <JanitorReport[]> > RunJanitorCleanupIdleWorkspaceVms([FromBody] JanitorOptions options = null) { return(Ok(await _janitor.CleanupIdleWorkspaceVms(options))); }
public async Task <ActionResult <JanitorReport[]> > Cleanup([FromBody] JanitorOptions options = null) { return(Ok(await _janitor.Cleanup(options))); }