Repository: incubator-brooklyn Updated Branches: refs/heads/master f34f0433b -> d3cefa381
Pass EntitlementContext to effectors Do that explicitly for expunge Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/511a3e16 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/511a3e16 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/511a3e16 Branch: refs/heads/master Commit: 511a3e167f49e6c88cd662cea4f86828a2a41a1c Parents: f34f043 Author: Valentin Aitken <[email protected]> Authored: Thu Sep 24 00:08:55 2015 +0300 Committer: Valentin Aitken <[email protected]> Committed: Thu Sep 24 09:59:01 2015 +0300 ---------------------------------------------------------------------- .../core/mgmt/internal/EffectorUtils.java | 13 +++++++---- .../MachineLifecycleEffectorTasks.java | 23 ++++++++++++++++++-- .../rest/util/BrooklynRestResourceUtils.java | 11 ++++++++-- 3 files changed, 39 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/511a3e16/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java index fa7eaaa..c6ec3ac 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java @@ -36,6 +36,7 @@ import org.apache.brooklyn.api.mgmt.Task; import org.apache.brooklyn.core.effector.BasicParameterType; import org.apache.brooklyn.core.entity.EntityInternal; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; +import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.util.collections.MutableList; import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.config.ConfigBag; @@ -340,15 +341,19 @@ public class EffectorUtils { /** returns a (mutable) map of the standard flags which should be placed on an effector */ public static Map<Object,Object> getTaskFlagsForEffectorInvocation(Entity entity, Effector<?> effector, ConfigBag parameters) { + List<Object> tags = MutableList.of( + BrooklynTaskTags.EFFECTOR_TAG, + BrooklynTaskTags.tagForEffectorCall(entity, effector.getName(), parameters), + BrooklynTaskTags.tagForTargetEntity(entity)); + if (Entitlements.getEntitlementContext() != null) { + tags.add(BrooklynTaskTags.tagForEntitlement(Entitlements.getEntitlementContext())); + } return MutableMap.builder() .put("description", "Invoking effector "+effector.getName() +" on "+entity.getDisplayName() +(parameters!=null ? " with parameters "+parameters.getAllConfig() : "")) .put("displayName", effector.getName()) - .put("tags", MutableList.of( - BrooklynTaskTags.EFFECTOR_TAG, - BrooklynTaskTags.tagForEffectorCall(entity, effector.getName(), parameters), - BrooklynTaskTags.tagForTargetEntity(entity))) + .put("tags", tags) .build(); } http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/511a3e16/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java index f57c6d3..b8e429b 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java @@ -57,6 +57,7 @@ import org.apache.brooklyn.core.location.Locations; import org.apache.brooklyn.core.location.Machines; import org.apache.brooklyn.core.location.cloud.CloudLocationConfig; import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; +import org.apache.brooklyn.core.mgmt.entitlement.Entitlements; import org.apache.brooklyn.entity.machine.MachineInitTasks; import org.apache.brooklyn.entity.machine.ProvidesProvisioningFlags; import org.apache.brooklyn.entity.software.base.SoftwareProcess; @@ -65,6 +66,7 @@ import org.apache.brooklyn.entity.software.base.SoftwareProcess.StopSoftwarePara import org.apache.brooklyn.entity.software.base.SoftwareProcess.RestartSoftwareParameters.RestartMachineMode; import org.apache.brooklyn.entity.software.base.SoftwareProcess.StopSoftwareParameters.StopMode; import org.apache.brooklyn.entity.stock.EffectorStartableImpl.StartParameters; +import org.apache.brooklyn.util.collections.MutableSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -618,7 +620,16 @@ public abstract class MachineLifecycleEffectorTasks { if (isRestartMachine==RestartMachineMode.FALSE) { DynamicTasks.queue("stopping (process)", new StopProcessesAtMachineTask()); } else { - DynamicTasks.queue("stopping (machine)", new StopMachineTask()); + Map<String, Object> stopMachineFlags = MutableMap.of(); + if (Entitlements.getEntitlementContext() != null) { + stopMachineFlags.put("tags", MutableSet.of(BrooklynTaskTags.tagForEntitlement(Entitlements.getEntitlementContext()))); + } + Task<String> stopTask = Tasks.<String>builder() + .displayName("stopping (machine)") + .body(new StopMachineTask()) + .flags(stopMachineFlags) + .build(); + DynamicTasks.queue(stopTask); } DynamicTasks.queue("starting", new StartInLocationsTask()); @@ -706,7 +717,15 @@ public abstract class MachineLifecycleEffectorTasks { Task<StopMachineDetails<Integer>> stoppingMachine = null; if (canStop(stopMachineMode, machine.isAbsent())) { // Release this machine (even if error trying to stop process - we rethrow that after) - stoppingMachine = DynamicTasks.queue("stopping (machine)", stopTask); + Map<String, Object> stopMachineFlags = MutableMap.of(); + if (Entitlements.getEntitlementContext() != null) { + stopMachineFlags.put("tags", MutableSet.of(BrooklynTaskTags.tagForEntitlement(Entitlements.getEntitlementContext()))); + } + Task<StopMachineDetails<Integer>> stopMachineTask = Tasks.<StopMachineDetails<Integer>>builder() + .displayName("stopping (machine)") + .body(stopTask).flags(stopMachineFlags) + .build(); + stoppingMachine = DynamicTasks.queue(stopMachineTask); DynamicTasks.drain(entity().getConfig(STOP_PROCESS_TIMEOUT), false); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/511a3e16/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java index c1f6334..1c16e2a 100644 --- a/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java +++ b/usage/rest-server/src/main/java/org/apache/brooklyn/rest/util/BrooklynRestResourceUtils.java @@ -22,6 +22,7 @@ import static org.apache.brooklyn.rest.util.WebResourceUtils.notFound; import static com.google.common.collect.Iterables.transform; import groovy.lang.GroovyClassLoader; +import java.io.Serializable; import java.lang.reflect.Constructor; import java.net.URI; import java.util.ArrayList; @@ -35,6 +36,8 @@ import java.util.concurrent.Future; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.apache.brooklyn.core.mgmt.BrooklynTaskTags; +import org.apache.brooklyn.util.collections.MutableSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.brooklyn.api.catalog.BrooklynCatalog; @@ -444,9 +447,13 @@ public class BrooklynRestResourceUtils { if (mgmt.getEntitlementManager().isEntitled(Entitlements.getEntitlementContext(), Entitlements.INVOKE_EFFECTOR, Entitlements.EntityAndItem.of(entity, StringAndArgument.of("expunge", MutableMap.of("release", release))))) { + Map<String, Object> flags = MutableMap.<String, Object>of("displayName", "expunging " + entity, "description", "REST call to expunge entity " + + entity.getDisplayName() + " (" + entity + ")"); + if (Entitlements.getEntitlementContext() != null) { + flags.put("tags", MutableSet.of(BrooklynTaskTags.tagForEntitlement(Entitlements.getEntitlementContext()))); + } return mgmt.getExecutionManager().submit( - MutableMap.of("displayName", "expunging " + entity, "description", "REST call to expunge entity " - + entity.getDisplayName() + " (" + entity + ")"), new Runnable() { + flags, new Runnable() { @Override public void run() { if (release)
