From 847c82c8f9bc59d8269dd4b2923de5dd3c53d004 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Fri, 25 Mar 2016 06:24:15 +0000 Subject: [PATCH] Task #8437: Parse job id returned by sbatch correctly --- MAC/Services/src/PipelineControl.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/MAC/Services/src/PipelineControl.py b/MAC/Services/src/PipelineControl.py index 930181c8a80..06dc9ee314b 100755 --- a/MAC/Services/src/PipelineControl.py +++ b/MAC/Services/src/PipelineControl.py @@ -70,6 +70,7 @@ from lofar.messaging.RPC import RPC, RPCTimeoutException import subprocess import datetime import os +import re import logging logger = logging.getLogger(__name__) @@ -139,11 +140,18 @@ class Slurm(object): cmdline = "ssh %s %s" % (self.headnode, cmdline) runCommand(cmdline) - def schedule(self, jobName, cmdline, sbatch_params=None): + def submit(self, jobName, cmdline, sbatch_params=None): if sbatch_params is None: sbatch_params = [] - self._runCommand("sbatch --job-name=%s %s bash -c '%s'" % (jobName, " ".join(sbatch_params), cmdline)) + stdout = self._runCommand("sbatch --job-name=%s %s bash -c '%s'" % (jobName, " ".join(sbatch_params), cmdline)) + + # Returns "Submitted batch job 3" -- extract ID + match = re.search("Submitted batch job (\d+)", stdout) + if not match: + return None + + return match.group(1) def cancel(self, jobName): stdout = self._runCommand("scancel --jobname %s" % (jobName,)) @@ -324,7 +332,7 @@ class PipelineControl(OTDBBusListener): # Schedule runPipeline.sh logger.info("Scheduling SLURM job for runPipeline.sh") - slurm_job_id = self.slurm.schedule(parset.slurmJobName(), + slurm_job_id = self.slurm.submit(parset.slurmJobName(), "docker run --rm" " --net=host" @@ -347,7 +355,7 @@ class PipelineControl(OTDBBusListener): # Schedule pipelineAborted.sh logger.info("Scheduling SLURM job for pipelineAborted.sh") - slurm_cancel_job_id = self.slurm.schedule("%s-aborted" % parset.slurmJobName(), + slurm_cancel_job_id = self.slurm.submit("%s-aborted" % parset.slurmJobName(), "docker run --rm" " --net=host" -- GitLab