示例#1
0
	def _run_task_once(self, task):
		if task.result != None and task.result.status != TaskResult.PENDING:
			return

		task.job = self.jobresult.job
		task.result = self.jobresult.get_task(str(task.__class__), True)
		task.result.stage = task.stage
		task.dependencies_resolved = True

		for dependency in task.dependencies:
			depresolved = False

			for deptask in JobDispatcher.tasks:
				if not dependency in deptask.provides:
					continue

				self._run_task_once(deptask)

				if deptask.result.status == TaskResult.PASSED:
					depresolved = True

			if not depresolved:
				task.dependencies_resolved = False

		print "Running task '%s' (type %s)" % \
			(task.description, task.__class__)

		cwd = os.getcwd()
		Utility.rearm_watchdog(1800)
		task._run()
		Utility.rearm_watchdog(0)
		os.chdir(cwd)

		print "Task result: %s" % (task.result.status)

		JobSession.object_session(self.jobresult).commit()