Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 9c9a86670 -> 310722dcb


Add install and customize commands to VanillaSoftwareProcess


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/4b0d3ef9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/4b0d3ef9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/4b0d3ef9

Branch: refs/heads/master
Commit: 4b0d3ef92f9d880cd521df874845d3ef0ed4fb7a
Parents: 9c9a866
Author: Mike Zaccardo <[email protected]>
Authored: Thu Jun 18 14:43:51 2015 -0400
Committer: Mike Zaccardo <[email protected]>
Committed: Thu Jun 18 14:43:51 2015 -0400

----------------------------------------------------------------------
 .../entity/basic/AbstractVanillaProcess.java    |  4 +++-
 .../entity/basic/VanillaSoftwareProcess.java    |  3 +++
 .../basic/VanillaSoftwareProcessSshDriver.java  | 21 ++++++++++++++++++++
 .../entity/basic/VanillaWindowsProcess.java     |  4 ----
 4 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4b0d3ef9/software/base/src/main/java/brooklyn/entity/basic/AbstractVanillaProcess.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/brooklyn/entity/basic/AbstractVanillaProcess.java 
b/software/base/src/main/java/brooklyn/entity/basic/AbstractVanillaProcess.java
index b7f0050..2fcb3c2 100644
--- 
a/software/base/src/main/java/brooklyn/entity/basic/AbstractVanillaProcess.java
+++ 
b/software/base/src/main/java/brooklyn/entity/basic/AbstractVanillaProcess.java
@@ -25,7 +25,9 @@ public interface AbstractVanillaProcess extends 
SoftwareProcess {
     AttributeSensorAndConfigKey<String, String> DOWNLOAD_URL = 
SoftwareProcess.DOWNLOAD_URL;
 
     ConfigKey<String> SUGGESTED_VERSION = 
ConfigKeys.newConfigKeyWithDefault(SoftwareProcess.SUGGESTED_VERSION, "0.0.0");
-
+    
+    ConfigKey<String> INSTALL_COMMAND = 
ConfigKeys.newStringConfigKey("install.command", "command to run during the 
install phase");
+    ConfigKey<String> CUSTOMIZE_COMMAND = 
ConfigKeys.newStringConfigKey("customize.command", "command to run during the 
customization phase");
     ConfigKey<String> LAUNCH_COMMAND = 
ConfigKeys.newStringConfigKey("launch.command", "command to run to launch the 
process");
     ConfigKey<String> CHECK_RUNNING_COMMAND = 
ConfigKeys.newStringConfigKey("checkRunning.command", "command to determine 
whether the process is running");
     ConfigKey<String> STOP_COMMAND = 
ConfigKeys.newStringConfigKey("stop.command", "command to run to stop the 
process");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4b0d3ef9/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcess.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcess.java 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcess.java
index daa112b..5b99557 100644
--- 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcess.java
+++ 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcess.java
@@ -42,6 +42,9 @@ import brooklyn.entity.proxying.ImplementedBy;
  * </pre>
  * You can supply both {@link #DOWNLOAD_URL} and {@link #LAUNCH_COMMAND} 
configuration as well..
  * <p>
+ * In addition, you can supply an {@link #INSTALL_COMMAND} and / or a {@link 
#CUSTOMIZE_COMMAND} to reduce the complexity
+ * of the {@link #LAUNCH_COMMAND}, and to avoid repeating actions that are 
unnecessary in subsequent launches.
+ * <p>
  * By default the PID is used to stop the process using {@code kill} followed 
by {@code kill -9} if needed and restart
  * is implemented by stopping the process and then running {@link 
VanillaSoftwareProcessSshDriver#launch()}, but it is
  * possible to override this behavior through config keys:

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4b0d3ef9/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcessSshDriver.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcessSshDriver.java
 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcessSshDriver.java
index b3c0d26..004daa1 100644
--- 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcessSshDriver.java
+++ 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaSoftwareProcessSshDriver.java
@@ -32,6 +32,7 @@ import brooklyn.util.net.Urls;
 import brooklyn.util.os.Os;
 import brooklyn.util.ssh.BashCommands;
 import brooklyn.util.text.Identifiers;
+import brooklyn.util.text.Strings;
 
 public class VanillaSoftwareProcessSshDriver extends 
AbstractSoftwareProcessSshDriver implements VanillaSoftwareProcessDriver {
 
@@ -78,6 +79,15 @@ public class VanillaSoftwareProcessSshDriver extends 
AbstractSoftwareProcessSshD
                     throw new IllegalStateException("Error installing archive: 
" + downloadedFilename);
             }
         }
+        
+        String installCommand = 
getEntity().getConfig(VanillaSoftwareProcess.INSTALL_COMMAND);
+        
+        if (Strings.isNonBlank(installCommand)) {
+            newScript(INSTALLING)
+                .failOnNonZeroResultCode()
+                .body.append(installCommand)
+                .execute();
+        }
     }
 
     @Override
@@ -90,6 +100,17 @@ public class VanillaSoftwareProcessSshDriver extends 
AbstractSoftwareProcessSshD
                     
.body.append(ArchiveUtils.extractCommands(downloadedFilename, getInstallDir()))
                     .execute();
         }
+        
+        String customizeCommand = 
getEntity().getConfig(VanillaSoftwareProcess.CUSTOMIZE_COMMAND);
+        
+        if (Strings.isNonBlank(customizeCommand)) {
+            newScript(CUSTOMIZING)
+                .failOnNonZeroResultCode()
+                // don't set vars yet -- it resolves dependencies (e.g. DB) 
which we don't want until we start
+                .environmentVariablesReset()
+                .body.append(customizeCommand)
+                .execute();
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4b0d3ef9/software/base/src/main/java/brooklyn/entity/basic/VanillaWindowsProcess.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaWindowsProcess.java 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaWindowsProcess.java
index cb1f04d..a6213ac 100644
--- 
a/software/base/src/main/java/brooklyn/entity/basic/VanillaWindowsProcess.java
+++ 
b/software/base/src/main/java/brooklyn/entity/basic/VanillaWindowsProcess.java
@@ -48,12 +48,8 @@ public interface VanillaWindowsProcess extends 
AbstractVanillaProcess {
             "command to determine whether the process is running");
     ConfigKey<String> STOP_POWERSHELL_COMMAND = 
ConfigKeys.newStringConfigKey("stop.powershell.command",
             "command to run to stop the process");
-    ConfigKey<String> CUSTOMIZE_COMMAND = 
ConfigKeys.newStringConfigKey("customize.command",
-            "command to run during the customization phase");
     ConfigKey<String> CUSTOMIZE_POWERSHELL_COMMAND = 
ConfigKeys.newStringConfigKey("customize.powershell.command",
             "powershell command to run during the customization phase");
-    ConfigKey<String> INSTALL_COMMAND = 
ConfigKeys.newStringConfigKey("install.command",
-            "command to run during the install phase");
     ConfigKey<String> INSTALL_POWERSHELL_COMMAND = 
ConfigKeys.newStringConfigKey("install.powershell.command",
             "powershell command to run during the install phase");
     ConfigKey<Duration> REBOOT_BEGUN_TIMEOUT = 
ConfigKeys.newDurationConfigKey("reboot.begun.timeout",

Reply via email to