def start_task( self, wid: str, tool: Tool, task_path: str, environment: Environment, hints: Dict[str, str], validation_requirements: Optional[ValidationRequirements], batchrun_requirements: Optional[BatchRunRequirements], inputs_dict: dict = None, dryrun=False, watch=True, max_cores=None, max_memory=None, keep_intermediate_files=False, run_in_background=True, dbconfig=None, allow_empty_container=False, container_override: dict = None, check_files=True, ) -> WorkflowManager: return WorkflowManager.from_janis( wid, tool=tool, outdir=task_path, environment=environment, hints=hints, inputs_dict=inputs_dict, validation_requirements=validation_requirements, batchrun_requirements=batchrun_requirements, dryrun=dryrun, watch=watch, max_cores=max_cores, max_memory=max_memory, keep_intermediate_files=keep_intermediate_files, run_in_background=run_in_background, dbconfig=dbconfig, allow_empty_container=allow_empty_container, container_override=container_override, check_files=check_files, )
def run_from_jobfile( workflow: Union[str, j.Tool, Type[j.Tool]], jobfile: PreparedJob, engine: Union[str, Engine, None] = None, wait: bool = False, # specific engine args cromwell_jar: Optional[str] = None, cromwell_url: Optional[str] = None, ): cm = ConfigManager(db_path=jobfile.db_path) if not workflow: raise Exception("Couldn't find workflow with name: " + str(workflow)) row = cm.create_task_base( wf=workflow, job=jobfile, ) jobfile.execution_dir = row.execution_dir jobfile.output_dir = row.output_dir # set logger for submit Logger.set_write_level(Logger.CONSOLE_LEVEL) logpath = os.path.join( WorkflowManager.get_path_for_component_and_dir( row.execution_dir, WorkflowManager.WorkflowManagerPath.logs), "janis-submit.log", ) Logger.WRITE_LEVELS = {Logger.CONSOLE_LEVEL: (logpath, open(logpath, "a"))} Logger.debug(f"Set submission logging to '{logpath}'") print(row.submission_id, file=sys.stdout) eng = get_engine_from_eng( engine or jobfile.engine, wid=row.submission_id, execdir=WorkflowManager.get_path_for_component_and_dir( row.execution_dir, WorkflowManager.WorkflowManagerPath.execution), confdir=WorkflowManager.get_path_for_component_and_dir( row.execution_dir, WorkflowManager.WorkflowManagerPath.configuration), logfile=os.path.join( WorkflowManager.get_path_for_component_and_dir( row.execution_dir, WorkflowManager.WorkflowManagerPath.logs), "engine.log", ), cromwell_jar=cromwell_jar, cromwell_url=cromwell_url, ) try: wm = WorkflowManager.from_janis( submission_id=row.submission_id, tool=workflow, engine=eng, prepared_submission=jobfile, wait=wait, ) Logger.log("Finished starting task") return wm except KeyboardInterrupt: Logger.info("Exiting...") try: wm.abort() except: pass except Exception as e: # Have to make sure we stop the engine if something happens when creating the task that causes # janis to exit early eng.stop_engine() raise e return wm