Source code for strucscan.error.errormanager

from strucscan.engine.vasp import Vasp
from strucscan.error.errorhandler import *


[docs]def determine_status__job_id(calc, jobpath, job_list): """ - checks job ib jobpath on any errors - if the job has been restarted more than 3 times, the job status is set to (1, 'error') which leads the JobManager to count the job as finished, i.e. to stop monitoring it - if the job has been restarted less than 3 times, the engine specific errorhandler is called Legend - 0 : does not exist - 0 : queued - 0 : error - 1 : error - 1 : finished :param calc: (strucscan.engine.generalengine.GeneralEngine object) calculator object :param jobpath: (str) absolute path to job directory :param job_list: (list) list of all JobObjects :return: (int, str, str) tuple of job status index (int), status (str) and job id (str). On queuing systems, job_id equals queue id, on systems without queue, job_id equals process id """ index = None job_id = None nrestarts = 0 jobobject = None status_index, status = (1, "error") for ind, _jobobject in enumerate(job_list): _jobpath = _jobobject.get_jobpath() _job_id = _jobobject.get_job_id() _nrestarts = _jobobject.get_nrestarts() if jobpath == _jobpath: index = ind job_id = _job_id nrestarts = _nrestarts jobobject = _jobobject if jobobject is None: pass else: nrestarts += 1 if nrestarts > 3: pass else: jobobject.set_nrestarts(nrestarts) job_list[index] = jobobject if isinstance(calc, Vasp): status_index, status, job_id = VaspErrorManager(calc, jobpath, job_id).return_status__job_id() # here you can add ErrorManagers for further engines return status_index, status, job_id, nrestarts