self.jm = dmd.JobManager self.log = log self.clean_older_than_days = 95 def __call__(self): now = datetime.datetime.now() delta = datetime.timedelta(self.clean_older_than_days) x_days_ago = now - delta jobs_to_go = [job.id for job in self.jm.getAllJobs() if job.finished and job.finished < x_days_ago] if jobs_to_go: self.log.info('Deleting %s Jobs', len(jobs_to_go)) self.deleteOldJobs(jobs_to_go) return self.log.info('No maintenance windows needed to be removed') @transact def deleteOldJobs(self, jobs): self.log.info('Removing %d jobs', len(jobs)) map(self.jm.deleteJob, jobs) if __name__ == "__main__": jccmd = ZenScriptBase(connect=True) jccmd.setupLogging() jccmd.log.info('OldJobsClaner Cleanup Script running') JOB_CLEANER = OldJobsCleaner(jccmd.dmd, jccmd.log) JOB_CLEANER() jccmd.log.info('Old Job Cleaner completed sucessfully')
work = [(mw.nextEvent(now), mw) for mw in workList] work.sort() # note that None is less than any number of seconds while len(work): t, mw = work[0] if t: break if mw.enabled: old_windows.append(mw) self.log.info("Never going to run Maintenance " "Window %s for %s again, adding to list for removal", mw.getId(), mw.target().getId()) work.pop(0) return old_windows @transact def removeOldWindows(self, windows): self.log.info('Removing %d Windows Now' % len(windows)) for win in windows: winId = win.id parent = win.productionState() parent.manage_deleteMaintenanceWindow(maintenanceIds=(winId)) if __name__ == "__main__": mwcmd = ZenScriptBase(connect=True) mwcmd.setupLogging() mwcmd.log.info('Starting Maintenance mode Cleaning Script') MWC = MaintWindowCleaner(mwcmd.dmd, mwcmd.log) MWC() mwcmd.log.info('Maintenance Mode Cleaner completed sucessfully')