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");