From e50da487434a481f908ac9855a462d510009c1a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz>
Date: Fri, 1 Jun 2018 13:15:37 +0200
Subject: [PATCH] set number of nodes

---
 .../cz/it4i/fiji/haas_java_client/HaaSClient.java    | 12 +++++++++---
 .../java/cz/it4i/fiji/haas_java_client/Settings.java |  1 +
 .../it4i/fiji/haas_java_client/SettingsProvider.java |  9 +++++++++
 3 files changed, 19 insertions(+), 3 deletions(-)

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 f66413be..78a51295 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
@@ -15,6 +15,7 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 
 import javax.xml.rpc.ServiceException;
 
@@ -193,12 +194,15 @@ public class HaaSClient {
 	
 	private final Settings settings;
 
+	private final int numberOfNodes;
+
 	public HaaSClient(Settings settings) {
 		this.settings = settings;
 		this.templateId = settings.getTemplateId();
 		this.timeOut = settings.getTimeout();
 		this.clusterNodeType = settings.getClusterNodeType();
 		this.projectId = settings.getProjectId();
+		this.numberOfNodes = settings.getNumberOfNodes();
 	}
 
 	public long createJob(String name, Collection<Entry<String, String>> templateParameters) {
@@ -315,8 +319,10 @@ public class HaaSClient {
 
 	private long doCreateJob(String name, Collection<Entry<String, String>> templateParameters)
 			throws RemoteException, ServiceException {
-		TaskSpecificationExt taskSpec = createTaskSpecification(name, templateId, templateParameters);
-		JobSpecificationExt jobSpecification = createJobSpecification(name, Arrays.asList(taskSpec));
+		Collection<TaskSpecificationExt> taskSpec = IntStream.range(0, numberOfNodes)
+				.mapToObj(index -> createTaskSpecification(name + ": " + index, templateId, templateParameters))
+				.collect(Collectors.toList());
+		JobSpecificationExt jobSpecification = createJobSpecification(name, taskSpec);
 		SubmittedJobInfoExt job = getJobManagement().createJob(jobSpecification, getSessionID());
 		return job.getId();
 	}
@@ -344,6 +350,7 @@ public class HaaSClient {
 		testJob.setClusterNodeTypeId(clusterNodeType);
 		testJob.setEnvironmentVariables(new EnvironmentVariableExt[0]);
 		testJob.setTasks(tasks.stream().toArray(TaskSpecificationExt[]::new));
+		
 		return testJob;
 	}
 
@@ -370,7 +377,6 @@ public class HaaSClient {
 		testTask.setTemplateParameterValues(templateParameters.stream()
 				.map(pair -> new CommandTemplateParameterValueExt(pair.getKey(), pair.getValue()))
 				.toArray(CommandTemplateParameterValueExt[]::new));
-
 		return testTask;
 	}
 
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java
index ee8611e7..a74aca1d 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/Settings.java
@@ -10,4 +10,5 @@ public interface Settings {
 	long getClusterNodeType();
 	String getProjectId();
 	String getJobName();
+	int getNumberOfNodes();
 }
diff --git a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java
index 762b0446..4bd07df1 100644
--- a/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java
+++ b/haas-java-client/src/main/java/cz/it4i/fiji/haas_java_client/SettingsProvider.java
@@ -3,6 +3,10 @@ package cz.it4i.fiji.haas_java_client;
 public interface SettingsProvider {
 	
 	static Settings getSettings(long templateId, int timeOut, long clusterNodeType, String projectId, String configFileName) {
+		return getSettings(templateId, timeOut, clusterNodeType, projectId, 1, configFileName);
+	}
+	
+	static Settings getSettings(long templateId, int timeOut, long clusterNodeType, String projectId, int numberOfNodes,String configFileName) {
 		Constants constants = new Constants(configFileName);
 		return new Settings() {
 			
@@ -50,6 +54,11 @@ public interface SettingsProvider {
 			public String getJobName() {
 				return "TestOutRedirect";
 			}
+
+			@Override
+			public int getNumberOfNodes() {
+				return numberOfNodes;
+			}
 		};
 	}
 	
-- 
GitLab