public T export(File workDir, String remoteWorkDir, T job) throws IOException { logger.info("ENTERING export(File, PBSJob)"); File submitFile = new File(workDir, String.format("%s.sub", job.getName())); submitFileWriter.write(String.format("#PBS -N %s%n", job.getName())); if (StringUtils.isNotEmpty(job.getQueueName())) { submitFileWriter.write(String.format("#PBS -q %s%n", job.getQueueName())); if (StringUtils.isNotEmpty(job.getProject())) { submitFileWriter.write(String.format("#PBS -A %s%n", job.getProject())); if (job.getWallTime() != null) { submitFileWriter.write(String.format("#PBS -l walltime=%s:00%n", job.getWallTime())); if (job.getMemory() != null) { submitFileWriter.write(String.format("#PBS -l mem=%smb%n", job.getMemory())); job.setOutput(new File(String.format("%s/%s.out", remoteWorkDir, job.getOutput().getName()))); job.setError(new File(String.format("%s/%s.err", remoteWorkDir, job.getError().getName()))); submitFileWriter.write(String.format("#PBS -o %s%n", job.getOutput().getAbsolutePath())); submitFileWriter.write(String.format("#PBS -e %s%n", job.getError().getAbsolutePath())); if (job.getHostCount() != null && job.getNumberOfProcessors() != null) { submitFileWriter.write(String.format("#PBS -l nodes=%s:ppn=%s%n", job.getHostCount(), job.getNumberOfProcessors())); if (job.getTransferExecutable()) { submitFileWriter.write(remoteWorkDir + File.separator + job.getExecutable().getName());
DateFormatUtils.ISO_DATE_FORMAT.format(new Date()), UUID.randomUUID().toString()); String command = String.format("(mkdir -p $HOME/%s && echo $HOME)", remoteWorkDirSuffix); String remoteHome = SSHConnectionUtil.execute(command, site.getUsername(), getSite().getSubmitHost()); logger.info("localWorkDir: {}", localWorkDir.getAbsolutePath()); PBSSubmitScriptExporter<PBSSSHJob> exporter = new PBSSubmitScriptExporter<PBSSSHJob>(); this.job = exporter.export(localWorkDir, remoteWorkDir, this.job); this.job.getTransferExecutable(), this.job.getExecutable(), this.job.getTransferInputs(), this.job.getInputFiles(), job.getSubmitFile()); String targetFile = String.format("%s/%s", remoteWorkDir, job.getSubmitFile().getName()); String submitOutput = SSHConnectionUtil.execute(command, site.getUsername(), getSite().getSubmitHost()); LineNumberReader lnr = new LineNumberReader(new StringReader(submitOutput)); String line = lnr.readLine(); throw new JLRMException("failed to parse the jobid number"); } else { job.setId(matcher.group(1));
PBSSSHJob job = new PBSSSHJob(); job.setTransferExecutable(Boolean.TRUE); job.setTransferInputs(Boolean.TRUE); job.setQueueName(this.queue.getName()); job.setName(this.jobName); job.setHostCount(1); job.setNumberOfProcessors(getQueue().getNumberOfProcessors()); job.setOutput(new File("glidein.out")); job.setError(new File("glidein.err")); job.setWallTime(this.queue.getRunTime()); job.setMemory(null); velocityContext.put("siteName", getSite().getSubmitHost()); velocityContext.put("collectorHost", this.collectorHost); velocityContext.put("jlrmUser", this.username); velocityContext.put("jlrmSiteName", getSite().getName()); velocityContext.put("hostAllowRead", this.hostAllowRead); velocityContext.put("hostAllowWrite", this.hostAllowWrite); DateFormatUtils.ISO_DATE_FORMAT.format(new Date()), UUID.randomUUID().toString()); String command = String.format("(mkdir -p $HOME/%s && echo $HOME)", remoteWorkDirSuffix); String remoteHome = SSHConnectionUtil.execute(command, site.getUsername(), getSite().getSubmitHost()); .getResourceAsStream("org/renci/jlrm/pbs/ssh/glidein.sh.vm")); File glideinScript = new File(localWorkDir.getAbsolutePath(), "glidein.sh"); writeTemplate(velocityContext, glideinScript, glideinScriptMacro); job.setExecutable(glideinScript); writeTemplate(velocityContext, condorConfigLocal, condorConfigLocalScriptMacro);