@Override public void matchedStatus(JobStatus jobStatus, Iterable<String> matchingHosts, Map<String, TaskStatus> taskStatuses) { for (final String host : matchingHosts) { final Map<String, Deployment> deployments = jobStatus.getDeployments(); final Deployment deployment = (deployments == null) ? null : deployments.get(host); if (deployment != null) { returnStatuses.put(jobStatus.getJob().getId(), filterJobStatus(jobStatus, matchingHosts)); } } }
private Map<JobId, JobStatus> getJobStatuses( final HeliosClient client, final Map<JobId, Job> jobs, final boolean deployed) throws InterruptedException, ExecutionException { final Map<JobId, JobStatus> jobStatuses = client.jobStatuses(jobs.keySet()).get(); // maybe filter on deployed jobs final Map<JobId, JobStatus> filteredJobStatuses = Maps.newHashMap(); if (!deployed) { filteredJobStatuses.putAll(jobStatuses); } else { for (final Entry<JobId, JobStatus> e : jobStatuses.entrySet()) { if (!e.getValue().getDeployments().isEmpty()) { filteredJobStatuses.put(e.getKey(), e.getValue()); } } } return filteredJobStatuses; }
private void displayTask(final boolean full, final JobStatusTable table, final JobId jobId, final JobStatus jobStatus, final Map<String, TaskStatus> taskStatuses, final Iterable<String> matchingHosts) { for (final String host : matchingHosts) { final Map<String, Deployment> deployments = jobStatus.getDeployments(); final TaskStatus ts = taskStatuses.get(host); final Deployment deployment = (deployments == null) ? null : deployments.get(host); table.task(jobId, formatHostname(full, host), ts, deployment); } } }
protected void undeployJob(final JobId jobId, final String host) throws Exception { final String undeployOutput = cli("undeploy", jobId.toString(), host); assertThat(undeployOutput, containsString(host + ": done")); final String output = cli("status", "--host", host, "--json"); final Map<JobId, JobStatus> statuses = Json.readUnchecked(output, new TypeReference<Map<JobId, JobStatus>>() { }); final JobStatus status = statuses.get(jobId); assertTrue(status == null || status.getDeployments().get(host) == null); }
for (final String host : jobStatus.getDeployments().keySet()) { if (!taskStatuses.containsKey(host)) { taskStatuses.put(host, null);
private JobStatus filterJobStatus(final JobStatus jobStatus, final Iterable<String> matchingHosts) { final Map<String, TaskStatus> taskStatuses = Maps.newHashMap(jobStatus.getTaskStatuses()); final Set<String> matchingHostSet = Sets.newHashSet(matchingHosts); for (final String key : Sets.newHashSet(taskStatuses.keySet())) { if (!matchingHostSet.contains(key)) { taskStatuses.remove(key); } } final Map<String, Deployment> deployments = Maps.newHashMap(jobStatus.getDeployments()); for (final String key : Sets.newHashSet(deployments.keySet())) { if (!matchingHostSet.contains(key)) { deployments.remove(key); } } return JobStatus.newBuilder() .setJob(jobStatus.getJob()) .setDeployments(deployments) .setTaskStatuses(taskStatuses) .build(); }
} else if (job.getExpires().getTime() <= clock.now().getMillis()) { final JobStatus status = masterModel.getJobStatus(jobId); final List<String> hosts = ImmutableList.copyOf(status.getDeployments().keySet());
final Map<String, Deployment> deployments = jobStatus.getDeployments(); final List<TaskStatusEvent> events = masterModel.getJobHistory(jobId);
final JobStatus status = jobStatuses.get(jobId); table.row(full ? jobId : jobId.toShortString(), jobId.getName(), jobId.getVersion(), status != null ? status.getDeployments().keySet().size() : 0, command, env);
hosts = ImmutableList.copyOf(status.getDeployments().keySet()); if (hosts.isEmpty()) { out.printf("%s is not currently deployed on any hosts.", jobId);
assertTrue(cliStatuses.containsKey(jobId)); final JobStatus status = cliStatuses.get(jobId); assertEquals("deployments should have only one item", 1, status.getDeployments().size()); assertTrue("should only have deployment info for aHost", status.getDeployments().containsKey(aHost)); assertEquals("Task statuses should only have one item", 1, status.getTaskStatuses().size()); assertTrue("should only have status info for aHost",
awaitTaskState(secondJobId, host, TaskStatus.State.RUNNING); final JobStatus status = client.jobStatus(firstJobId).get(); assertThat(status.getDeployments().isEmpty(), is(true));
private void displayTask(final boolean full, final JobStatusTable table, final JobId jobId, final JobStatus jobStatus, final Map<String, TaskStatus> taskStatuses, final Iterable<String> matchingHosts) { for (final String host : matchingHosts) { final Map<String, Deployment> deployments = jobStatus.getDeployments(); final TaskStatus ts = taskStatuses.get(host); final Deployment deployment = (deployments == null) ? null : deployments.get(host); table.task(jobId, formatHostname(full, host), ts, deployment); } } }
@Override public void matchedStatus(JobStatus jobStatus, Iterable<String> matchingHosts, Map<String, TaskStatus> taskStatuses) { for (final String host : matchingHosts) { final Map<String, Deployment> deployments = jobStatus.getDeployments(); final Deployment deployment = (deployments == null) ? null : deployments.get(host); if (deployment != null) { returnStatuses.put(jobStatus.getJob().getId(), filterJobStatus(jobStatus, matchingHosts)); } } }
private boolean showStatusesForHosts(final String hostPattern, final Set<JobId> jobIds, final Map<JobId, JobStatus> statuses, final HostStatusDisplayer statusDisplayer) { boolean noHostMatchedEver = true; for (final JobId jobId : Ordering.natural().sortedCopy(jobIds)) { final JobStatus jobStatus = statuses.get(jobId); // jobStatus will be null if the job was deleted after we first got the list of job IDs if (jobStatus == null) { continue; } final Map<String, TaskStatus> taskStatuses = Maps.newTreeMap(); taskStatuses.putAll(jobStatus.getTaskStatuses()); // Add keys for jobs that were deployed to a host, // but for which we didn't get a reported task status. // This will help us see hosts where jobs aren't running correctly. for (final String host : jobStatus.getDeployments().keySet()) { if (!taskStatuses.containsKey(host)) { taskStatuses.put(host, null); } } final FluentIterable<String> matchingHosts = FluentIterable .from(taskStatuses.keySet()) .filter(containsPattern(hostPattern)); if (Strings.isNullOrEmpty(hostPattern) || !Strings.isNullOrEmpty(hostPattern) && !matchingHosts.isEmpty()) { noHostMatchedEver = false; } statusDisplayer.matchedStatus(jobStatus, matchingHosts, taskStatuses); } return noHostMatchedEver; }
private JobStatus filterJobStatus(final JobStatus jobStatus, final Iterable<String> matchingHosts) { final Map<String, TaskStatus> taskStatuses = Maps.newHashMap(jobStatus.getTaskStatuses()); final Set<String> matchingHostSet = Sets.newHashSet(matchingHosts); for (final String key : Sets.newHashSet(taskStatuses.keySet())) { if (!matchingHostSet.contains(key)) { taskStatuses.remove(key); } } final Map<String, Deployment> deployments = Maps.newHashMap(jobStatus.getDeployments()); for (final String key : Sets.newHashSet(deployments.keySet())) { if (!matchingHostSet.contains(key)) { deployments.remove(key); } } return JobStatus.newBuilder() .setJob(jobStatus.getJob()) .setDeployments(deployments) .setTaskStatuses(taskStatuses) .build(); }
final List<String> hosts = ImmutableList.copyOf(status.getDeployments().keySet()); final List<AssertionError> errors = undeploy(client, entry.getValue(), hosts, new ArrayList<AssertionError>());
} else if (job.getExpires().getTime() <= clock.now().getMillis()) { final JobStatus status = masterModel.getJobStatus(jobId); final List<String> hosts = ImmutableList.copyOf(status.getDeployments().keySet());
} else { for (final Entry<JobId, ListenableFuture<JobStatus>> e : oldFutures.entrySet()) { if (!e.getValue().get().getDeployments().isEmpty()) { futures.put(e.getKey(), e.getValue()); final JobStatus status = futures.get(jobId).get(); table.row(full ? jobId : jobId.toShortString(), jobId.getName(), jobId.getVersion(), status != null ? status.getDeployments().keySet().size() : 0, command, env);
hosts = ImmutableList.copyOf(status.getDeployments().keySet()); if (hosts.isEmpty()) { out.printf("%s is not currently deployed on any hosts.", jobId);