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 2015/09/21 14:13:28 UTC

[1/3] incubator-brooklyn git commit: accept `-D...` options as part of `launch`, treat them as system properties as if passed as a JVM arg, similar to how maven does it

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 324bb38be -> 08995e068


accept `-D...` options as part of `launch`, treat them as system properties
as if passed as a JVM arg, similar to how maven does it


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

Branch: refs/heads/master
Commit: a20f85b7f07a40048f296edcd06db7dae04217b1
Parents: 324bb38
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sun Sep 20 17:15:30 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Sep 20 17:43:37 2015 -0500

----------------------------------------------------------------------
 .../org/apache/brooklyn/cli/AbstractMain.java   | 37 ++++++++++++++++++--
 .../main/java/org/apache/brooklyn/cli/Main.java |  4 ++-
 .../java/org/apache/brooklyn/cli/CliTest.java   | 34 ++++++++++++++++--
 3 files changed, 68 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a20f85b7/usage/cli/src/main/java/org/apache/brooklyn/cli/AbstractMain.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/java/org/apache/brooklyn/cli/AbstractMain.java b/usage/cli/src/main/java/org/apache/brooklyn/cli/AbstractMain.java
index b55111c..619768e 100644
--- a/usage/cli/src/main/java/org/apache/brooklyn/cli/AbstractMain.java
+++ b/usage/cli/src/main/java/org/apache/brooklyn/cli/AbstractMain.java
@@ -33,19 +33,22 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.Callable;
 
 import javax.inject.Inject;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.api.catalog.BrooklynCatalog;
 import org.apache.brooklyn.cli.Main.LaunchCommand;
 import org.apache.brooklyn.core.BrooklynVersion;
+import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.exceptions.FatalConfigurationRuntimeException;
 import org.apache.brooklyn.util.exceptions.FatalRuntimeException;
 import org.apache.brooklyn.util.exceptions.UserFacingException;
+import org.apache.brooklyn.util.text.KeyValueParser;
 import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
@@ -117,7 +120,7 @@ public abstract class AbstractMain {
                     .add("verbose", verbose)
                     .add("quiet", quiet);
         }
-
+        
         @Override
         public String toString() {
             return string().toString();
@@ -150,6 +153,34 @@ public abstract class AbstractMain {
                     .add("arguments", arguments);
         }
     }
+    
+    /** superclass which reads `-D` system property definitions and applies them
+     * <p>
+     * useful when scripting, e.g. where brooklyn.sh encodes `java o.a.b.Main "$@"` 
+     * but we want the caller to be able to pass system properties
+     */
+    public static abstract class BrooklynCommandWithSystemDefines extends BrooklynCommandCollectingArgs {
+        @Option(type = OptionType.GLOBAL, name = { "-D" }, description = "Set java system property")
+        public List<String> defines1;
+
+        @Option(name = { "-D" }, description = "Set java system property")
+        public List<String> defines2;
+
+        public List<String> getDefines() { return MutableList.copyOf(defines1).appendAll(defines2); }
+        public Map<String,String> getDefinesAsMap() { return KeyValueParser.parseMap(Strings.join(getDefines(),",")); }
+        public void applyDefinesAsSystemProperties() { System.getProperties().putAll(getDefinesAsMap()); }
+        
+        public ToStringHelper string() {
+            return super.string()
+                    .add("defines", getDefines());
+        }
+        
+        @Override
+        public Void call() throws Exception {
+            applyDefinesAsSystemProperties();
+            return null;
+        }
+    }
 
     @Command(name = "help", description = "Display help for available commands")
     public static class HelpCommand extends BrooklynCommand {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a20f85b7/usage/cli/src/main/java/org/apache/brooklyn/cli/Main.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/main/java/org/apache/brooklyn/cli/Main.java b/usage/cli/src/main/java/org/apache/brooklyn/cli/Main.java
index b546d7b..1c66a04 100644
--- a/usage/cli/src/main/java/org/apache/brooklyn/cli/Main.java
+++ b/usage/cli/src/main/java/org/apache/brooklyn/cli/Main.java
@@ -194,7 +194,7 @@ public class Main extends AbstractMain {
     }
     
     @Command(name = "launch", description = "Starts a server, optionally with applications")
-    public static class LaunchCommand extends BrooklynCommandCollectingArgs {
+    public static class LaunchCommand extends BrooklynCommandWithSystemDefines {
 
         @Option(name = { "--localBrooklynProperties" }, title = "local brooklyn.properties file",
                 description = "Load the given properties file, specific to this launch (appending to and overriding global properties)")
@@ -381,6 +381,8 @@ public class Main extends AbstractMain {
         
         @Override
         public Void call() throws Exception {
+            super.call();
+            
             // Configure launcher
             BrooklynLauncher launcher;
             AppShutdownHandler shutdownHandler = new AppShutdownHandler();

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a20f85b7/usage/cli/src/test/java/org/apache/brooklyn/cli/CliTest.java
----------------------------------------------------------------------
diff --git a/usage/cli/src/test/java/org/apache/brooklyn/cli/CliTest.java b/usage/cli/src/test/java/org/apache/brooklyn/cli/CliTest.java
index 01ec00f..c3d9eb6 100644
--- a/usage/cli/src/test/java/org/apache/brooklyn/cli/CliTest.java
+++ b/usage/cli/src/test/java/org/apache/brooklyn/cli/CliTest.java
@@ -47,6 +47,7 @@ import org.apache.brooklyn.api.entity.ImplementedBy;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.cli.AbstractMain.BrooklynCommand;
 import org.apache.brooklyn.cli.AbstractMain.BrooklynCommandCollectingArgs;
+import org.apache.brooklyn.cli.AbstractMain.DefaultInfoCommand;
 import org.apache.brooklyn.cli.AbstractMain.HelpCommand;
 import org.apache.brooklyn.cli.Main.AppShutdownHandler;
 import org.apache.brooklyn.cli.Main.GeneratePasswordCommand;
@@ -300,12 +301,39 @@ public class CliTest {
         cli.parse("launch", "blah", "my.App");
     }
     
+    @Test
     public void testHelpCommand() {
         Cli<BrooklynCommand> cli = buildCli();
         BrooklynCommand command = cli.parse("help");
-        assertTrue(command instanceof HelpCommand);
-        command = cli.parse();
-        assertTrue(command instanceof HelpCommand);
+        assertTrue(command instanceof HelpCommand, "Command is: "+command);
+    }
+    
+    @Test
+    public void testDefaultInfoCommand() {
+        Cli<BrooklynCommand> cli = buildCli();
+        BrooklynCommand command = cli.parse("");
+        assertTrue(command instanceof DefaultInfoCommand, "Command is: "+command);
+    }
+
+    @Test
+    public void testCliSystemPropertyDefines() {
+        Cli<BrooklynCommand> cli = buildCli();
+        BrooklynCommand command0 = cli.parse(
+            "-Dorg.apache.brooklyn.cli.CliTest.sample1=foo",
+            "-Dorg.apache.brooklyn.cli.CliTest.sample2=bar",
+            "launch", 
+            "-Dorg.apache.brooklyn.cli.CliTest.sample3=baz"
+            );
+        assertTrue(command0 instanceof LaunchCommand);
+        LaunchCommand command = (LaunchCommand) command0;
+        assertEquals(command.getDefines().size(), 3, 
+            "Command is: "+command);
+        assertTrue(command.getDefines().get(0).equals("org.apache.brooklyn.cli.CliTest.sample1=foo"),  
+            "Command is: "+command);
+        assertTrue(command.getDefines().get(2).equals("org.apache.brooklyn.cli.CliTest.sample3=baz"), 
+            "Command is: "+command);
+        assertEquals(command.getDefinesAsMap().get("org.apache.brooklyn.cli.CliTest.sample3"), "baz",
+            "Command is: "+command);
     }
 
     @Test


[3/3] incubator-brooklyn git commit: This closes #909

Posted by al...@apache.org.
This closes #909


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

Branch: refs/heads/master
Commit: 08995e06879082744b269c32b729b425afcf885e
Parents: 324bb38 d432810
Author: Aled Sage <al...@gmail.com>
Authored: Mon Sep 21 13:13:17 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Mon Sep 21 13:13:17 2015 +0100

----------------------------------------------------------------------
 .../org/apache/brooklyn/cli/AbstractMain.java   | 37 ++++++++++++++++++--
 .../main/java/org/apache/brooklyn/cli/Main.java |  4 ++-
 .../java/org/apache/brooklyn/cli/CliTest.java   | 34 ++++++++++++++++--
 .../brooklyn/launcher/BrooklynWebServer.java    |  6 ++++
 4 files changed, 74 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



[2/3] incubator-brooklyn git commit: give the jetty server JSESSION a unique ID to prevent conflicts

Posted by al...@apache.org.
give the jetty server JSESSION a unique ID to prevent conflicts


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

Branch: refs/heads/master
Commit: d432810fd21b2d2e75121657c78f36361d1a62cb
Parents: a20f85b
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sun Sep 20 17:16:23 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Sep 20 17:43:40 2015 -0500

----------------------------------------------------------------------
 .../java/org/apache/brooklyn/launcher/BrooklynWebServer.java   | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d432810f/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java b/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
index 5d58181..50f0a8c 100644
--- a/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
+++ b/usage/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
@@ -39,6 +39,7 @@ import javax.servlet.DispatcherType;
 
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.SessionManager;
 import org.eclipse.jetty.server.nio.SelectChannelConnector;
 import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
 import org.eclipse.jetty.servlet.FilterHolder;
@@ -588,6 +589,11 @@ public class BrooklynWebServer {
         boolean isRoot = cleanPathSpec.isEmpty();
 
         WebAppContext context = new WebAppContext();
+        // use a unique session ID to prevent interference with other web apps on same server (esp for localhost);
+        // it might be better to make this brooklyn-only or base on the management-plane ID;
+        // but i think it actually *is* per-server instance, since we don't cache sessions server-side,
+        // so i think this is write. [Alex 2015-09] 
+        context.setInitParameter(SessionManager.__SessionCookieProperty, SessionManager.__DefaultSessionCookie+"_"+"BROOKLYN"+Identifiers.makeRandomId(6));
         context.setAttribute(BrooklynServiceAttributes.BROOKLYN_MANAGEMENT_CONTEXT, managementContext);
         for (Map.Entry<String, Object> attributeEntry : attributes.entrySet()) {
             context.setAttribute(attributeEntry.getKey(), attributeEntry.getValue());