[3/6] incubator-brooklyn git commit: suppress explicit termination in main thread; the shutdown hook is sufficient and it's a bit of work to terminate properly in-thread

2016-01-20 Thread heneveld
suppress explicit termination in main thread;
the shutdown hook is sufficient and it's a bit of work to terminate properly 
in-thread


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

Branch: refs/heads/master
Commit: 88b76b71bf7f977ee0c4185bba97e17ea0657baf
Parents: db44cd7
Author: Alex Heneveld 
Authored: Wed Jan 20 20:49:13 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:07:13 2016 +

--
 .../core/mgmt/internal/BrooklynShutdownHooks.java|  4 +++-
 .../src/main/java/org/apache/brooklyn/cli/Main.java  | 11 ++-
 2 files changed, 9 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/88b76b71/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
index 677a4f6..91ca5dc 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
@@ -187,7 +187,9 @@ public class BrooklynShutdownHooks {
 }
 entitiesToStop.addAll(entitiesToStopOnShutdown);
 for (ManagementContext mgmt: 
managementContextsToStopAppsOnShutdown) {
-entitiesToStop.addAll(mgmt.getApplications());
+if (mgmt.isRunning()) {
+entitiesToStop.addAll(mgmt.getApplications());
+}
 }
 
 if (entitiesToStop.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/88b76b71/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java
--
diff --git 
a/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java 
b/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java
index 96527db..03be76e 100644
--- a/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java
+++ b/brooklyn-server/server-cli/src/main/java/org/apache/brooklyn/cli/Main.java
@@ -482,11 +482,12 @@ public class Main extends AbstractMain {
 waitAfterLaunch(mgmt, shutdownHandler);
 }
 
-// BrooklynShutdownHookJob will invoke terminate() to do 
mgmt.terminate() and BrooklynWebServer.stop();
-// and System.exit is invoked immediately after ...
-// but seems better to do it explicitly here. 
-// ('launcher' is local to us so the caller *cannot* do it, and no 
harm in doing it twice.) 
-launcher.terminate();
+// do not shutdown servers here here -- 
+// the BrooklynShutdownHookJob will invoke that and others on 
System.exit()
+// which happens immediately after.
+// might be nice to do it explicitly here, 
+// but the server shutdown process has some special "shutdown 
apps" options
+// so we'd want to refactor BrooklynShutdownHookJob to share code
 
 return null;
 }



[6/6] incubator-brooklyn git commit: This closes #1164

2016-01-20 Thread heneveld
This closes #1164


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

Branch: refs/heads/master
Commit: 5118860990e98881a522d377f3ceca6a1b5df868
Parents: 8303fea 11a0b8a
Author: Alex Heneveld 
Authored: Thu Jan 21 01:22:59 2016 +
Committer: Alex Heneveld 
Committed: Thu Jan 21 01:22:59 2016 +

--
 .../apache/brooklyn/core/entity/Entities.java   | 13 ++--
 .../internal/AbstractManagementContext.java | 11 ++-
 .../mgmt/internal/BrooklynShutdownHooks.java|  4 +-
 .../mgmt/internal/LocalManagementContext.java   | 29 +---
 .../brooklyn/rest/resources/ServerResource.java |  1 +
 .../brooklyn/rest/BrooklynRestApiLauncher.java  | 32 +++--
 .../rest/testing/BrooklynRestApiTest.java   |  8 +--
 .../rest/util/NoOpRecordingShutdownHandler.java | 39 ++
 .../util/ServerStoppingShutdownHandler.java | 75 
 .../brooklyn/rest/util/TestShutdownHandler.java | 39 --
 .../main/java/org/apache/brooklyn/cli/Main.java | 46 ++--
 11 files changed, 210 insertions(+), 87 deletions(-)
--




[2/6] incubator-brooklyn git commit: better shutdown

2016-01-20 Thread heneveld
better shutdown

call Main.terminate() in the main thread, rather than relying on shutdown hooks

fixes rest-initiated shutdown when using BrooklynJavascriptGuiLauncher
(looks like that has been broken since #771)


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

Branch: refs/heads/master
Commit: 2a432cf38a2fb0571e4f76604c3a532b1f89c2c6
Parents: 8303fea
Author: Alex Heneveld 
Authored: Wed Jan 20 15:56:07 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:07:12 2016 +

--
 .../mgmt/internal/LocalManagementContext.java   | 29 ++---
 .../brooklyn/rest/resources/ServerResource.java |  1 +
 .../brooklyn/rest/BrooklynRestApiLauncher.java  | 32 --
 .../rest/testing/BrooklynRestApiTest.java   |  8 +--
 .../rest/util/NoOpRecordingShutdownHandler.java | 39 
 .../util/ServerStoppingShutdownHandler.java | 67 
 .../brooklyn/rest/util/TestShutdownHandler.java | 39 
 .../main/java/org/apache/brooklyn/cli/Main.java | 45 +++--
 8 files changed, 181 insertions(+), 79 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a432cf3/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
index d88a500..76500bc 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalManagementContext.java
@@ -30,6 +30,7 @@ import java.util.Set;
 import java.util.WeakHashMap;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.brooklyn.api.effector.Effector;
 import org.apache.brooklyn.api.entity.Application;
@@ -116,6 +117,7 @@ public class LocalManagementContext extends 
AbstractManagementContext {
 return closed;
 }
 
+private AtomicBoolean terminated = new AtomicBoolean(false);
 private String managementPlaneId;
 private String managementNodeId;
 private BasicExecutionManager execution;
@@ -316,15 +318,26 @@ public class LocalManagementContext extends 
AbstractManagementContext {
 
 @Override
 public void terminate() {
-INSTANCES.remove(this);
-super.terminate();
-if (osgiManager!=null) {
-osgiManager.stop();
-osgiManager = null;
+synchronized (terminated) {
+if (terminated.getAndSet(true)) {
+log.trace("Already terminated management context "+this);
+// no harm in doing it twice, but it makes logs ugly!
+return;
+}
+log.debug("Terminating management context "+this);
+
+INSTANCES.remove(this);
+super.terminate();
+if (osgiManager!=null) {
+osgiManager.stop();
+osgiManager = null;
+}
+if (usageManager != null) usageManager.terminate();
+if (execution != null) execution.shutdownNow();
+if (gc != null) gc.shutdownNow();
+
+log.debug("Terminated management context "+this);
 }
-if (usageManager != null) usageManager.terminate();
-if (execution != null) execution.shutdownNow();
-if (gc != null) gc.shutdownNow();
 }
 
 @Override

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a432cf3/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
--
diff --git 
a/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
 
b/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
index a9fa4dc..e624d89 100644
--- 
a/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
+++ 
b/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
@@ -218,6 +218,7 @@ public class ServerResource extends 
AbstractBrooklynRestResource implements Serv
 if (shutdownHandler != null) {
  

[1/6] incubator-brooklyn git commit: prevent deadlock if requests coming in during startup

2016-01-20 Thread heneveld
Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 8303fea86 -> 511886099


prevent deadlock if requests coming in during startup


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

Branch: refs/heads/master
Commit: 2354c4867bc8de3e80bef200bf51424696a33dfc
Parents: 2a432cf
Author: Alex Heneveld 
Authored: Wed Jan 20 18:13:35 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:07:12 2016 +

--
 .../core/mgmt/internal/AbstractManagementContext.java| 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2354c486/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index d41e059..5d07ed6 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -372,10 +372,15 @@ public abstract class AbstractManagementContext 
implements ManagementContextInte
 return configMap;
 }
 
+private Object locationRegistrySemaphore = new Object();
+
 @Override
-public synchronized LocationRegistry getLocationRegistry() {
-if (locationRegistry==null) locationRegistry = new 
BasicLocationRegistry(this);
-return locationRegistry;
+public LocationRegistry getLocationRegistry() {
+// NB: can deadlock if synched on whole LMC
+synchronized (locationRegistrySemaphore) {
+if (locationRegistry==null) locationRegistry = new 
BasicLocationRegistry(this);
+return locationRegistry;
+}
 }
 
 @Override



[4/6] incubator-brooklyn git commit: background the dev-mode web server shutdown, and Entities.destroyAll is more graceful on concurrent shutdown

2016-01-20 Thread heneveld
background the dev-mode web server shutdown,
and Entities.destroyAll is more graceful on concurrent shutdown


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

Branch: refs/heads/master
Commit: db44cd77670672efcb6c3b44f81a716b76b072af
Parents: 2354c48
Author: Alex Heneveld 
Authored: Wed Jan 20 18:26:56 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:07:13 2016 +

--
 .../apache/brooklyn/core/entity/Entities.java   | 13 ---
 .../brooklyn/rest/resources/ServerResource.java |  2 +-
 .../util/ServerStoppingShutdownHandler.java | 38 
 3 files changed, 33 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/db44cd77/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
index 9297388..9c8ebc8 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/entity/Entities.java
@@ -805,10 +805,15 @@ public class Entities {
 ((ManagementContextInternal)mgmt).terminate();
 }
 if (error.get() != null) throw Exceptions.propagate(error.get());
-} catch (InterruptedException e) {
-throw Exceptions.propagate(e);
-} catch (ExecutionException e) {
-throw Exceptions.propagate(e);
+} catch (Exception e) {
+if (!mgmt.isRunning()) {
+// we've checked this above so it would only happen if a 
different thread stopped it;
+// this does happen sometimes e.g. in CliTest where the server 
shutdown occurs concurrently
+log.debug("Destroying apps gave an error, but mgmt context was 
concurrently stopped so not really a problem; swallowing (unless fatal): "+e);
+Exceptions.propagateIfFatal(e);
+} else {
+throw Exceptions.propagate(e);
+}
 } finally {
 executor.shutdownNow();
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/db44cd77/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
--
diff --git 
a/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
 
b/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
index e624d89..c029bd3 100644
--- 
a/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
+++ 
b/brooklyn-server/rest/rest-server/src/main/java/org/apache/brooklyn/rest/resources/ServerResource.java
@@ -218,7 +218,7 @@ public class ServerResource extends 
AbstractBrooklynRestResource implements Serv
 if (shutdownHandler != null) {
 shutdownHandler.onShutdownRequest();
 } else {
-// should always be set as it is required by 
jersey injection?
+// should normally be set, as @Context is required 
by jersey injection
 log.warn("ShutdownHandler not set, exiting 
process");
 System.exit(0);
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/db44cd77/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
--
diff --git 
a/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
 
b/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
index 7244378..78dde57 100644
--- 
a/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
+++ 
b/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
@@ -20,6 +20,8 @@ package org.apache.brooklyn.rest.util;
 
 import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
+import org.apache.brooklyn.util.time.Duration

[5/6] incubator-brooklyn git commit: address minor shutdown cleanup code review comments

2016-01-20 Thread heneveld
address minor shutdown cleanup code review 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/11a0b8ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/11a0b8ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/11a0b8ae

Branch: refs/heads/master
Commit: 11a0b8ae67af596a9cf09cf2e22683b5aa81a20f
Parents: 88b76b7
Author: Alex Heneveld 
Authored: Thu Jan 21 01:19:12 2016 +
Committer: Alex Heneveld 
Committed: Thu Jan 21 01:22:22 2016 +

--
 .../brooklyn/core/mgmt/internal/AbstractManagementContext.java | 2 +-
 .../apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/11a0b8ae/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index 5d07ed6..da9fcae 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -372,7 +372,7 @@ public abstract class AbstractManagementContext implements 
ManagementContextInte
 return configMap;
 }
 
-private Object locationRegistrySemaphore = new Object();
+private final Object locationRegistrySemaphore = new Object();
 
 @Override
 public LocationRegistry getLocationRegistry() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/11a0b8ae/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
--
diff --git 
a/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
 
b/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
index 78dde57..fc3bbc4 100644
--- 
a/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
+++ 
b/brooklyn-server/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/ServerStoppingShutdownHandler.java
@@ -67,7 +67,7 @@ public class ServerStoppingShutdownHandler implements 
ShutdownHandler {
 }).start();
 }
 
-/** Expect this to be injeted; typically it is not known when this is 
created, but we need it to trigger shutdown. */
+/** Expect this to be injected; typically it is not known when this is 
created, but we need it to trigger shutdown. */
 public void setServer(Server server) {
 this.server = server;
 }



[4/6] incubator-brooklyn git commit: code review for task-cancellation mode

2016-01-20 Thread heneveld
code review for task-cancellation mode


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

Branch: refs/heads/master
Commit: 54cba8a657f151f93eb3cb504ccbb94c6d1fc9c7
Parents: aed0786
Author: Alex Heneveld 
Authored: Wed Jan 20 21:01:20 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:01:38 2016 +

--
 .../apache/brooklyn/util/core/task/BasicExecutionManager.java| 3 ++-
 .../main/java/org/apache/brooklyn/util/core/task/BasicTask.java  | 1 +
 .../brooklyn/util/core/task/DynamicSequentialTaskTest.java   | 4 ++--
 3 files changed, 5 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/54cba8a6/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
index 2010613..0aab7d5 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionManager.java
@@ -576,6 +576,7 @@ public class BasicExecutionManager implements 
ExecutionManager {
 }
 }
 }
+// TODO this is inefficient; might want to keep an index on 
submitted-by
 for (Task t: execMgmt.getAllTasks()) {
 if (task.equals(t.getSubmittedByTask())) {
 if (mode.isAllowedToInterruptAllSubmittedTasks() || 
BrooklynTaskTags.isTransient(t)) {
@@ -740,7 +741,7 @@ public class BasicExecutionManager implements 
ExecutionManager {
 try {
 return ((Callable)callable).call();
 } catch (Throwable t) {
-throw Throwables.propagate(t);
+throw Exceptions.propagate(t);
 }
 }
 if (callable instanceof Runnable) { ((Runnable)callable).run(); return 
null; }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/54cba8a6/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
index c727d10..7c29bba 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
@@ -294,6 +294,7 @@ public class BasicTask implements TaskInternal {
 : TaskCancellationMode.DO_NOT_INTERRUPT);
 }
 
+@Override @Beta
 public synchronized boolean cancel(TaskCancellationMode mode) {
 if (isDone()) return false;
 if (log.isTraceEnabled()) {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/54cba8a6/brooklyn-server/core/src/test/java/org/apache/brooklyn/util/core/task/DynamicSequentialTaskTest.java
--
diff --git 
a/brooklyn-server/core/src/test/java/org/apache/brooklyn/util/core/task/DynamicSequentialTaskTest.java
 
b/brooklyn-server/core/src/test/java/org/apache/brooklyn/util/core/task/DynamicSequentialTaskTest.java
index 95f0952..364870a 100644
--- 
a/brooklyn-server/core/src/test/java/org/apache/brooklyn/util/core/task/DynamicSequentialTaskTest.java
+++ 
b/brooklyn-server/core/src/test/java/org/apache/brooklyn/util/core/task/DynamicSequentialTaskTest.java
@@ -267,14 +267,14 @@ public class DynamicSequentialTaskTest {
 
waitForMessages(Predicates.compose(MathPredicates.greaterThanOrEqual(2), 
CollectionFunctionals.sizeFunction()), TIMEOUT);
 Asserts.assertEquals(MutableSet.copyOf(messages), 
MutableSet.of("1-wait", "2-wait"));
 
-Time.sleep(Duration.millis(400));
-
 if (cancellationMode==null) {
 ((TaskInternal)t).cancel();
 } else if (cancellationMode instanceof Boolean) {
 t.cancel((Boolean)cancellationMode);
 } else if (cancellationMode instanceof TaskCancellationMode) {
 
((TaskInternal)t).cancel((TaskCancellationMode)cancellationMode);
+} else {
+throw new IllegalStateException("Invalid cancellationMode: 
"+cancell

[2/6] incubator-brooklyn git commit: clearer semantics for cancel, and cancel dependent submitted tasks by default

2016-01-20 Thread heneveld
clearer semantics for cancel, and cancel dependent submitted tasks by default

prevents leaks where dependent tasks (eg resolveValue) are submitted in the 
background,
then the caller is cancelled; the interruption was not propagated.  now by 
default it is,
to children tasks and to submitted transients, with options for other (weaker 
and stronger) cancellations.
see TaskInternal.cancel(TaskCancellationOptions), and new tests for cancelling 
children in DynamicSequentialTaskTest.

also remove deprecated loose-typing ExecutionUtils.invoke,
more TRACE logging for activities,
and wrap batch config in a task so more resolutions are nested


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

Branch: refs/heads/master
Commit: aed078633aaf40a4a9da907469700808a245cc78
Parents: 2f3e465
Author: Alex Heneveld 
Authored: Tue Jan 19 12:48:15 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 16:19:53 2016 +

--
 brooklyn-docs/guide/misc/release-notes.md   |   5 +
 .../java/org/apache/brooklyn/api/mgmt/Task.java |  18 +++
 .../spi/dsl/BrooklynDslDeferredSupplier.java|   2 +-
 .../core/objs/proxy/InternalEntityFactory.java  |   6 +-
 .../core/sensor/DependentConfiguration.java |   3 +-
 .../util/core/task/BasicExecutionContext.java   |  12 +-
 .../util/core/task/BasicExecutionManager.java   | 121 ---
 .../brooklyn/util/core/task/BasicTask.java  |  32 +++--
 .../util/core/task/DynamicSequentialTask.java   |  41 +--
 .../brooklyn/util/core/task/ExecutionUtils.java |  49 
 .../core/task/ListenableForwardingFuture.java   |  28 -
 .../brooklyn/util/core/task/ScheduledTask.java  |  14 +--
 .../brooklyn/util/core/task/TaskInternal.java   |  39 ++
 .../brooklyn/util/core/task/TaskPredicates.java |  16 +++
 .../task/BasicTaskExecutionPerformanceTest.java |   3 -
 .../core/task/DynamicSequentialTaskTest.java|  96 ++-
 .../core/task/NonBasicTaskExecutionTest.java|   5 +
 .../util/core/task/ScheduledExecutionTest.java  |   2 +-
 .../util/core/task/TaskPredicatesTest.java  |   4 +-
 .../rest/resources/EntityConfigResource.java|  34 --
 20 files changed, 409 insertions(+), 121 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed07863/brooklyn-docs/guide/misc/release-notes.md
--
diff --git a/brooklyn-docs/guide/misc/release-notes.md 
b/brooklyn-docs/guide/misc/release-notes.md
index 03ba4a3..721655d 100644
--- a/brooklyn-docs/guide/misc/release-notes.md
+++ b/brooklyn-docs/guide/misc/release-notes.md
@@ -49,3 +49,8 @@ parent or application root in YAML.
 
 For changes in prior versions, please refer to the release notes for 
 [0.8.0](/v/0.8.0-incubating/misc/release-notes.html).
+
+3. Task cancellation is now propagated to dependent submitted tasks, including 
backgrounded tasks if they are transient.
+Previously when a task was cancelled the API did not guarantee semantics but 
the behaviour was to cancel sub-tasks only 
+in very limited cases. Now the semantics are more precise and controllable, 
and more sub-tasks are cancelled.
+This can prevent some leaked waits on `attributeWhenReady`.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed07863/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/Task.java
--
diff --git 
a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/Task.java 
b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/Task.java
index c8f1c00..42147c5 100644
--- a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/Task.java
+++ b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/mgmt/Task.java
@@ -81,6 +81,24 @@ public interface Task extends ListenableFuture, 
TaskAdaptable {
 public boolean isError();
 
 /**
+ * As {@link Future#isDone()}. In particular if cancelled, this will 
return true
+ * as soon as it is cancelled. The thread for this task may still be 
running,
+ * if the cancellation (often an interruption, but may be weaker) has not 
applied,
+ * and submitted threads may also be running depending on cancellation 
parameters.
+ * 
+ * {@link #get()} is guaranteed to return immediately, throwing in the 
case of cancellation
+ * prior to completion (and including the case above where a thread may 
still be running).
+ * 
+ * To check whether cancelled threads for this task have completed, 
+ * inspect {@link #getEndTimeUtc()}, which is guarant

[3/6] incubator-brooklyn git commit: address code review for #1162

2016-01-20 Thread heneveld
address code review for #1162


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

Branch: refs/heads/master
Commit: 47e2aec26e10ab2abb24fbc14eeb8895e13c116f
Parents: 1affd4d
Author: Alex Heneveld 
Authored: Wed Jan 20 20:53:04 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 20:53:30 2016 +

--
 .../apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java   | 2 +-
 .../apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/47e2aec2/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
--
diff --git 
a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
 
b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
index c4701c6..789d282 100644
--- 
a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
+++ 
b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
@@ -125,7 +125,7 @@ public abstract class AbstractBrooklynObjectSpec tagsToReplace) {
 this.tags.clear();
 Iterables.addAll(this.tags, tagsToReplace);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/47e2aec2/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
--
diff --git 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index cfa51e3..5ba36b3 100644
--- 
a/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ 
b/brooklyn-server/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -103,7 +103,7 @@ public abstract class AbstractTypePlanTransformer 
implements BrooklynTypePlanTra
 @Override protected Object visitSpec() {
 try { 
 AbstractBrooklynObjectSpec result = 
createSpec(type, context);
-// see notes in CampResolver setting catalogItemId; we 
might need to keep both
+// see notes on catalogItemIdIfNotNull
 result.catalogItemIdIfNotNull(type.getId());
 return result;
 } catch (Exception e) { throw Exceptions.propagate(e); }



[1/6] incubator-brooklyn git commit: for chained references, prefer outer catalog item id, and outer tags

2016-01-20 Thread heneveld
Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 27cd0920d -> 8303fea86


for chained references, prefer outer catalog item id, and outer tags

as described in changes to release-notes.md


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

Branch: refs/heads/master
Commit: 1affd4d606d17136d3e334d08f401398f1ff3c96
Parents: 7d2ae06
Author: Alex Heneveld 
Authored: Wed Jan 20 12:08:31 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 12:09:56 2016 +

--
 brooklyn-docs/guide/misc/release-notes.md   |  4 +-
 .../internal/AbstractBrooklynObjectSpec.java| 25 +++-
 .../brooklyn/spi/creation/CampResolver.java |  2 +-
 .../catalog/CatalogYamlTemplateTest.java| 40 
 .../core/mgmt/EntityManagementUtils.java| 18 -
 .../typereg/AbstractTypePlanTransformer.java|  3 +-
 .../core/typereg/BasicRegisteredType.java   |  1 +
 7 files changed, 80 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1affd4d6/brooklyn-docs/guide/misc/release-notes.md
--
diff --git a/brooklyn-docs/guide/misc/release-notes.md 
b/brooklyn-docs/guide/misc/release-notes.md
index 03ba4a3..f65e77d 100644
--- a/brooklyn-docs/guide/misc/release-notes.md
+++ b/brooklyn-docs/guide/misc/release-notes.md
@@ -45,7 +45,9 @@ can be used to traverse the hierarchy.  It also means that 
when a type in the re
 and a caller references it, that location will now take priority over a 
location defined in a parent.
 Additionally, any locations specified in YAML extending the registered type 
will now *replace* locations on the referenced type;
 this means in many cases an explicit `locations: []` when extending a type 
will cause locations to be taken from the
-parent or application root in YAML.  
+parent or application root in YAML. Related to this, tags from referencing 
specs now preceed tags in the referenced types,
+and the referencing catalog item ID also takes priority; this has no effect in 
most cases, but if you have a chain of
+referenced types blueprint plan source code and the catalog item ID are now 
set correctly. 
 
 For changes in prior versions, please refer to the release notes for 
 [0.8.0](/v/0.8.0-incubating/misc/release-notes.html).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1affd4d6/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
--
diff --git 
a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
 
b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
index 560c499..c4701c6 100644
--- 
a/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
+++ 
b/brooklyn-server/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
@@ -83,7 +83,7 @@ public abstract class AbstractBrooklynObjectSpec type);
@@ -97,6 +97,19 @@ public abstract class AbstractBrooklynObjectSpec tagsToAdd) {
+return tagsAdd(tagsToAdd);
+}
+/** adds the given tags */
+public SpecT tagsAdd(Iterable tagsToAdd) {
 Iterables.addAll(this.tags, tagsToAdd);
 return self();
 }
+/** replaces the given tags */
+public SpecT tagsReplace(Iterable tagsToReplace) {
+this.tags.clear();
+Iterables.addAll(this.tags, tagsToReplace);
+return self();
+}
 
 // TODO which semantics are correct? replace has been the behaviour;
 // add breaks tests and adds unwanted parameters,

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1affd4d6/brooklyn-server/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
--
diff --git 
a/brooklyn-server/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
 
b/brooklyn-server/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
index 7523343..5639945 100644
--- 
a/brooklyn-server/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
+++ 
b/brooklyn-server/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampResolver.java
@@ -114,7 +114,7 @@ class CampResolver {
 throw new IllegalSta

[6/6] incubator-brooklyn git commit: This closes #1160

2016-01-20 Thread heneveld
This closes #1160


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

Branch: refs/heads/master
Commit: 8303fea866a9d39c58dc7174f73543477b6e73bc
Parents: 2a164a8 54cba8a
Author: Alex Heneveld 
Authored: Wed Jan 20 21:04:20 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:04:20 2016 +

--
 brooklyn-docs/guide/misc/release-notes.md   |   5 +
 .../java/org/apache/brooklyn/api/mgmt/Task.java |  18 +++
 .../spi/dsl/BrooklynDslDeferredSupplier.java|   2 +-
 .../core/objs/proxy/InternalEntityFactory.java  |   6 +-
 .../core/sensor/DependentConfiguration.java |   3 +-
 .../util/core/task/BasicExecutionContext.java   |  12 +-
 .../util/core/task/BasicExecutionManager.java   | 122 ---
 .../brooklyn/util/core/task/BasicTask.java  |  33 +++--
 .../util/core/task/DynamicSequentialTask.java   |  41 +--
 .../brooklyn/util/core/task/ExecutionUtils.java |  49 
 .../core/task/ListenableForwardingFuture.java   |  28 -
 .../brooklyn/util/core/task/ScheduledTask.java  |  14 +--
 .../brooklyn/util/core/task/TaskInternal.java   |  39 ++
 .../brooklyn/util/core/task/TaskPredicates.java |  16 +++
 .../task/BasicTaskExecutionPerformanceTest.java |   3 -
 .../core/task/DynamicSequentialTaskTest.java|  96 ++-
 .../core/task/NonBasicTaskExecutionTest.java|   5 +
 .../util/core/task/ScheduledExecutionTest.java  |   2 +-
 .../util/core/task/TaskPredicatesTest.java  |   4 +-
 .../rest/resources/EntityConfigResource.java|  34 --
 20 files changed, 411 insertions(+), 121 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8303fea8/brooklyn-docs/guide/misc/release-notes.md
--



[5/6] incubator-brooklyn git commit: This closes #1162

2016-01-20 Thread heneveld
This closes #1162


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

Branch: refs/heads/master
Commit: 2a164a82f388e659f2c66dd8402c47ab6dfc0f90
Parents: 27cd092 47e2aec
Author: Alex Heneveld 
Authored: Wed Jan 20 21:04:15 2016 +
Committer: Alex Heneveld 
Committed: Wed Jan 20 21:04:15 2016 +

--
 brooklyn-docs/guide/misc/release-notes.md   |  4 +-
 .../internal/AbstractBrooklynObjectSpec.java| 25 +++-
 .../brooklyn/spi/creation/CampResolver.java |  2 +-
 .../catalog/CatalogYamlTemplateTest.java| 40 
 .../core/mgmt/EntityManagementUtils.java| 18 -
 .../typereg/AbstractTypePlanTransformer.java|  3 +-
 .../core/typereg/BasicRegisteredType.java   |  1 +
 7 files changed, 80 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a164a82/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
--
diff --cc 
brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
index a759fed,78c1bf7..d83711c
--- 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
+++ 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
@@@ -40,7 -40,9 +40,8 @@@ import org.apache.brooklyn.entity.group
  import org.apache.brooklyn.entity.stock.BasicApplication;
  import org.apache.brooklyn.test.Asserts;
  import org.apache.brooklyn.test.support.TestResourceUnavailableException;
+ import org.apache.brooklyn.util.core.config.ConfigBag;
  import org.apache.brooklyn.util.osgi.OsgiTestResources;
 -import org.python.google.common.collect.Iterables;
  import org.testng.Assert;
  import org.testng.TestListenerAdapter;
  import org.testng.TestNG;



[2/3] incubator-brooklyn git commit: Fix EmptySoftwareProcessYamlTest

2016-01-20 Thread aledsage
Fix EmptySoftwareProcessYamlTest

See https://github.com/brooklyncentral/brooklyn/issues/1377

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

Branch: refs/heads/master
Commit: 7191c7bc6643f4b8b71418165008934dd73a67ad
Parents: 2f3e465
Author: Aled Sage 
Authored: Tue Jan 19 14:55:28 2016 +
Committer: Aled Sage 
Committed: Wed Jan 20 10:28:51 2016 +

--
 .../brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7191c7bc/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
--
diff --git 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
index bb3eeb9..06badd6 100644
--- 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
+++ 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
@@ -25,12 +25,12 @@ import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.util.collections.Jsonya;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.Jsonya;
 
 @Test
 public class EmptySoftwareProcessYamlTest extends AbstractYamlTest {
@@ -97,6 +97,6 @@ public class EmptySoftwareProcessYamlTest extends 
AbstractYamlTest {
 Location actualMachine = entityLocationIterator.next();
 Assert.assertTrue(actualMachine instanceof SshMachineLocation, "wrong 
location: "+actualMachine);
 // TODO this, below, probably should be 'localhost on entity', see 
#1377
-Assert.assertEquals(actualMachine.getParent().getDisplayName(), 
"loopback on app");
+Assert.assertEquals(actualMachine.getParent().getDisplayName(), 
"localhost on entity");
 }
 }



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

2016-01-20 Thread aledsage
This closes #1163


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

Branch: refs/heads/master
Commit: 27cd0920d8aace4c6192d45821f8306d027c3f4e
Parents: 2f3e465 56f9cdd
Author: Aled Sage 
Authored: Wed Jan 20 16:09:17 2016 +
Committer: Aled Sage 
Committed: Wed Jan 20 16:09:17 2016 +

--
 .../brooklyn/EmptySoftwareProcessYamlTest.java  | 28 +-
 .../brooklyn/EmptyWindowsProcessYamlTest.java   | 51 ++
 .../software/base/EmptySoftwareProcess.java |  4 +
 .../software/base/EmptySoftwareProcessImpl.java | 12 ++-
 .../software/base/EmptyWindowsProcess.java  | 38 
 .../base/EmptyWindowsProcessDriver.java | 22 +
 .../software/base/EmptyWindowsProcessImpl.java  | 49 ++
 .../base/EmptyWindowsProcessWinRmDriver.java| 97 
 8 files changed, 297 insertions(+), 4 deletions(-)
--




[1/3] incubator-brooklyn git commit: Adds EmptyWindowsProcess

2016-01-20 Thread aledsage
Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 2f3e465cd -> 27cd0920d


Adds EmptyWindowsProcess

- Includes EmptyWindowsProcess.USE_WINRM_MONITORING, for disabling 
  checking of WinRM connectivity.
- Adds EmptySoftwareProcess.USE_SSH_MONITORING, for disabling checking 
  of ssh connectivity.

With EmptyWindowsProcess, one can provision an entity that will not 
execute anything on the box. That makes it usable even if there is
no direct WinRM connectivity to the box.

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

Branch: refs/heads/master
Commit: 56f9cdda95451dcf58b80e2aab44c8be34e94d0a
Parents: 7191c7b
Author: Aled Sage 
Authored: Tue Jan 19 14:57:47 2016 +
Committer: Aled Sage 
Committed: Wed Jan 20 10:28:51 2016 +

--
 .../brooklyn/EmptySoftwareProcessYamlTest.java  | 22 +
 .../brooklyn/EmptyWindowsProcessYamlTest.java   | 51 ++
 .../software/base/EmptySoftwareProcess.java |  4 +
 .../software/base/EmptySoftwareProcessImpl.java | 12 ++-
 .../software/base/EmptyWindowsProcess.java  | 38 
 .../base/EmptyWindowsProcessDriver.java | 22 +
 .../software/base/EmptyWindowsProcessImpl.java  | 49 ++
 .../base/EmptyWindowsProcessWinRmDriver.java| 97 
 8 files changed, 294 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/56f9cdda/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
--
diff --git 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
index 06badd6..0554917 100644
--- 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
+++ 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptySoftwareProcessYamlTest.java
@@ -23,15 +23,21 @@ import java.util.Map;
 
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
 import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.entity.EntityAsserts;
 import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.test.EntityTestUtils;
 import org.apache.brooklyn.util.collections.Jsonya;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.Iterables;
+
 @Test
 public class EmptySoftwareProcessYamlTest extends AbstractYamlTest {
 private static final Logger log = 
LoggerFactory.getLogger(EnrichersYamlTest.class);
@@ -99,4 +105,20 @@ public class EmptySoftwareProcessYamlTest extends 
AbstractYamlTest {
 // TODO this, below, probably should be 'localhost on entity', see 
#1377
 Assert.assertEquals(actualMachine.getParent().getDisplayName(), 
"localhost on entity");
 }
+
+@Test(groups="Integration")
+public void testNoSshing() throws Exception {
+Entity app = createAndStartApplication(
+"location: byon:(hosts=\"1.2.3.4\")",
+"services:",
+"- type: "+EmptySoftwareProcess.class.getName(),
+"  brooklyn.config:",
+"sshMonitoring.enabled: false",
+"
"+BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION.getName()+": true");
+waitForApplicationTasks(app);
+
+EmptySoftwareProcess entity = 
Iterables.getOnlyElement(Entities.descendants(app, EmptySoftwareProcess.class));
+EntityAsserts.assertAttributeEqualsEventually(entity, 
Attributes.SERVICE_UP, true);
+EntityAsserts.assertAttributeEqualsContinually(entity, 
Attributes.SERVICE_UP, true);
+}
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/56f9cdda/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java
--
diff --git 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EmptyWindowsProcessYamlTest.java
 
b/brooklyn-server/camp/camp-brooklyn/src/tes

[2/2] incubator-brooklyn git commit: This closes #1158

2016-01-20 Thread aledsage
This closes #1158


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

Branch: refs/heads/master
Commit: 2f3e465cdebd884cac0bef985f7f2ff96e221347
Parents: 7d2ae06 70f379e
Author: Aled Sage 
Authored: Wed Jan 20 10:27:02 2016 +
Committer: Aled Sage 
Committed: Wed Jan 20 10:27:02 2016 +

--
 .../catalog/CatalogYamlTemplateTest.java|   3 +-
 .../location/jclouds/JcloudsLocation.java   |   4 +-
 brooklyn-server/pom.xml |   2 +-
 .../AbstractSoftwareProcessWinRmDriver.java |   8 +-
 .../location/WinRmMachineLocationLiveTest.java  |  36 ++--
 .../windows/WindowsPerformanceCounterFeed.java  |   4 +-
 .../location/winrm/WinRmMachineLocation.java|  41 +++-
 .../util/core/internal/winrm/WinRmTool.java |   9 +
 .../internal/winrm/pywinrm/Winrm4jTool.java | 209 --
 .../internal/winrm/winrm4j/Winrm4jTool.java | 215 +++
 .../WindowsPerformanceCounterFeedLiveTest.java  |  20 +-
 11 files changed, 295 insertions(+), 256 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2f3e465c/brooklyn-server/pom.xml
--



[1/2] incubator-brooklyn git commit: winrm: switch to winrm4j v0.2.0, from 0.1.0

2016-01-20 Thread aledsage
Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 7d2ae06ec -> 2f3e465cd


winrm: switch to winrm4j v0.2.0, from 0.1.0

- This is a pure-java WinRM client, so removes the jython depenpdency.
- Also changes WinRmTool.executeScript(...) to executeCommand(…),
  and WinRmMachineLocation.executeScript to executeCommand.
- Fixes WindowsPerformanceCounterFeedLiveTest
- Renames Winrm4jTool’s package (from pywinrm to winrm4j).
- Fixes imports that used org.python


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

Branch: refs/heads/master
Commit: 70f379e47d0656dc8eeeb95e858dfe03b6aae33b
Parents: 981f7c7
Author: Aled Sage 
Authored: Mon Jan 18 21:29:13 2016 +
Committer: Aled Sage 
Committed: Tue Jan 19 21:32:51 2016 +

--
 .../catalog/CatalogYamlTemplateTest.java|   3 +-
 .../location/jclouds/JcloudsLocation.java   |   4 +-
 brooklyn-server/pom.xml |   2 +-
 .../AbstractSoftwareProcessWinRmDriver.java |   8 +-
 .../location/WinRmMachineLocationLiveTest.java  |  36 ++--
 .../windows/WindowsPerformanceCounterFeed.java  |   4 +-
 .../location/winrm/WinRmMachineLocation.java|  41 +++-
 .../util/core/internal/winrm/WinRmTool.java |   9 +
 .../internal/winrm/pywinrm/Winrm4jTool.java | 209 --
 .../internal/winrm/winrm4j/Winrm4jTool.java | 215 +++
 .../WindowsPerformanceCounterFeedLiveTest.java  |  20 +-
 11 files changed, 295 insertions(+), 256 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/70f379e4/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
--
diff --git 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
index 165fd49..a759fed 100644
--- 
a/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
+++ 
b/brooklyn-server/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlTemplateTest.java
@@ -41,12 +41,13 @@ import org.apache.brooklyn.entity.stock.BasicApplication;
 import org.apache.brooklyn.test.Asserts;
 import org.apache.brooklyn.test.support.TestResourceUnavailableException;
 import org.apache.brooklyn.util.osgi.OsgiTestResources;
-import org.python.google.common.collect.Iterables;
 import org.testng.Assert;
 import org.testng.TestListenerAdapter;
 import org.testng.TestNG;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.Iterables;
+
 
 public class CatalogYamlTemplateTest extends AbstractYamlTest {
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/70f379e4/brooklyn-server/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
--
diff --git 
a/brooklyn-server/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
 
b/brooklyn-server/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index 20897d9..05972a2 100644
--- 
a/brooklyn-server/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/brooklyn-server/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -862,7 +862,7 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 String scriptContent = 
ResourceUtils.create(this).getResourceAsString(setupScriptItem);
 String script = 
TemplateProcessor.processTemplateContents(scriptContent, 
getManagementContext(), substitutions);
 if (windows) {
-
((WinRmMachineLocation)machineLocation).executeScript(ImmutableList.copyOf((script.replace("\r",
 "").split("\n";
+
((WinRmMachineLocation)machineLocation).executeCommand(ImmutableList.copyOf((script.replace("\r",
 "").split("\n";
 } else {
 
((SshMachineLocation)machineLocation).execCommands("Customizing node " + this, 
ImmutableList.of(script));
 }
@@ -2664,7 +2664,7 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 pub