Example #1
0
bool operator == (const Task& left, const Task& right)
{
    // Order of task statuses is important.
    if (left.statuses().size() != right.statuses().size()) {
        return false;
    }

    for (int i = 0; i < left.statuses().size(); i++) {
        if (left.statuses().Get(i) != right.statuses().Get(i)) {
            return false;
        }
    }

    return left.name() == right.name() &&
           left.task_id() == right.task_id() &&
           left.framework_id() == right.framework_id() &&
           left.executor_id() == right.executor_id() &&
           left.slave_id() == right.slave_id() &&
           left.state() == right.state() &&
           Resources(left.resources()) == Resources(right.resources()) &&
           left.status_update_state() == right.status_update_state() &&
           left.status_update_uuid() == right.status_update_uuid() &&
           left.labels() == right.labels() &&
           left.discovery() == right.discovery();
}
Example #2
0
// TODO(bmahler): Expose the executor name / source.
JSON::Object model(const Task& task)
{
  JSON::Object object;
  object.values["id"] = task.task_id().value();
  object.values["name"] = task.name();
  object.values["framework_id"] = task.framework_id().value();

  if (task.has_executor_id()) {
    object.values["executor_id"] = task.executor_id().value();
  } else {
    object.values["executor_id"] = "";
  }

  object.values["slave_id"] = task.slave_id().value();
  object.values["state"] = TaskState_Name(task.state());
  object.values["resources"] = model(task.resources());

  JSON::Array array;
  foreach (const TaskStatus& status, task.statuses()) {
    array.values.push_back(model(status));
  }
  object.values["statuses"] = array;

  JSON::Array labels;
  foreach (const Label& label, task.labels()) {
    labels.values.push_back(JSON::Protobuf(label));
  }
  object.values["labels"] = labels;

  return object;
}
Example #3
0
Option<ContainerStatus> getTaskContainerStatus(const Task& task)
{
  // The statuses list only keeps the most recent TaskStatus for
  // each state, and appends later states at the end. Let's find
  // the most recent TaskStatus with a valid container_status.
  foreach (const TaskStatus& status, adaptor::reverse(task.statuses())) {
    if (status.has_container_status()) {
      return status.container_status();
    }
  }
  return None();
}
Example #4
0
Option<bool> getTaskHealth(const Task& task)
{
  Option<bool> healthy = None();
  if (task.statuses_size() > 0) {
    // The statuses list only keeps the most recent TaskStatus for
    // each state, and appends later states at the end. Thus the last
    // status is either a terminal state (where health is
    // irrelevant), or the latest RUNNING status.
    TaskStatus lastStatus = task.statuses(task.statuses_size() - 1);
    if (lastStatus.has_healthy()) {
      healthy = lastStatus.healthy();
    }
  }
  return healthy;
}
Example #5
0
Option<CheckStatusInfo> getTaskCheckStatus(const Task& task)
{
  Option<CheckStatusInfo> checkStatus = None();
  if (task.statuses_size() > 0) {
    // The statuses list only keeps the most recent `TaskStatus` for
    // each state, and appends later statuses at the end. Thus the last
    // status is either a terminal state (where check is irrelevant),
    // or the latest TASK_RUNNING status.
    const TaskStatus& lastStatus = task.statuses(task.statuses_size() - 1);
    if (lastStatus.has_check_status()) {
      checkStatus = lastStatus.check_status();
    }
  }
  return checkStatus;
}