diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java index e4620e640b62ab4225db4a491261813b5dca8d4b..5c809cb62ae4324dfee5ff0434a42c6e63963879 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java @@ -3,8 +3,6 @@ package cz.it4i.fiji.haas; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; import java.nio.file.Path; import java.time.Instant; import java.util.Collections; @@ -17,33 +15,38 @@ public class BenchmarkJobManager { private JobManager jobManager; private Progress progress; private Path workDirectory; + private static final String CONFIG_FOR_MODIFICATION = "not-set-config.yaml"; private static final String CONFIG_MODIFIED = "config.yaml"; - + public BenchmarkJobManager(Path workDirectory, Progress progress) throws IOException { this.workDirectory = workDirectory; jobManager = new JobManager(workDirectory, TestingConstants.getSettings(3, 6)); this.progress = progress; } - + public JobInfo startJob() throws IOException { - JobInfo jobInfo = jobManager.startJob( Collections.emptyList(), null); + JobInfo jobInfo = jobManager.startJob(Collections.emptyList(), null); jobInfo.waitForStart(); - if(jobInfo.getState() != JobState.Running) { + if (jobInfo.getState() != JobState.Running) { throw new IllegalStateException("start of job: " + jobInfo + " failed"); } ByteArrayOutputStream os = new ByteArrayOutputStream(); - jobInfo.downloadFileData(CONFIG_FOR_MODIFICATION,os); - byte[]data = updateConfigFile(os.toByteArray()); - - jobInfo.uploadFile (new ByteArrayInputStream(data),CONFIG_MODIFIED, data.length ,Instant.now().getEpochSecond()); + jobInfo.downloadFileData(CONFIG_FOR_MODIFICATION, os); + byte[] data = updateConfigFile(os.toByteArray()); + + jobInfo.uploadFile(new ByteArrayInputStream(data), CONFIG_MODIFIED, data.length, + Instant.now().getEpochSecond()); return jobInfo; } + public JobState getState(long jobId) { + return jobManager.getState(jobId); + } + private byte[] updateConfigFile(byte[] data) throws IOException { return data; - + } - } diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java index a280b9c9646b8e4a588c627665c454fdc521c5af..ec931362fabdfa10c8027679aa362e1161e85d62 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java @@ -134,9 +134,12 @@ public class Job { } public void downloadFileData(String fileName, OutputStream bos) { - haasClientSupplier.get().downloadFileData(jobId,fileName, bos); + haasClientSupplier.get().downloadFileData(jobId, fileName, bos); + } + + public void uploadFileData(InputStream inputStream, String fileName, int length, long lastModification) { + haasClientSupplier.get().uploadFileData(jobId, inputStream, fileName, length, lastModification); } - public JobState getState() { return state; @@ -223,6 +226,4 @@ public class Job { } - - } diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java index ba976fa2216c5a263969d20939e4bfdc67b56db1..952d1b0fa6438ca7048d4265337ab0f5119d834b 100644 --- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java +++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java @@ -1,7 +1,7 @@ package cz.it4i.fiji.haas; -import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; @@ -145,10 +145,10 @@ public class JobManager { job.downloadFileData(fileName, bos); } - public void uploadFile(ByteArrayInputStream byteArrayInputStream, String configModified, int length, - long epochSecond) { + public void uploadFile(InputStream inputStream, String name, int length, + long lastModification) { - //TODO + job.uploadFileData(inputStream, name, length, lastModification); } private String getStringFromTimeSafely(Calendar time) { diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java index 8a171f8f1b571397077f527438b4b7cc021e637c..5551cff0507f53ff4c0e31c516f40bf2f3391b86 100644 --- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java +++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/HaaSClient.java @@ -1,6 +1,7 @@ package cz.it4i.fiji.haas_java_client; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.nio.file.Files; @@ -284,6 +285,20 @@ public class HaaSClient { FileTransferMethodExt ft = getFileTransfer().getFileTransferMethod(jobId, getSessionID()); try (ScpClient scpClient = getScpClient(ft)) { scpClient.download(fileName, os, new TransferFileProgressForHaaSClient(0, dummyNotifier)); + getFileTransfer().endFileTransfer(jobId, ft, getSessionID()); + } + } catch (IOException | JSchException | ServiceException e) { + throw new HaaSClientException(e); + } + } + + public void uploadFileData(Long jobId, InputStream inputStream, String fileName, long length, + long lastModification) { + try { + FileTransferMethodExt ft = getFileTransfer().getFileTransferMethod(jobId, getSessionID()); + try (ScpClient scpClient = getScpClient(ft)) { + scpClient.upload(inputStream,fileName,length,lastModification, new TransferFileProgressForHaaSClient(0, dummyNotifier)); + getFileTransfer().endFileTransfer(jobId, ft, getSessionID()); } } catch (IOException | JSchException | ServiceException e) { throw new HaaSClientException(e); @@ -448,4 +463,6 @@ public class HaaSClient { } } + + } diff --git a/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/ScpClient.java b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/ScpClient.java index fecafb4e2d63daf2e22a464959a125729073cbb2..ec30c8cd68f5258ec70ed10ed42a655a9306dcd9 100644 --- a/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/ScpClient.java +++ b/java-scpclient/src/main/java/cz/it4i/fiji/scpclient/ScpClient.java @@ -66,7 +66,7 @@ public class ScpClient implements Closeable { } public boolean download(String lfile, Path rfile, TransferFileProgress progress) throws JSchException, IOException { - try(OutputStream os = Files.newOutputStream(rfile)) { + try (OutputStream os = Files.newOutputStream(rfile)) { return download(lfile, os, progress); } } @@ -174,17 +174,16 @@ public class ScpClient implements Closeable { public boolean upload(Path file, String rfile, TransferFileProgress progress) throws JSchException, IOException { try (InputStream is = Files.newInputStream(file)) { - return upload(is, file.getFileName().toString(), file.toFile().length(), file.toFile().lastModified(), - rfile, progress); + return upload(is, rfile, file.toFile().length(), file.toFile().lastModified(), progress); } } - public boolean upload(InputStream is, String fileName, long length, long lastModified, String rfile, + public boolean upload(InputStream is, String fileName, long length, long lastModified, TransferFileProgress progress) throws JSchException, IOException { Session session = connectionSession(); boolean ptimestamp = true; // exec 'scp -t rfile' remotely - String command = "scp " + (ptimestamp ? "-p" : "") + " -t " + rfile; + String command = "scp " + (ptimestamp ? "-p" : "") + " -t " + fileName; Channel channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(command); // get I/O streams for remote scp