def resume(self): self.manager.prepare() logger.info("Starting a %s job" % (self.jobtype)) self.planner = JobPlanner(self.manager.config_file) self.tasks = self.manager.plan_jobs(self.planner) logger.info("Found %d tasks to execute" % (len(self.tasks))) numnodes, self.allocatedtasks = self.planner.distribute_jobs_over_nodes( self.tasks, {}, self.nodes, self.parallellism) if len(self.allocatedtasks) == 0: logger.error("No nodes found to distribute the tasks.") self.job_status = "waiting" return if self.manager.all_hands_on_deck(): if len(self.allocatedtasks) != len(self.tasks): raise RemapException( "Not enough cores available. Have %d, need %d." % (len(self.allocatedtasks), len(self.tasks))) logger.info("%d new tasks distributed over %d nodes." % (len(self.allocatedtasks), numnodes)) self.job_status = "executing" self.outbound_work(self.allocatedtasks)