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
----------------------------------------------------------------------