use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.
the class SlurmProxy method getJobStatus.
@Override
public Map<HtcJobID, JobInfoAndStatus> getJobStatus(List<HtcJobID> htcJobIDs) throws ExecutableException, IOException {
ArrayList<String> jobNumbers = new ArrayList<String>();
for (HtcJobID job : htcJobIDs) {
jobNumbers.add(Long.toString(job.getJobNumber()));
}
String jobList = String.join(",", jobNumbers);
String[] cmds = { Slurm_HOME + JOB_CMD_STATUS, "-u", "vcell", "-P", "-j", jobList, "-o", "jobid%25,jobname%25,partition,user,alloccpus,ncpus,ntasks,state%13,exitcode" };
CommandOutput commandOutput = commandService.command(cmds);
String output = commandOutput.getStandardOutput();
Map<HtcJobID, JobInfoAndStatus> statusMap = extractJobIds(output);
return statusMap;
}
use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.
the class SlurmProxy method submitJobFile.
HtcJobID submitJobFile(File sub_file_external) throws ExecutableException {
final String JOB_CMD_SBATCH = PropertyLoader.getProperty(PropertyLoader.slurm_cmd_sbatch, "sbatch");
String[] completeCommand = new String[] { JOB_CMD_SBATCH, sub_file_external.getAbsolutePath() };
if (LG.isDebugEnabled()) {
LG.debug("submitting SLURM job: '" + CommandOutput.concatCommandStrings(completeCommand) + "'");
}
CommandOutput commandOutput = commandService.command(completeCommand);
String jobid = commandOutput.getStandardOutput().trim();
final String EXPECTED_STDOUT_PREFIX = "Submitted batch job ";
if (jobid.startsWith(EXPECTED_STDOUT_PREFIX)) {
jobid = jobid.replace(EXPECTED_STDOUT_PREFIX, "");
} else {
LG.error("failed to submit SLURM job '" + sub_file_external + "', stdout='" + commandOutput.getStandardOutput() + "', stderr='" + commandOutput.getStandardError() + "'");
throw new ExecutableException("unexpected response from '" + JOB_CMD_SBATCH + "' while submitting simulation: '" + jobid + "'");
}
HtcJobID htcJobID = new HtcJobID(jobid, BatchSystemType.SLURM);
if (LG.isDebugEnabled()) {
LG.debug("SLURM job '" + CommandOutput.concatCommandStrings(completeCommand) + "' started as htcJobId '" + htcJobID + "'");
}
return htcJobID;
}
use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.
the class SlurmProxy method killJobSafe.
@Override
public void killJobSafe(HtcJobInfo htcJobInfo) throws ExecutableException, HtcException {
final String JOB_CMD_DELETE = PropertyLoader.getProperty(PropertyLoader.slurm_cmd_scancel, "scancel");
String[] cmd = new String[] { JOB_CMD_DELETE, "--jobname", htcJobInfo.getJobName(), Long.toString(htcJobInfo.getHtcJobID().getJobNumber()) };
try {
// CommandOutput commandOutput = commandService.command(cmd, new int[] { 0, QDEL_JOB_NOT_FOUND_RETURN_CODE });
if (LG.isDebugEnabled()) {
LG.debug("killing SLURM job htcJobId=" + htcJobInfo + ": '" + CommandOutput.concatCommandStrings(cmd) + "'");
}
CommandOutput commandOutput = commandService.command(cmd, new int[] { 0, SCANCEL_JOB_NOT_FOUND_RETURN_CODE });
Integer exitStatus = commandOutput.getExitStatus();
String standardOut = commandOutput.getStandardOutput();
if (exitStatus != null && exitStatus.intValue() == SCANCEL_JOB_NOT_FOUND_RETURN_CODE && standardOut != null && standardOut.toLowerCase().contains(SCANCEL_UNKNOWN_JOB_RESPONSE.toLowerCase())) {
LG.error("failed to cancel SLURM htcJobId=" + htcJobInfo + ", job not found");
throw new HtcJobNotFoundException(standardOut, htcJobInfo);
}
} catch (ExecutableException e) {
LG.error("failed to cancel SLURM htcJobId=" + htcJobInfo, e);
if (!e.getMessage().toLowerCase().contains(SCANCEL_UNKNOWN_JOB_RESPONSE.toLowerCase())) {
throw e;
} else {
throw new HtcJobNotFoundException(e.getMessage(), htcJobInfo);
}
}
}
use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.
the class CommandServiceSshNativeTest method test.
@Test
public void test() throws IOException, ExecutableException {
CommandServiceSshNative cmd = null;
try {
cmd = new CommandServiceSshNative(new String[] { "vcell-service.cam.uchc.edu" }, "vcell", new File("/Users/schaff/.ssh/schaff_rsa"));
System.out.println("after created cmdService");
CommandOutput output = cmd.command(new String[] { "ls -al | head -4" });
System.out.println("ls output is: " + output.getStandardOutput());
output = cmd.command(new String[] { "ls -al | head -9" });
System.out.println("ls output is: " + output.getStandardOutput());
output = cmd.command(new String[] { "ls -al | head -4" });
System.out.println("ls output is: " + output.getStandardOutput());
} catch (Exception e) {
e.printStackTrace();
fail("exception thrown: " + e.getMessage());
} finally {
if (cmd != null) {
cmd.close();
}
}
}
use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.
the class CommandServiceSsh_sshjTest method test.
@Test
public void test() throws IOException, ExecutableException {
CommandServiceSsh_sshj cmd = null;
try {
cmd = new CommandServiceSsh_sshj("vcell-service.cam.uchc.edu", "vcell", new File("/Users/schaff/.ssh/schaff_rsa"));
System.out.println("after created cmdService");
CommandOutput output = cmd.command(new String[] { "ls -al | head -4" });
System.out.println("ls output is: " + output.getStandardOutput());
output = cmd.command(new String[] { "ls -al | head -9" });
System.out.println("ls output is: " + output.getStandardOutput());
output = cmd.command(new String[] { "ls -al | head -4" });
System.out.println("ls output is: " + output.getStandardOutput());
} catch (Exception e) {
e.printStackTrace();
fail("exception thrown: " + e.getMessage());
} finally {
if (cmd != null) {
cmd.close();
}
}
}
Aggregations