예제 #1
0
파일: initiator.py 프로젝트: lmhtz/remap
    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)