You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2014/07/09 16:39:14 UTC
[1/4] git commit: Adds pre and post launch command config keys to
SoftwareProcess
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master 671f99e6b -> 65bc06adc
Adds pre and post launch command config keys to SoftwareProcess
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/74bf465c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/74bf465c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/74bf465c
Branch: refs/heads/master
Commit: 74bf465c255277e5008005c7d9aad3cbb7e0f948
Parents: 9ca8250
Author: Martin Harris <gi...@nakomis.com>
Authored: Wed Jul 2 15:20:13 2014 +0100
Committer: Martin Harris <gi...@nakomis.com>
Committed: Wed Jul 2 15:20:13 2014 +0100
----------------------------------------------------------------------
.../brooklyn/entity/basic/BrooklynConfigKeys.java | 13 +++++++++++--
.../entity/basic/AbstractSoftwareProcessDriver.java | 16 ++++++++++++++++
.../basic/AbstractSoftwareProcessSshDriver.java | 10 ++++++++++
.../java/brooklyn/entity/basic/SoftwareProcess.java | 6 ++++++
4 files changed, 43 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/74bf465c/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java b/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
index 90e52ee..3c75335 100644
--- a/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
+++ b/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
@@ -1,13 +1,15 @@
package brooklyn.entity.basic;
-import static brooklyn.entity.basic.ConfigKeys.*;
+import static brooklyn.entity.basic.ConfigKeys.newBooleanConfigKey;
+import static brooklyn.entity.basic.ConfigKeys.newConfigKey;
+import static brooklyn.entity.basic.ConfigKeys.newConfigKeyWithPrefix;
+import static brooklyn.entity.basic.ConfigKeys.newStringConfigKey;
import brooklyn.config.BrooklynServerConfig;
import brooklyn.config.ConfigKey;
import brooklyn.event.basic.BasicAttributeSensorAndConfigKey;
import brooklyn.event.basic.TemplatedStringAttributeSensorAndConfigKey;
import brooklyn.util.internal.ssh.ShellTool;
import brooklyn.util.internal.ssh.SshTool;
-import brooklyn.util.os.Os;
import brooklyn.util.time.Duration;
import com.google.common.base.Preconditions;
@@ -38,6 +40,13 @@ public class BrooklynConfigKeys {
"Provides a label which uniquely identifies an installation, used in the computation of the install dir; "
+ "this should include something readable, and must include a hash of all data which differentiates an installation "
+ "(e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use");
+
+ public static final ConfigKey<String> PRE_LAUNCH_COMMAND = ConfigKeys.newStringConfigKey("pre.launch.command",
+ "Command to be run prior to the launch method being called on the driver");
+
+ public static final ConfigKey<String> POST_LAUNCH_COMMAND = ConfigKeys.newStringConfigKey("post.launch.command",
+ "Command to be run after the launch method being called on the driver. The implementation in AbstractSoftwareSshDriver "
+ + "runs this comamnd as an SSH command");
public static final BasicAttributeSensorAndConfigKey<String> INSTALL_DIR = new TemplatedStringAttributeSensorAndConfigKey("install.dir", "Directory for this software to be installed in",
"${"
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/74bf465c/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
index 08b85e8..f1a2397 100644
--- a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
+++ b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
@@ -17,6 +17,7 @@ import brooklyn.util.task.Tasks;
import brooklyn.util.text.TemplateProcessor;
import com.google.common.annotations.Beta;
+import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
/**
@@ -69,10 +70,22 @@ public abstract class AbstractSoftwareProcessDriver implements SoftwareProcessDr
customize();
}});
+ if (!Strings.isNullOrEmpty(entity.getConfig(BrooklynConfigKeys.PRE_LAUNCH_COMMAND))) {
+ DynamicTasks.queue("pre-launch command", new Runnable() { public void run() {
+ runPreLaunchCommand(entity.getConfig(BrooklynConfigKeys.PRE_LAUNCH_COMMAND));
+ }});
+ };
+
DynamicTasks.queue("launch", new Runnable() { public void run() {
waitForConfigKey(BrooklynConfigKeys.LAUNCH_LATCH);
launch();
}});
+
+ if (!Strings.isNullOrEmpty(entity.getConfig(BrooklynConfigKeys.POST_LAUNCH_COMMAND))) {
+ DynamicTasks.queue("post-launch command", new Runnable() { public void run() {
+ runPostLaunchCommand(entity.getConfig(BrooklynConfigKeys.POST_LAUNCH_COMMAND));
+ }});
+ };
DynamicTasks.queue("post-launch", new Runnable() { public void run() {
postLaunch();
@@ -84,7 +97,10 @@ public abstract class AbstractSoftwareProcessDriver implements SoftwareProcessDr
public abstract void install();
public abstract void customize();
+ public abstract void runPreLaunchCommand(String command);
public abstract void launch();
+ public abstract void runPostLaunchCommand(String command);
+
@Override
public void kill() {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/74bf465c/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java
index 9a41f2c..35738a3 100644
--- a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java
+++ b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java
@@ -261,6 +261,16 @@ public abstract class AbstractSoftwareProcessSshDriver extends AbstractSoftwareP
if (!flags.containsKey("logPrefix")) flags.put("logPrefix", ""+entity.getId()+"@"+getLocation().getDisplayName());
return getMachine().execScript(flags, summaryForLogging, script, environment);
}
+
+ @Override
+ public void runPreLaunchCommand(String command) {
+ execute(ImmutableList.of(command), "running pre-launch commands");
+ }
+
+ @Override
+ public void runPostLaunchCommand(String command) {
+ execute(ImmutableList.of(command), "running post-launch commands");
+ }
/**
* The environment variables to be set when executing the commands (for install, run, check running, etc).
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/74bf465c/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java
index 7e60822..4b0568c 100644
--- a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java
+++ b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java
@@ -33,6 +33,12 @@ public interface SoftwareProcess extends Entity, Startable {
@SetFromFlag("customizeLatch")
public static final ConfigKey<Boolean> CUSTOMIZE_LATCH = BrooklynConfigKeys.CUSTOMIZE_LATCH;
+
+ @SetFromFlag("preLaunchCommand")
+ public static final ConfigKey<String> PRE_LAUNCH_COMMAND = BrooklynConfigKeys.PRE_LAUNCH_COMMAND;
+
+ @SetFromFlag("postLaunchCommand")
+ public static final ConfigKey<String> POST_LAUNCH_COMMAND = BrooklynConfigKeys.POST_LAUNCH_COMMAND;
@SetFromFlag("launchLatch")
public static final ConfigKey<Boolean> LAUNCH_LATCH = BrooklynConfigKeys.LAUNCH_LATCH;
[2/4] git commit: Adds integration test for pre and post launch
commands
Posted by al...@apache.org.
Adds integration test for pre and post launch commands
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f8893bdd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f8893bdd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f8893bdd
Branch: refs/heads/master
Commit: f8893bdd6934034513d52e5f3b1fc2685ee8e08e
Parents: 74bf465
Author: Martin Harris <gi...@nakomis.com>
Authored: Thu Jul 3 17:33:52 2014 +0100
Committer: Martin Harris <gi...@nakomis.com>
Committed: Thu Jul 3 17:33:52 2014 +0100
----------------------------------------------------------------------
.../SoftwareProcessSshDriverIntegrationTest.java | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f8893bdd/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
index f812bb9..73c2298 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
@@ -6,6 +6,7 @@ import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.io.File;
+import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
@@ -204,6 +205,24 @@ public class SoftwareProcessSshDriverIntegrationTest {
}
}
+ @Test(groups="Integration")
+ public void testPreAndPostLaunchCommands() throws IOException {
+ File tempPreLaunchFile = new File(tempDataDir, "prelaunch.txt");
+ File tempPostLaunchFile = new File(tempDataDir, "postlaunch.txt");
+ localhost.setConfig(BrooklynConfigKeys.ONBOX_BASE_DIR, tempDataDir.getAbsolutePath());
+ app.createAndManageChild(EntitySpec.create(MyService.class)
+ .configure(SoftwareProcess.PRE_LAUNCH_COMMAND, String.format("echo foo > %s", tempPreLaunchFile.getAbsoluteFile()))
+ .configure(SoftwareProcess.POST_LAUNCH_COMMAND, String.format("echo bar > %s", tempPostLaunchFile.getAbsoluteFile())));
+ app.start(ImmutableList.of(localhost));
+ List<String> prelaunch = Files.readLines(tempPreLaunchFile, Charsets.UTF_8);
+ List<String> postlaunch = Files.readLines(tempPostLaunchFile, Charsets.UTF_8);
+ assertEquals(prelaunch.size(), 1);
+ assertEquals(postlaunch.size(), 1);
+ assertEquals(postlaunch.get(0), "bar");
+ assertEquals(prelaunch.get(0), "foo");
+ tempPreLaunchFile.delete();
+ tempPostLaunchFile.delete();
+ }
@ImplementedBy(MyServiceImpl.class)
public interface MyService extends SoftwareProcess {
[3/4] git commit: Addressed PR comments
Posted by al...@apache.org.
Addressed PR comments
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/5b0c1962
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/5b0c1962
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/5b0c1962
Branch: refs/heads/master
Commit: 5b0c1962a8ac08d695481ea58ac3fa860bd6443a
Parents: f8893bd
Author: Martin Harris <gi...@nakomis.com>
Authored: Wed Jul 9 12:28:29 2014 +0100
Committer: Martin Harris <gi...@nakomis.com>
Committed: Wed Jul 9 12:28:29 2014 +0100
----------------------------------------------------------------------
.../entity/basic/BrooklynConfigKeys.java | 6 ++---
.../basic/AbstractSoftwareProcessDriver.java | 6 ++---
...SoftwareProcessSshDriverIntegrationTest.java | 25 ++++++++++----------
3 files changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5b0c1962/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java b/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
index 3c75335..1472308 100644
--- a/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
+++ b/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
@@ -44,10 +44,10 @@ public class BrooklynConfigKeys {
public static final ConfigKey<String> PRE_LAUNCH_COMMAND = ConfigKeys.newStringConfigKey("pre.launch.command",
"Command to be run prior to the launch method being called on the driver");
+ // The implementation in AbstractSoftwareSshDriver runs this command as an SSH command
public static final ConfigKey<String> POST_LAUNCH_COMMAND = ConfigKeys.newStringConfigKey("post.launch.command",
- "Command to be run after the launch method being called on the driver. The implementation in AbstractSoftwareSshDriver "
- + "runs this comamnd as an SSH command");
-
+ "Command to be run after the launch method being called on the driver");
+
public static final BasicAttributeSensorAndConfigKey<String> INSTALL_DIR = new TemplatedStringAttributeSensorAndConfigKey("install.dir", "Directory for this software to be installed in",
"${"
+ "config['"+ONBOX_BASE_DIR.getName()+"']!"
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5b0c1962/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
index f1a2397..b849d6f 100644
--- a/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
+++ b/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
@@ -14,10 +14,10 @@ import brooklyn.location.Location;
import brooklyn.util.ResourceUtils;
import brooklyn.util.task.DynamicTasks;
import brooklyn.util.task.Tasks;
+import brooklyn.util.text.Strings;
import brooklyn.util.text.TemplateProcessor;
import com.google.common.annotations.Beta;
-import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
/**
@@ -70,7 +70,7 @@ public abstract class AbstractSoftwareProcessDriver implements SoftwareProcessDr
customize();
}});
- if (!Strings.isNullOrEmpty(entity.getConfig(BrooklynConfigKeys.PRE_LAUNCH_COMMAND))) {
+ if (Strings.isNonBlank(entity.getConfig(BrooklynConfigKeys.PRE_LAUNCH_COMMAND))) {
DynamicTasks.queue("pre-launch command", new Runnable() { public void run() {
runPreLaunchCommand(entity.getConfig(BrooklynConfigKeys.PRE_LAUNCH_COMMAND));
}});
@@ -81,7 +81,7 @@ public abstract class AbstractSoftwareProcessDriver implements SoftwareProcessDr
launch();
}});
- if (!Strings.isNullOrEmpty(entity.getConfig(BrooklynConfigKeys.POST_LAUNCH_COMMAND))) {
+ if (Strings.isNonBlank(entity.getConfig(BrooklynConfigKeys.POST_LAUNCH_COMMAND))) {
DynamicTasks.queue("post-launch command", new Runnable() { public void run() {
runPostLaunchCommand(entity.getConfig(BrooklynConfigKeys.POST_LAUNCH_COMMAND));
}});
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5b0c1962/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
index 73c2298..8d13694 100644
--- a/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
+++ b/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
@@ -207,21 +207,20 @@ public class SoftwareProcessSshDriverIntegrationTest {
@Test(groups="Integration")
public void testPreAndPostLaunchCommands() throws IOException {
- File tempPreLaunchFile = new File(tempDataDir, "prelaunch.txt");
- File tempPostLaunchFile = new File(tempDataDir, "postlaunch.txt");
+ File tempFile = new File(tempDataDir, "tempFile.txt");
localhost.setConfig(BrooklynConfigKeys.ONBOX_BASE_DIR, tempDataDir.getAbsolutePath());
- app.createAndManageChild(EntitySpec.create(MyService.class)
- .configure(SoftwareProcess.PRE_LAUNCH_COMMAND, String.format("echo foo > %s", tempPreLaunchFile.getAbsoluteFile()))
- .configure(SoftwareProcess.POST_LAUNCH_COMMAND, String.format("echo bar > %s", tempPostLaunchFile.getAbsoluteFile())));
+ app.createAndManageChild(EntitySpec.create(VanillaSoftwareProcess.class)
+ .configure(VanillaSoftwareProcess.CHECK_RUNNING_COMMAND, "")
+ .configure(SoftwareProcess.PRE_LAUNCH_COMMAND, String.format("echo inPreLaunch >> %s", tempFile.getAbsoluteFile()))
+ .configure(VanillaSoftwareProcess.LAUNCH_COMMAND, String.format("echo inLaunch >> %s", tempFile.getAbsoluteFile()))
+ .configure(SoftwareProcess.POST_LAUNCH_COMMAND, String.format("echo inPostLaunch >> %s", tempFile.getAbsoluteFile())));
app.start(ImmutableList.of(localhost));
- List<String> prelaunch = Files.readLines(tempPreLaunchFile, Charsets.UTF_8);
- List<String> postlaunch = Files.readLines(tempPostLaunchFile, Charsets.UTF_8);
- assertEquals(prelaunch.size(), 1);
- assertEquals(postlaunch.size(), 1);
- assertEquals(postlaunch.get(0), "bar");
- assertEquals(prelaunch.get(0), "foo");
- tempPreLaunchFile.delete();
- tempPostLaunchFile.delete();
+ List<String> output = Files.readLines(tempFile, Charsets.UTF_8);
+ assertEquals(output.size(), 3);
+ assertEquals(output.get(0), "inPreLaunch");
+ assertEquals(output.get(1), "inLaunch");
+ assertEquals(output.get(2), "inPostLaunch");
+ tempFile.delete();
}
@ImplementedBy(MyServiceImpl.class)
[4/4] git commit: This closes #42
Posted by al...@apache.org.
This closes #42
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/65bc06ad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/65bc06ad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/65bc06ad
Branch: refs/heads/master
Commit: 65bc06adcb8e14945755b49cacf65d4279354bc8
Parents: 671f99e 5b0c196
Author: Aled Sage <al...@gmail.com>
Authored: Wed Jul 9 15:37:07 2014 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Wed Jul 9 15:37:07 2014 +0100
----------------------------------------------------------------------
.../brooklyn/entity/basic/BrooklynConfigKeys.java | 9 ++++++++-
.../basic/AbstractSoftwareProcessDriver.java | 16 ++++++++++++++++
.../basic/AbstractSoftwareProcessSshDriver.java | 10 ++++++++++
.../brooklyn/entity/basic/SoftwareProcess.java | 6 ++++++
.../SoftwareProcessSshDriverIntegrationTest.java | 18 ++++++++++++++++++
5 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/65bc06ad/core/src/main/java/brooklyn/entity/basic/BrooklynConfigKeys.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/65bc06ad/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessDriver.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/65bc06ad/software/base/src/main/java/brooklyn/entity/basic/AbstractSoftwareProcessSshDriver.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/65bc06ad/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcess.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/65bc06ad/software/base/src/test/java/brooklyn/entity/basic/SoftwareProcessSshDriverIntegrationTest.java
----------------------------------------------------------------------