Source code for NEDAS.job_submitters.gricad

import subprocess
from NEDAS.job_submitters.oar import OARJobSubmitter

[docs] class GricadJobSubmitter(OARJobSubmitter): """ Job submitter configured specifically for Gricad machines """ def __init__(self, **kwargs): super().__init__(**kwargs) # host specific settings p = subprocess.run("hostname", capture_output=True, text=True) if p.stdout.replace('\n', '').replace(' ', '') in ['dahu-oar3', 'f-dahu']: self.job_submit_node = None # don't need ssh for oarsub on compute nodes else: # job submit node based on queue type if self.queue == 'devel': self.job_submit_node = 'dahu-oar3' else: self.job_submit_node = 'f-dahu'
[docs] def job_submit_cmd(self): if self.job_submit_node: return ['ssh', self.job_submit_node, f"oarsub -S {self.job_script}"] else: return ["oarsub", "-S", f"{self.job_script}"]
[docs] def check_job_status(self): assert self.job_submit_node is not None if self.use_job_array: cmd = f'oarstat -f --array {self.job_id} | grep "state = "' else: cmd = f'oarstat -f --job {self.job_id} | grep "state = "' p = subprocess.run(['ssh', self.job_submit_node, cmd], capture_output=True, text=True) return p