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 <[email protected]>
Authored: Wed Jul 2 15:20:13 2014 +0100
Committer: Martin Harris <[email protected]>
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;

Reply via email to