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/03/19 15:07:25 UTC
[07/19] incubator-brooklyn git commit: Don't shutdown BrooklynNode if
STOP_PROCESS_MODE says so.
Don't shutdown BrooklynNode if STOP_PROCESS_MODE says so.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/92951dc3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/92951dc3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/92951dc3
Branch: refs/heads/master
Commit: 92951dc3dadbeea66928a84b08e76d8ff0399ae2
Parents: e583aa3
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Fri Feb 27 17:08:35 2015 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Mar 19 16:01:29 2015 +0200
----------------------------------------------------------------------
.../entity/brooklynnode/BrooklynNodeImpl.java | 14 +++++++++++++-
.../software/MachineLifecycleEffectorTasks.java | 15 +++++++++------
.../software/MachineLifecycleEffectorTasksTest.java | 8 +++++++-
3 files changed, 29 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/92951dc3/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
index 3827971..2ac59de 100644
--- a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
+++ b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
@@ -47,6 +47,7 @@ import brooklyn.entity.brooklynnode.effector.SetHighAvailabilityModeEffectorBody
import brooklyn.entity.brooklynnode.effector.SetHighAvailabilityPriorityEffectorBody;
import brooklyn.entity.effector.EffectorBody;
import brooklyn.entity.effector.Effectors;
+import brooklyn.entity.software.MachineLifecycleEffectorTasks;
import brooklyn.entity.trait.Startable;
import brooklyn.event.feed.ConfigToAttributes;
import brooklyn.event.feed.http.HttpFeed;
@@ -155,7 +156,18 @@ public class BrooklynNodeImpl extends SoftwareProcessImpl implements BrooklynNod
@Override
protected void preStop() {
super.preStop();
- shutdownGracefully();
+ if (MachineLifecycleEffectorTasks.canStop(getStopProcessModeParam(), this)) {
+ shutdownGracefully();
+ }
+ }
+
+ private StopMode getStopProcessModeParam() {
+ ConfigBag parameters = BrooklynTaskTags.getCurrentEffectorParameters();
+ if (parameters != null) {
+ return parameters.get(StopSoftwareParameters.STOP_PROCESS_MODE);
+ } else {
+ return StopSoftwareParameters.STOP_PROCESS_MODE.getDefaultValue();
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/92951dc3/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
index 0edd488..e64e078 100644
--- a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
+++ b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
@@ -45,8 +45,8 @@ import brooklyn.entity.basic.Lifecycle;
import brooklyn.entity.basic.ServiceStateLogic;
import brooklyn.entity.basic.SoftwareProcess;
import brooklyn.entity.basic.SoftwareProcess.RestartSoftwareParameters;
-import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters;
import brooklyn.entity.basic.SoftwareProcess.RestartSoftwareParameters.RestartMachineMode;
+import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters;
import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters.StopMode;
import brooklyn.entity.effector.EffectorBody;
import brooklyn.entity.effector.Effectors;
@@ -571,8 +571,6 @@ public abstract class MachineLifecycleEffectorTasks {
}
}
- boolean isEntityStopped = entity().getAttribute(SoftwareProcess.SERVICE_STATE_ACTUAL)==Lifecycle.STOPPED;
-
DynamicTasks.queue("pre-stop", new Callable<String>() { public String call() {
if (entity().getAttribute(SoftwareProcess.SERVICE_STATE_ACTUAL)==Lifecycle.STOPPED) {
log.debug("Skipping stop of entity "+entity()+" when already stopped");
@@ -586,7 +584,7 @@ public abstract class MachineLifecycleEffectorTasks {
Maybe<SshMachineLocation> sshMachine = Machines.findUniqueSshMachineLocation(entity().getLocations());
Task<String> stoppingProcess = null;
- if (canStop(stopProcessMode, isEntityStopped)) {
+ if (canStop(stopProcessMode, entity())) {
stoppingProcess = DynamicTasks.queue("stopping (process)", new Callable<String>() { public String call() {
DynamicTasks.markInessential();
stopProcessesAtMachine();
@@ -652,9 +650,14 @@ public abstract class MachineLifecycleEffectorTasks {
if (log.isDebugEnabled()) log.debug("Stopped software process entity "+entity());
}
- protected static boolean canStop(StopMode stopMode, boolean isTargetStopped) {
+ public static boolean canStop(StopMode stopMode, Entity entity) {
+ boolean isEntityStopped = entity.getAttribute(SoftwareProcess.SERVICE_STATE_ACTUAL)==Lifecycle.STOPPED;
+ return canStop(stopMode, isEntityStopped);
+ }
+
+ protected static boolean canStop(StopMode stopMode, boolean isStopped) {
return stopMode == StopMode.ALWAYS ||
- stopMode == StopMode.IF_NOT_STOPPED && !isTargetStopped;
+ stopMode == StopMode.IF_NOT_STOPPED && !isStopped;
}
private void checkCompatibleMachineModes(Boolean isStopMachine, boolean hasStopMachineMode, StopMode stopMachineMode) {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/92951dc3/software/base/src/test/java/brooklyn/entity/software/MachineLifecycleEffectorTasksTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/brooklyn/entity/software/MachineLifecycleEffectorTasksTest.java b/software/base/src/test/java/brooklyn/entity/software/MachineLifecycleEffectorTasksTest.java
index 223d00b..2e73ca7 100644
--- a/software/base/src/test/java/brooklyn/entity/software/MachineLifecycleEffectorTasksTest.java
+++ b/software/base/src/test/java/brooklyn/entity/software/MachineLifecycleEffectorTasksTest.java
@@ -23,11 +23,17 @@ import static org.testng.Assert.assertEquals;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
+import brooklyn.entity.basic.BasicEntityImpl;
+import brooklyn.entity.basic.Lifecycle;
+import brooklyn.entity.basic.SoftwareProcess;
import brooklyn.entity.basic.SoftwareProcess.StopSoftwareParameters.StopMode;
public class MachineLifecycleEffectorTasksTest {
public static boolean canStop(StopMode stopMode, boolean isEntityStopped) {
- return MachineLifecycleEffectorTasks.canStop(stopMode, isEntityStopped);
+ BasicEntityImpl entity = new BasicEntityImpl();
+ Lifecycle state = isEntityStopped ? Lifecycle.STOPPED : Lifecycle.RUNNING;
+ entity.setAttribute(SoftwareProcess.SERVICE_STATE_ACTUAL, state);
+ return MachineLifecycleEffectorTasks.canStop(stopMode, entity);
}
@DataProvider(name = "canStopStates")