Search in sources :

Example 6 with CommandOutput

use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.

the class SlurmProxy method submitJob.

@Override
public HtcJobID submitJob(String jobName, String sub_file_internal, String sub_file_external, ExecutableCommand.Container commandSet, int ncpus, double memSize, Collection<PortableCommand> postProcessingCommands) throws ExecutableException {
    try {
        if (LG.isDebugEnabled()) {
            LG.debug("generating local SLURM submit script for jobName=" + jobName);
        }
        String text = generateScript(jobName, commandSet, ncpus, memSize, postProcessingCommands);
        File tempFile = File.createTempFile("tempSubFile", ".sub");
        writeUnixStyleTextFile(tempFile, text);
        // move submission file to final location (either locally or remotely).
        if (LG.isDebugEnabled()) {
            LG.debug("moving local SLURM submit file '" + tempFile.getAbsolutePath() + "' to remote file '" + sub_file_external + "'");
        }
        FileUtils.copyFile(tempFile, new File(sub_file_internal));
        tempFile.delete();
    } catch (IOException ex) {
        ex.printStackTrace(System.out);
        return null;
    }
    /**
     * > sbatch /share/apps/vcell2/deployed/test/htclogs/V_TEST_107643258_0_0.slurm.sub
     * Submitted batch job 5174
     */
    String[] completeCommand = new String[] { Slurm_HOME + JOB_CMD_SUBMIT, sub_file_external };
    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_SUBMIT + "' 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;
}
Also used : ExecutableException(org.vcell.util.exe.ExecutableException) CommandOutput(cbit.vcell.message.server.cmd.CommandService.CommandOutput) IOException(java.io.IOException) HtcJobID(cbit.vcell.server.HtcJobID) File(java.io.File)

Example 7 with CommandOutput

use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.

the class SlurmProxy method killJob.

@Override
public void killJob(HtcJobID htcJobId) throws ExecutableException, HtcException {
    String[] cmd = new String[] { Slurm_HOME + JOB_CMD_DELETE, Long.toString(htcJobId.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=" + htcJobId + ": '" + 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=" + htcJobId + ", job not found");
            throw new HtcJobNotFoundException(standardOut, htcJobId);
        }
    } catch (ExecutableException e) {
        LG.error("failed to cancel SLURM htcJobId=" + htcJobId, e);
        if (!e.getMessage().toLowerCase().contains(SCANCEL_UNKNOWN_JOB_RESPONSE.toLowerCase())) {
            throw e;
        } else {
            throw new HtcJobNotFoundException(e.getMessage(), htcJobId);
        }
    }
}
Also used : ExecutableException(org.vcell.util.exe.ExecutableException) HtcJobNotFoundException(cbit.vcell.message.server.htc.HtcJobNotFoundException) CommandOutput(cbit.vcell.message.server.cmd.CommandService.CommandOutput)

Example 8 with CommandOutput

use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.

the class CommandServiceSshNativeTest method test_install_secret_keyfile.

@Test
public void test_install_secret_keyfile() 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"), new File("/Users/schaff"));
        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();
        }
    }
}
Also used : CommandOutput(cbit.vcell.message.server.cmd.CommandService.CommandOutput) File(java.io.File) IOException(java.io.IOException) ExecutableException(org.vcell.util.exe.ExecutableException) Test(org.junit.Test)

Example 9 with CommandOutput

use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.

the class CommandServiceSsh_sshjTest method testSLURM.

@Test
public void testSLURM() 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[] { "sacctls -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();
        }
    }
}
Also used : CommandOutput(cbit.vcell.message.server.cmd.CommandService.CommandOutput) File(java.io.File) IOException(java.io.IOException) ExecutableException(org.vcell.util.exe.ExecutableException) Test(org.junit.Test)

Example 10 with CommandOutput

use of cbit.vcell.message.server.cmd.CommandService.CommandOutput in project vcell by virtualcell.

the class SlurmProxy method killJobUnsafe.

@Override
public void killJobUnsafe(HtcJobID htcJobId) throws ExecutableException, HtcException {
    final String JOB_CMD_DELETE = PropertyLoader.getProperty(PropertyLoader.slurm_cmd_scancel, "scancel");
    String[] cmd = new String[] { JOB_CMD_DELETE, Long.toString(htcJobId.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=" + htcJobId + ": '" + 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=" + htcJobId + ", job not found");
            throw new HtcJobNotFoundException(standardOut, htcJobId);
        }
    } catch (ExecutableException e) {
        LG.error("failed to cancel SLURM htcJobId=" + htcJobId, e);
        if (!e.getMessage().toLowerCase().contains(SCANCEL_UNKNOWN_JOB_RESPONSE.toLowerCase())) {
            throw e;
        } else {
            throw new HtcJobNotFoundException(e.getMessage(), htcJobId);
        }
    }
}
Also used : ExecutableException(org.vcell.util.exe.ExecutableException) HtcJobNotFoundException(cbit.vcell.message.server.htc.HtcJobNotFoundException) CommandOutput(cbit.vcell.message.server.cmd.CommandService.CommandOutput)

Aggregations

CommandOutput (cbit.vcell.message.server.cmd.CommandService.CommandOutput)16 ExecutableException (org.vcell.util.exe.ExecutableException)11 IOException (java.io.IOException)7 File (java.io.File)6 HtcJobNotFoundException (cbit.vcell.message.server.htc.HtcJobNotFoundException)4 Test (org.junit.Test)4 HtcJobID (cbit.vcell.server.HtcJobID)3 ArrayList (java.util.ArrayList)3 HtcJobStatus (cbit.vcell.message.server.htc.HtcJobStatus)2 StringTokenizer (java.util.StringTokenizer)2 RollbackException (cbit.vcell.message.RollbackException)1 VCMessagingException (cbit.vcell.message.VCMessagingException)1 CommandService (cbit.vcell.message.server.cmd.CommandService)1 CommandServiceLocal (cbit.vcell.message.server.cmd.CommandServiceLocal)1 CommandServiceSshNative (cbit.vcell.message.server.cmd.CommandServiceSshNative)1 HtcException (cbit.vcell.message.server.htc.HtcException)1 HtcProxy (cbit.vcell.message.server.htc.HtcProxy)1 BatchSystemType (cbit.vcell.server.HtcJobID.BatchSystemType)1 SolverException (cbit.vcell.solver.SolverException)1 XmlParseException (cbit.vcell.xml.XmlParseException)1