def _request_resource_removal(self): with session_scope() as session: now = time.time() qres = QResources(session, pool=self.name) for res in qres.check_failure_candidates(): if res.check_failed_count >= 3: app.log.debug("Removing %s, continuous failures", res.name) res.state = RState.DELETE_REQUEST continue for res in qres.clean_candidates(): if not self.reuse_opportunity_time: # reuse turned off by default, remove no matter what app.log.debug("Removing %s, not reusable", res.name) res.state = RState.DELETE_REQUEST continue if res.released_at < (now - self.reuse_opportunity_time): app.log.debug("Removing %s, not taken quickly enough", res.name) res.state = RState.DELETE_REQUEST continue if self.reuse_max_time: last_allowed = now - self.reuse_max_time if res.sandboxed_since < last_allowed: app.log.debug( "Removing %s, too long in one sandbox, " "since %s, last_allowed %s, now %s", res.name, res.sandboxed_since, last_allowed, now) res.state = RState.DELETE_REQUEST continue if self.reuse_max_count and \ res.releases_counter > self.reuse_max_count: app.log.debug("Removing %s, max reuses reached", res.name) res.state = RState.DELETE_REQUEST continue
def _detect_closed_tickets(self): with session_scope() as session: qres = QResources(session, pool=self.name) for res in qres.clean_candidates().all(): res.state = RState.DELETE_REQUEST session.add(res)