You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2016/12/10 01:03:33 UTC

mesos git commit: Updated master and agent endpoints to expose FrameworkInfo::roles.

Repository: mesos
Updated Branches:
  refs/heads/master 244f593ff -> 8a6bdb8e6


Updated master and agent endpoints to expose FrameworkInfo::roles.

Review: https://reviews.apache.org/r/54529/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8a6bdb8e
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8a6bdb8e
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8a6bdb8e

Branch: refs/heads/master
Commit: 8a6bdb8e69fc7419b5b93fd95d18d6bcae30fa68
Parents: 244f593
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Fri Dec 9 16:43:10 2016 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Fri Dec 9 17:02:57 2016 -0800

----------------------------------------------------------------------
 src/master/http.cpp | 13 ++++++++++++-
 src/slave/http.cpp  | 13 ++++++++++++-
 2 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/8a6bdb8e/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index d8cff31..d52806d 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -207,7 +207,6 @@ struct FullFrameworkWriter {
     writer->field("user", framework_->info.user());
     writer->field("failover_timeout", framework_->info.failover_timeout());
     writer->field("checkpoint", framework_->info.checkpoint());
-    writer->field("role", framework_->info.role());
     writer->field("registered_time", framework_->registeredTime.secs());
     writer->field("unregistered_time", framework_->unregisteredTime.secs());
 
@@ -226,6 +225,18 @@ struct FullFrameworkWriter {
       writer->field("reregistered_time", framework_->reregisteredTime.secs());
     }
 
+    // For multi-role frameworks the `role` field will be unset.
+    // Note that we could set `roles` here both both cases, which
+    // would make tooling simpler (only need to look for `roles`).
+    // However, we opted to just mirror the protobuf akin to how
+    // generic protobuf -> JSON translation works.
+    if (protobuf::frameworkHasCapability(
+            framework_->info, FrameworkInfo::Capability::MULTI_ROLE)) {
+      writer->field("roles", framework_->info.roles());
+    } else {
+      writer->field("role", framework_->info.role());
+    }
+
     // Model all of the tasks associated with a framework.
     writer->field("tasks", [this](JSON::ArrayWriter* writer) {
       foreachvalue (const TaskInfo& taskInfo, framework_->pendingTasks) {

http://git-wip-us.apache.org/repos/asf/mesos/blob/8a6bdb8e/src/slave/http.cpp
----------------------------------------------------------------------
diff --git a/src/slave/http.cpp b/src/slave/http.cpp
index f672a4c..372cd61 100644
--- a/src/slave/http.cpp
+++ b/src/slave/http.cpp
@@ -238,9 +238,20 @@ struct FrameworkWriter
     writer->field("user", framework_->info.user());
     writer->field("failover_timeout", framework_->info.failover_timeout());
     writer->field("checkpoint", framework_->info.checkpoint());
-    writer->field("role", framework_->info.role());
     writer->field("hostname", framework_->info.hostname());
 
+    // For multi-role frameworks the `role` field will be unset.
+    // Note that we could set `roles` here both both cases, which
+    // would make tooling simpler (only need to look for `roles`).
+    // However, we opted to just mirror the protobuf akin to how
+    // generic protobuf -> JSON translation works.
+    if (protobuf::frameworkHasCapability(
+            framework_->info, FrameworkInfo::Capability::MULTI_ROLE)) {
+      writer->field("roles", framework_->info.roles());
+    } else {
+      writer->field("role", framework_->info.role());
+    }
+
     writer->field("executors", [this](JSON::ArrayWriter* writer) {
       foreachvalue (Executor* executor, framework_->executors) {
         if (!approveViewExecutorInfo(