Beispiel #1
0
        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());
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
 public async Task <JanitorReport[]> CleanupUnpublishedWorkspaces(JanitorOptions options)
 {
     return(await CleanupWorkspaces(
                "UnpublishedWorkspace",
                options.UnpublishedWorkspaceTimeout,
                false,
                options.DryRun
                ));
 }
Beispiel #4
0
 public async Task <JanitorReport[]> CleanupInactiveWorkspaces(JanitorOptions options)
 {
     return(await CleanupWorkspaces(
                "InactiveWorkspace",
                options.InactiveWorkspaceExpiration,
                true,
                options.DryRun
                ));
 }
Beispiel #5
0
        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)));
 }
Beispiel #7
0
 public async Task <ActionResult <JanitorReport[]> > Cleanup([FromBody] JanitorOptions options = null)
 {
     return(Ok(await _janitor.Cleanup(options)));
 }