You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mp...@apache.org on 2016/02/28 04:19:50 UTC

[1/3] mesos git commit: Updated `/frameworks` master HTTP endpoint to use `jsonify`.

Repository: mesos
Updated Branches:
  refs/heads/master b91a740fb -> 154e82e1c


Updated `/frameworks` master HTTP endpoint to use `jsonify`.

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


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

Branch: refs/heads/master
Commit: f29d66c019ee6fefc7fbff7ab1f4511e6be1c001
Parents: b91a740
Author: Neil Conway <ne...@gmail.com>
Authored: Sat Feb 27 18:48:37 2016 -0800
Committer: Michael Park <mp...@apache.org>
Committed: Sat Feb 27 18:48:37 2016 -0800

----------------------------------------------------------------------
 src/master/http.cpp | 72 +++++++++++++++++++-----------------------------
 1 file changed, 28 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/f29d66c0/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 22f52f4..31d2e0d 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -897,52 +897,37 @@ string Master::Http::FRAMEWORKS()
 
 Future<Response> Master::Http::frameworks(const Request& request) const
 {
-  JSON::Object object;
-
-  // Model all of the frameworks.
-  {
-    JSON::Array array;
-    array.values.reserve(master->frameworks.registered.size()); // MESOS-2353.
-
-    foreachvalue (Framework* framework, master->frameworks.registered) {
-      array.values.push_back(model(*framework));
-    }
-
-    object.values["frameworks"] = std::move(array);
-  }
-
-  // Model all of the completed frameworks.
-  {
-    JSON::Array array;
-    array.values.reserve(master->frameworks.completed.size()); // MESOS-2353.
-
-    foreach (const std::shared_ptr<Framework>& framework,
-             master->frameworks.completed) {
-      array.values.push_back(model(*framework));
-    }
-
-    object.values["completed_frameworks"] = std::move(array);
-  }
+  auto frameworks = [this](JSON::ObjectWriter* writer) {
+    // Model all of the frameworks.
+    writer->field("frameworks", [this](JSON::ArrayWriter* writer) {
+      foreachvalue (Framework* framework, master->frameworks.registered) {
+        writer->element(Full<Framework>(*framework));
+      }
+    });
 
-  // Model all currently unregistered frameworks.
-  // This could happen when the framework has yet to re-register
-  // after master failover.
-  {
-    JSON::Array array;
+    // Model all of the completed frameworks.
+    writer->field("completed_frameworks", [this](JSON::ArrayWriter* writer) {
+      foreach (const std::shared_ptr<Framework>& framework,
+               master->frameworks.completed) {
+        writer->element(Full<Framework>(*framework));
+      }
+    });
 
-    // Find unregistered frameworks.
-    foreachvalue (const Slave* slave, master->slaves.registered) {
-      foreachkey (const FrameworkID& frameworkId, slave->tasks) {
-        if (!master->frameworks.registered.contains(frameworkId)) {
-          array.values.push_back(frameworkId.value());
+    // Model all currently unregistered frameworks. This can happen
+    // when a framework has yet to re-register after master failover.
+    writer->field("unregistered_frameworks", [this](JSON::ArrayWriter* writer) {
+      // Find unregistered frameworks.
+      foreachvalue (const Slave* slave, master->slaves.registered) {
+        foreachkey (const FrameworkID& frameworkId, slave->tasks) {
+          if (!master->frameworks.registered.contains(frameworkId)) {
+            writer->element(frameworkId.value());
+          }
         }
       }
-    }
-
-    object.values["unregistered_frameworks"] = std::move(array);
-  }
+    });
+  };
 
-  return OK(object, request.url.query.get("jsonp"));
+  return OK(jsonify(frameworks), request.url.query.get("jsonp"));
 }
 
 
@@ -1468,9 +1453,8 @@ Future<Response> Master::Http::state(const Request& request) const
       }
     });
 
-    // Model all currently unregistered frameworks.
-    // This could happen when the framework has yet to re-register
-    // after master failover.
+    // Model all currently unregistered frameworks. This can happen
+    // when a framework has yet to re-register after master failover.
     writer->field("unregistered_frameworks", [this](JSON::ArrayWriter* writer) {
       // Find unregistered frameworks.
       foreachvalue (const Slave* slave, master->slaves.registered) {


[2/3] mesos git commit: Updated `/slaves` master HTTP endpoint to use `jsonify`.

Posted by mp...@apache.org.
Updated `/slaves` master HTTP endpoint to use `jsonify`.

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


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

Branch: refs/heads/master
Commit: dd74d4be9034779921f6cbc80c80c9941a0831ac
Parents: f29d66c
Author: Neil Conway <ne...@gmail.com>
Authored: Sat Feb 27 18:58:55 2016 -0800
Committer: Michael Park <mp...@apache.org>
Committed: Sat Feb 27 19:07:19 2016 -0800

----------------------------------------------------------------------
 src/master/http.cpp | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/dd74d4be/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 31d2e0d..46a8b5a 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -1223,20 +1223,15 @@ string Master::Http::SLAVES_HELP()
 
 Future<Response> Master::Http::slaves(const Request& request) const
 {
-  JSON::Object object;
-
-  {
-    JSON::Array array;
-    array.values.reserve(master->slaves.registered.size()); // MESOS-2353.
-
-    foreachvalue (const Slave* slave, master->slaves.registered) {
-      array.values.push_back(model(*slave));
-    }
-
-    object.values["slaves"] = std::move(array);
-  }
+  auto slaves = [this](JSON::ObjectWriter* writer) {
+    writer->field("slaves", [this](JSON::ArrayWriter* writer) {
+      foreachvalue (const Slave* slave, master->slaves.registered) {
+        writer->element(Full<Slave>(*slave));
+      }
+    });
+  };
 
-  return OK(object, request.url.query.get("jsonp"));
+  return OK(jsonify(slaves), request.url.query.get("jsonp"));
 }
 
 


[3/3] mesos git commit: Removed no-longer-used `model` functions.

Posted by mp...@apache.org.
Removed no-longer-used `model` functions.

These `model()` variants provided functionality that is now implemented
via `jsonify`; no more call-sites of the old functions remain.

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


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

Branch: refs/heads/master
Commit: 154e82e1c1b7e3edcbc1b2b7d841567e0ca11143
Parents: dd74d4b
Author: Neil Conway <ne...@gmail.com>
Authored: Sat Feb 27 19:14:29 2016 -0800
Committer: Michael Park <mp...@apache.org>
Committed: Sat Feb 27 19:14:29 2016 -0800

----------------------------------------------------------------------
 src/master/http.cpp | 196 +----------------------------------------------
 1 file changed, 3 insertions(+), 193 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/154e82e1/src/master/http.cpp
----------------------------------------------------------------------
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 46a8b5a..d6e1f22 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -212,7 +212,8 @@ void json(JSON::ObjectWriter* writer, const Full<Framework>& full)
 
   json(writer, Summary<Framework>(framework));
 
-  // Add additional fields to those generated by 'summarize'.
+  // Add additional fields to those generated by the
+  // `Summary<Framework>` overload.
   writer->field("user", framework.info.user());
   writer->field("failover_timeout", framework.info.failover_timeout());
   writer->field("checkpoint", framework.info.checkpoint());
@@ -225,7 +226,7 @@ void json(JSON::ObjectWriter* writer, const Full<Framework>& full)
   }
 
   // TODO(bmahler): Consider deprecating this in favor of the split
-  // used and offered resources added in 'summarize'.
+  // used and offered resources added in `Summary<Framework>`.
   writer->field(
       "resources",
       framework.totalUsedResources + framework.totalOfferedResources);
@@ -302,197 +303,6 @@ void json(JSON::ObjectWriter* writer, const Full<Framework>& full)
 }
 
 
-// TODO(bmahler): Kill these in favor of automatic Proto->JSON Conversion (when
-// it becomes available).
-
-
-// Returns a JSON object modeled on an Offer.
-JSON::Object model(const Offer& offer)
-{
-  JSON::Object object;
-  object.values["id"] = offer.id().value();
-  object.values["framework_id"] = offer.framework_id().value();
-  object.values["slave_id"] = offer.slave_id().value();
-  object.values["resources"] = model(offer.resources());
-  return object;
-}
-
-
-// Returns a JSON object summarizing some important fields in a
-// Framework.
-JSON::Object summarize(const Framework& framework)
-{
-  JSON::Object object;
-  object.values["id"] = framework.id().value();
-  object.values["name"] = framework.info.name();
-
-  // Omit pid for http frameworks.
-  if (framework.pid.isSome()) {
-    object.values["pid"] = string(framework.pid.get());
-  }
-
-  // TODO(bmahler): Use these in the webui.
-  object.values["used_resources"] = model(framework.totalUsedResources);
-  object.values["offered_resources"] = model(framework.totalOfferedResources);
-
-  {
-      JSON::Array array;
-      array.values.reserve(framework.info.capabilities_size());
-      foreach (const FrameworkInfo::Capability& capability,
-               framework.info.capabilities()) {
-        array.values.push_back(
-              FrameworkInfo::Capability::Type_Name(capability.type()));
-      }
-      object.values["capabilities"] = std::move(array);
-  }
-
-  object.values["hostname"] = framework.info.hostname();
-  object.values["webui_url"] = framework.info.webui_url();
-
-  object.values["active"] = framework.active;
-
-  return object;
-}
-
-
-// Returns a JSON object modeled on a Framework.
-JSON::Object model(const Framework& framework)
-{
-  JSON::Object object = summarize(framework);
-
-  // Add additional fields to those generated by 'summarize'.
-  object.values["user"] = framework.info.user();
-  object.values["failover_timeout"] = framework.info.failover_timeout();
-  object.values["checkpoint"] = framework.info.checkpoint();
-  object.values["role"] = framework.info.role();
-  object.values["registered_time"] = framework.registeredTime.secs();
-  object.values["unregistered_time"] = framework.unregisteredTime.secs();
-
-  if (framework.info.has_principal()) {
-    object.values["principal"] = framework.info.principal();
-  }
-
-  // TODO(bmahler): Consider deprecating this in favor of the split
-  // used and offered resources added in 'summarize'.
-  object.values["resources"] =
-    model(framework.totalUsedResources + framework.totalOfferedResources);
-
-  // TODO(benh): Consider making reregisteredTime an Option.
-  if (framework.registeredTime != framework.reregisteredTime) {
-    object.values["reregistered_time"] = framework.reregisteredTime.secs();
-  }
-
-  // Model all of the tasks associated with a framework.
-  {
-    JSON::Array array;
-    array.values.reserve(
-        framework.pendingTasks.size() + framework.tasks.size()); // MESOS-2353.
-
-    foreachvalue (const TaskInfo& task, framework.pendingTasks) {
-      vector<TaskStatus> statuses;
-      array.values.push_back(
-          model(task, framework.id(), TASK_STAGING, statuses));
-    }
-
-    foreachvalue (Task* task, framework.tasks) {
-      array.values.push_back(model(*task));
-    }
-
-    object.values["tasks"] = std::move(array);
-  }
-
-  // Model all of the completed tasks of a framework.
-  {
-    JSON::Array array;
-    array.values.reserve(framework.completedTasks.size()); // MESOS-2353.
-
-    foreach (const std::shared_ptr<Task>& task, framework.completedTasks) {
-      array.values.push_back(model(*task));
-    }
-
-    object.values["completed_tasks"] = std::move(array);
-  }
-
-  // Model all of the offers associated with a framework.
-  {
-    JSON::Array array;
-    array.values.reserve(framework.offers.size()); // MESOS-2353.
-
-    foreach (Offer* offer, framework.offers) {
-      array.values.push_back(model(*offer));
-    }
-
-    object.values["offers"] = std::move(array);
-  }
-
-  // Model all of the executors of a framework.
-  {
-    JSON::Array executors;
-    int executorSize = 0;
-    foreachvalue (const auto& executorsMap,
-                  framework.executors) {
-      executorSize += executorsMap.size();
-    }
-    executors.values.reserve(executorSize); // MESOS-2353
-    foreachpair (const SlaveID& slaveId,
-                 const auto& executorsMap,
-                 framework.executors) {
-      foreachvalue (const ExecutorInfo& executor, executorsMap) {
-        JSON::Object executorJson = model(executor);
-        executorJson.values["slave_id"] = slaveId.value();
-        executors.values.push_back(executorJson);
-      }
-    }
-
-    object.values["executors"] = std::move(executors);
-  }
-
-  // Model all of the labels associated with a framework.
-  if (framework.info.has_labels()) {
-    object.values["labels"] = model(framework.info.labels());
-  }
-
-  return object;
-}
-
-
-// Returns a JSON object summarizing some important fields in a Slave.
-JSON::Object summarize(const Slave& slave)
-{
-  JSON::Object object;
-  object.values["id"] = slave.id.value();
-  object.values["pid"] = string(slave.pid);
-  object.values["hostname"] = slave.info.hostname();
-  object.values["registered_time"] = slave.registeredTime.secs();
-
-  if (slave.reregisteredTime.isSome()) {
-    object.values["reregistered_time"] = slave.reregisteredTime.get().secs();
-  }
-
-  const Resources& totalResources = slave.totalResources;
-  object.values["resources"] = model(totalResources);
-  object.values["used_resources"] = model(Resources::sum(slave.usedResources));
-  object.values["offered_resources"] = model(slave.offeredResources);
-  object.values["reserved_resources"] = model(totalResources.reserved());
-  object.values["unreserved_resources"] = model(totalResources.unreserved());
-
-  object.values["attributes"] = model(slave.info.attributes());
-  object.values["active"] = slave.active;
-  object.values["version"] = slave.version;
-
-  return object;
-}
-
-
-// Returns a JSON object modeled after a Slave.
-// For now there are no additional fields being added to those
-// generated by 'summarize'.
-JSON::Object model(const Slave& slave)
-{
-  return summarize(slave);
-}
-
-
 void Master::Http::log(const Request& request)
 {
   Option<string> userAgent = request.headers.get("User-Agent");