You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/12/18 04:42:24 UTC
[21/22] ignite git commit: Added support for passing env. variables.
Added support for passing env. variables.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/131a6c98
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/131a6c98
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/131a6c98
Branch: refs/heads/ignite-gg-10889
Commit: 131a6c98c396484b516d26788802f4f652b4f2a5
Parents: 562c70a
Author: vsisko <vs...@gridgain.com>
Authored: Fri Dec 18 10:27:14 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Fri Dec 18 10:27:14 2015 +0700
----------------------------------------------------------------------
.../internal/visor/util/VisorTaskUtils.java | 39 ++++++++++++++++++--
1 file changed, 35 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/131a6c98/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
index 536e368..15bde25 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/util/VisorTaskUtils.java
@@ -830,11 +830,12 @@ public class VisorTaskUtils {
* @param cfgPath Path to node configuration to start with.
* @param nodesToStart Number of nodes to start.
* @param quite If {@code true} then start node in quiet mode.
+ * @param envVars Optional map with environment variables.
* @return List of started processes.
* @throws IOException If failed to start.
*/
public static List<Process> startLocalNode(@Nullable IgniteLogger log, String cfgPath, int nodesToStart,
- boolean quite) throws IOException {
+ boolean quite, Map<String, String> envVars) throws IOException {
String quitePar = quite ? "" : "-v";
String cmdFile = new File("bin", U.isWindows() ? "ignite.bat" : "ignite.sh").getPath();
@@ -870,9 +871,9 @@ public class VisorTaskUtils {
entry.getKey(), value.replace('\n', ' ').replace("'", "\'")));
}
- run.add(openInConsole(envs.toString(), ignite, quitePar, nodeCfg));
+ run.add(openInConsole(null, envVars, envs.toString(), ignite, quitePar, nodeCfg));
} else
- run.add(openInConsole(ignite, quitePar, nodeCfg));
+ run.add(openInConsole(null, envVars, ignite, quitePar, nodeCfg));
}
return run;
@@ -902,9 +903,22 @@ public class VisorTaskUtils {
* @param workFolder Work folder for command.
* @param args A string array containing the program and its arguments.
* @return Started process.
+ * @throws IOException in case of error.
+ */
+ public static Process openInConsole(@Nullable File workFolder, String... args) throws IOException {
+ return openInConsole(workFolder, null, args);
+ }
+
+ /**
+ * Run command in separated console.
+ *
+ * @param workFolder Work folder for command.
+ * @param envVars Optional map with environment variables.
+ * @param args A string array containing the program and its arguments.
+ * @return Started process.
* @throws IOException If failed to start process.
*/
- public static Process openInConsole(@Nullable File workFolder, String... args)
+ public static Process openInConsole(@Nullable File workFolder, Map<String, String> envVars, String... args)
throws IOException {
String[] commands = args;
@@ -925,6 +939,23 @@ public class VisorTaskUtils {
if (workFolder != null)
pb.directory(workFolder);
+ if (envVars != null) {
+ String sep = U.isWindows() ? ";" : ":";
+
+ Map<String, String> goalVars = pb.environment();
+
+ for (Map.Entry<String, String> var: envVars.entrySet()) {
+ String envVar = goalVars.get(var.getKey());
+
+ if (envVar == null || envVar.isEmpty())
+ envVar = var.getValue();
+ else
+ envVar += sep + var.getValue();
+
+ goalVars.put(var.getKey(), envVar);
+ }
+ }
+
return pb.start();
}