/** * Returns a queued {@link Task} which stops iptables on the given machine. */ public Task<Void> stopIptablesAsync(final SshMachineLocation machine) { return DynamicTasks.queue("stop iptables", new Runnable() { @Override public void run() { stopIptablesImpl(machine); } }); }
@Override public void run() { Entity e = EffectorTasks.findEntity(); if (cookbooksAndUrls==null) throw new IllegalStateException("No cookbooks defined to install at "+e); for (String cookbook: cookbooksAndUrls.keySet()) DynamicTasks.queue(installCookbook(chefDirectory, cookbook, cookbooksAndUrls.get(cookbook), force)); } }).buildFactory();
public static ChefModes detectChefMode(Entity entity) { ChefModes mode = entity.getConfig(ChefConfig.CHEF_MODE); if (mode == ChefModes.AUTODETECT) { // TODO server via API ProcessTaskWrapper<Boolean> installCheck = DynamicTasks.queue( ChefServerTasks.isKnifeInstalled()); mode = installCheck.get() ? ChefModes.KNIFE : ChefModes.SOLO; log.debug("Using Chef in "+mode+" mode due to autodetect exit code "+installCheck.getExitCode()); } Preconditions.checkNotNull(mode, "Non-null "+ChefConfig.CHEF_MODE+" required for "+entity); return mode; }
private void demoteOldMaster(Entity oldMaster, HighAvailabilityMode mode) { ManagementNodeState oldState = DynamicTasks.queue( Effectors.invocation( oldMaster, BrooklynNode.SET_HIGH_AVAILABILITY_MODE, MutableMap.of(SetHighAvailabilityModeEffector.MODE, mode)) ).asTask().getUnchecked(); if (oldState != ManagementNodeState.MASTER) { LOG.warn("The previous HA state on node " + oldMaster.getId() + " was " + oldState + ", while the expected value is " + ManagementNodeState.MASTER + "."); } }
@Override public String call() { log.info("main job - "+Tasks.current()); messages.add("main"); DynamicTasks.queue( sayTask("world") ); return "bye"; } };
@Override public V2 call() throws Exception { List<V> prePostProgress = DynamicTasks.queue(parallelTask).get(); return DynamicTasks.queue( Tasks.<V2>builder().displayName("post-processing").description("Applying "+postProcessFromMultiple) .body(Functionals.callable(postProcessFromMultiple, prePostProgress)) .build()).get(); } })
protected ProcessTaskWrapper<Integer> exec(SshMachineLocation machine, boolean asRoot, String... cmds) { SshEffectorTaskFactory<Integer> taskFactory = SshEffectorTasks.ssh(machine, cmds); if (asRoot) taskFactory.runAsRoot(); ProcessTaskWrapper<Integer> result = DynamicTasks.queue(taskFactory).block(); if (result.get() != 0) { throw new IllegalStateException("SetHostnameCustomizer got exit code "+result.get()+" executing on machine "+machine +"; cmds="+Arrays.asList(cmds)+"; stdout="+result.getStdout()+"; stderr="+result.getStderr()); } return result; } }
protected boolean tryCheckStartService() { if (getServiceName()==null) return false; // if it's still up after 5s assume we are good (default behaviour) Time.sleep(Duration.FIVE_SECONDS); if (!((Integer)0).equals(DynamicTasks.queue(SshEffectorTasks.ssh("/etc/init.d/"+getServiceName()+" status").runAsRoot()).get())) { throw new IllegalStateException("The process for "+entity()+" appears not to be running (service "+getServiceName()+")"); } return true; }
protected boolean tryCheckStartWindowsService() { if (getWindowsServiceName()==null) return false; // if it's still up after 5s assume we are good (default behaviour) Time.sleep(Duration.FIVE_SECONDS); if (!((Integer)0).equals(DynamicTasks.queue(SshEffectorTasks.ssh("sc query \""+getWindowsServiceName()+"\" | find \"RUNNING\"").runAsCommand()).get())) { throw new IllegalStateException("The process for "+entity()+" appears not to be running (windowsService "+getWindowsServiceName()+")"); } return true; }
protected boolean tryCheckStartService() { if (getServiceName()==null) return false; // if it's still up after 5s assume we are good (default behaviour) Time.sleep(Duration.FIVE_SECONDS); if (!((Integer)0).equals(DynamicTasks.queue(SshEffectorTasks.ssh("/etc/init.d/"+getServiceName()+" status").runAsRoot()).get())) { throw new IllegalStateException("The process for "+entity()+" appears not to be running (service "+getServiceName()+")"); } return true; }
@Override public void install() { // TODO flag to force reinstallation DynamicTasks.queue( ChefSoloTasks.installChef(getInstallDir(), false), ChefSoloTasks.installCookbooks(getInstallDir(), getRequiredConfig(CHEF_COOKBOOK_URLS), false)); }
protected boolean tryStopWindowsService() { if (getWindowsServiceName()==null) return false; int result = DynamicTasks.queue(SshEffectorTasks.ssh("sc query \""+getWindowsServiceName()+"\"").runAsCommand()).get(); if (0==result) return true; if (entity().getAttribute(Attributes.SERVICE_STATE_ACTUAL)!=Lifecycle.RUNNING) return true; throw new IllegalStateException("The process for "+entity()+" appears could not be stopped (exit code "+result+" to service stop)"); }
/** * Returns a queued {@link Task} which provisions a machine in the given location * and returns that machine. The task can be used as a supplier to subsequent methods. */ protected Task<MachineLocation> provisionAsync(final MachineProvisioningLocation<?> location) { return DynamicTasks.queue(Tasks.<MachineLocation>builder().displayName("provisioning (" + location.getDisplayName() + ")").body( new ProvisionMachineTask(location)).build()); }
@Override public String call(ConfigBag parameters) { return DynamicTasks.queue(SshEffectorTasks.ssh( BashCommands.pipeTextTo( parameters.get(SCRIPT), BashCommands.sudoAsUser("postgres", "psql --file -"))) .requiringExitCodeZero()).getStdout(); } }
@Override public void customize() { DynamicTasks.queue(ChefSoloTasks.buildChefFile(getRunDir(), getInstallDir(), "launch", getRequiredConfig(CHEF_RUN_LIST), getEntity().getConfig(CHEF_LAUNCH_ATTRIBUTES))); }
protected void failOnStep(ConfigKey<Boolean> latch) { if (((EntityInternal)entity).config().getRaw(latch).isPresent()) { DynamicTasks.queue("Failing task", new Runnable() { @Override public void run() { throw new IllegalStateException("forced fail"); } }); } }
public ProcessTaskWrapper<Integer> executeScriptFromInstalledFileAsync(String filenameAlreadyInstalledAtServer) { return DynamicTasks.queue( SshEffectorTasks.ssh( "cd "+getRunDir(), sudoAsUser("postgres", getInstallDir() + "/bin/psql -p " + entity.getAttribute(PostgreSqlNode.POSTGRESQL_PORT) + " -v ON_ERROR_STOP=1 --file " + filenameAlreadyInstalledAtServer)) .requiringExitCodeZero() .summary("executing datastore script "+filenameAlreadyInstalledAtServer)); }
@Override public ProcessTaskWrapper<Integer> executeScriptFromInstalledFileAsync(String filenameAlreadyInstalledAtServer) { SshMachineLocation machine = EffectorTasks.getSshMachine(entity); return DynamicTasks.queue( SshTasks.newSshExecTaskFactory(machine, "cd "+getRunDir(), getBaseDir()+"/bin/mysql --defaults-file="+getConfigFile()+" < "+filenameAlreadyInstalledAtServer) .requiringExitCodeZero() .summary("executing datastore script "+filenameAlreadyInstalledAtServer)); }