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());