@Override public String call(ConfigBag params) { switch (executionTarget) { case ENTITY: return callOne(params); case MEMBERS: return callMany(((Group)entity()).getMembers(), params); case CHILDREN: return callMany(entity().getChildren(), params); default: throw new IllegalStateException("Unknown value passed as execution target: " + executionTarget); } }
env = MutableMap.copyOf(resolveEnv(env)); } catch (InterruptedException | ExecutionException e) { Exceptions.propagateIfFatal(e); ShellEnvironmentSerializer serializer = new ShellEnvironmentSerializer(entity().getManagementContext());
public String callMany(Collection<Entity> targets, ConfigBag params) { TaskBuilder<Object> ptb = Tasks.builder().parallel(true).displayName("effector "+effector.getName()+" ssh to targets"); for (Entity target: targets) { if (Entities.isNoLongerManaged(target)) continue; Lifecycle state = target.getAttribute(Attributes.SERVICE_STATE_ACTUAL); if (state==Lifecycle.STOPPING || state==Lifecycle.STOPPED) continue; Maybe<SshMachineLocation> machine = Locations.findUniqueSshMachineLocation(target.getLocations()); if (machine.isAbsent()) continue; SshEffectorTaskFactory<String> t = makePartialTaskFactory(params, target); t.summary("effector "+effector.getName()+" at "+target); t.machine( machine.get() ); ptb.add(t.newTask()); } queue(ptb.build()).getUnchecked(); return null; }
public String callOne(ConfigBag params) { return queue( makePartialTaskFactory(params, entity()) .summary("effector "+effector.getName()+" ssh call") ).get(); } public String callMany(Collection<Entity> targets, ConfigBag params) {
public static EffectorBuilder<String> newEffectorBuilder(ConfigBag params) { EffectorBuilder<String> eff = AddEffector.newEffectorBuilder(String.class, params); eff.impl(new Body(eff.buildAbstract(), params)); return eff; }
@SuppressWarnings("unchecked") private Map<String, Object> resolveEnv(MutableMap<String, Object> env) throws ExecutionException, InterruptedException { return (Map<String, Object>) Tasks.resolveDeepValue(env, Object.class, entity().getExecutionContext()); } }