private static String formatRolloutOptions(final RolloutOptions options) { if (options == null) { return ""; } final List<String> output = new ArrayList<>(); output.add(String.format("timeout: %d", options.getTimeout())); output.add(String.format("parallelism: %d", options.getParallelism())); output.add(String.format("migrate: %s", options.getMigrate())); output.add(String.format("overlap: %s", options.getOverlap())); output.add(String.format("token: %s", options.getToken())); output.add(String.format("ignoreFailures: %s", options.getIgnoreFailures())); return Joiner.on(", ").join(output); }
@Override public List<RolloutTask> plan(final List<String> hosts) { // generate the rollout tasks final List<RolloutTask> rolloutTasks = Lists.newArrayList(); final int parallelism = deploymentGroup.getRolloutOptions() != null && deploymentGroup.getRolloutOptions().getParallelism() != null ? deploymentGroup.getRolloutOptions().getParallelism() : 1; Lists.partition(hosts, parallelism) .forEach(partition -> rolloutTasks.addAll(rolloutTasks(partition))); return ImmutableList.copyOf(rolloutTasks); }
@Override public List<RolloutTask> plan(final List<String> hosts) { // generate the rollout tasks final List<RolloutTask> rolloutTasks = Lists.newArrayList(); final int parallelism = deploymentGroup.getRolloutOptions() != null && deploymentGroup.getRolloutOptions().getParallelism() != null ? deploymentGroup.getRolloutOptions().getParallelism() : 1; final boolean overlap = deploymentGroup.getRolloutOptions() != null && TRUE.equals(deploymentGroup.getRolloutOptions().getOverlap()); for (final List<String> partition : Lists.partition(hosts, parallelism)) { rolloutTasks.addAll(overlap ? rolloutTasksWithOverlap(partition) : rolloutTasks(partition)); } return ImmutableList.copyOf(rolloutTasks); }
out.printf(" Migrate: %s%n", rolloutOptions.getMigrate()); out.printf(" Overlap: %s%n", rolloutOptions.getOverlap()); out.printf(" Parallelism: %d%n", rolloutOptions.getParallelism()); out.printf(" Timeout: %d%n", rolloutOptions.getTimeout()); if (!isNullOrEmpty(rolloutOptions.getToken())) {
MoreObjects.firstNonNull(job.getRolloutOptions(), RolloutOptions.getDefault()); final Integer actualParallelism = nullableWithFallback(parallelism, optionsFromJob.getParallelism()); final Long actualTimeout = nullableWithFallback(timeout, optionsFromJob.getTimeout()); final Boolean actualOverlap = nullableWithFallback(overlap, optionsFromJob.getOverlap());
@Override public List<RolloutTask> plan(final Map<String, HostStatus> hostsAndStatuses) { // we only care about hosts that are UP final List<String> hosts = Lists.newArrayList(); for (final Map.Entry<String, HostStatus> entry : hostsAndStatuses.entrySet()) { if (entry.getValue().getStatus().equals(HostStatus.Status.UP)) { hosts.add(entry.getKey()); } } // generate the rollout tasks final List<RolloutTask> rolloutTasks = Lists.newArrayList(); final int parallelism = deploymentGroup.getRolloutOptions() != null ? deploymentGroup.getRolloutOptions().getParallelism() : 1; for (final List<String> partition : Lists.partition(hosts, parallelism)) { for (final String host : partition) { rolloutTasks.add(RolloutTask.of(RolloutTask.Action.UNDEPLOY_OLD_JOBS, host)); rolloutTasks.add(RolloutTask.of(RolloutTask.Action.DEPLOY_NEW_JOB, host)); } for (final String host : partition) { rolloutTasks.add(RolloutTask.of(RolloutTask.Action.AWAIT_RUNNING, host)); } } return ImmutableList.copyOf(rolloutTasks); } }