You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by al...@apache.org on 2018/08/28 19:50:14 UTC
[mesos] 04/06: Added '/frameworks' to the set of batched master
endpoints.
This is an automated email from the ASF dual-hosted git repository.
alexr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 102dcca4e0116d2ffbdcd78d998e032841ffbabe
Author: Benno Evers <be...@mesosphere.com>
AuthorDate: Tue Aug 28 21:26:18 2018 +0200
Added '/frameworks' to the set of batched master endpoints.
Review: https://reviews.apache.org/r/68442/
---
src/master/http.cpp | 105 +++++++++++++++++++++++++++-----------------------
src/master/master.hpp | 5 +++
2 files changed, 62 insertions(+), 48 deletions(-)
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 42d4dad..9f8539e 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -1682,57 +1682,66 @@ Future<Response> Master::Http::frameworks(
{VIEW_FRAMEWORK, VIEW_TASK, VIEW_EXECUTOR})
.then(defer(
master->self(),
- [this, request](const Owned<ObjectApprovers>& approvers) -> Response {
- IDAcceptor<FrameworkID> selectFrameworkId(
- request.url.query.get("framework_id"));
- // This lambda is consumed before the outer lambda
- // returns, hence capture by reference is fine here.
- auto frameworks = [this, &approvers, &selectFrameworkId](
- JSON::ObjectWriter* writer) {
- // Model all of the frameworks.
- writer->field(
- "frameworks",
- [this, &approvers, &selectFrameworkId](
- JSON::ArrayWriter* writer) {
- foreachvalue (
- Framework* framework, master->frameworks.registered) {
- // Skip unauthorized frameworks or frameworks
- // without a matching ID.
- if (!selectFrameworkId.accept(framework->id()) ||
- !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
- continue;
- }
-
- writer->element(FullFrameworkWriter(approvers, framework));
- }
- });
+ [this, request](const Owned<ObjectApprovers>& approvers) {
+ return deferBatchedRequest(
+ &Master::ReadOnlyHandler::frameworks, request, approvers);
+ }));
+}
- // Model all of the completed frameworks.
- writer->field(
- "completed_frameworks",
- [this, &approvers, &selectFrameworkId](
- JSON::ArrayWriter* writer) {
- foreachvalue (const Owned<Framework>& framework,
- master->frameworks.completed) {
- // Skip unauthorized frameworks or frameworks
- // without a matching ID.
- if (!selectFrameworkId.accept(framework->id()) ||
- !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
- continue;
- }
-
- writer->element(
- FullFrameworkWriter(approvers, framework.get()));
- }
- });
- // Unregistered frameworks are no longer possible. We emit an
- // empty array for the sake of backward compatibility.
- writer->field("unregistered_frameworks", [](JSON::ArrayWriter*) {});
- };
+process::http::Response Master::ReadOnlyHandler::frameworks(
+ const process::http::Request& request,
+ const process::Owned<ObjectApprovers>& approvers) const
+{
+ IDAcceptor<FrameworkID> selectFrameworkId(
+ request.url.query.get("framework_id"));
+ // This lambda is consumed before the outer lambda
+ // returns, hence capture by reference is fine here.
+ auto frameworks = [this, &approvers, &selectFrameworkId](
+ JSON::ObjectWriter* writer) {
+ // Model all of the frameworks.
+ writer->field(
+ "frameworks",
+ [this, &approvers, &selectFrameworkId](
+ JSON::ArrayWriter* writer) {
+ foreachvalue (
+ Framework* framework, master->frameworks.registered) {
+ // Skip unauthorized frameworks or frameworks
+ // without a matching ID.
+ if (!selectFrameworkId.accept(framework->id()) ||
+ !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
+ continue;
+ }
- return OK(jsonify(frameworks), request.url.query.get("jsonp"));
- }));
+ writer->element(FullFrameworkWriter(approvers, framework));
+ }
+ });
+
+ // Model all of the completed frameworks.
+ writer->field(
+ "completed_frameworks",
+ [this, &approvers, &selectFrameworkId](
+ JSON::ArrayWriter* writer) {
+ foreachvalue (const Owned<Framework>& framework,
+ master->frameworks.completed) {
+ // Skip unauthorized frameworks or frameworks
+ // without a matching ID.
+ if (!selectFrameworkId.accept(framework->id()) ||
+ !approvers->approved<VIEW_FRAMEWORK>(framework->info)) {
+ continue;
+ }
+
+ writer->element(
+ FullFrameworkWriter(approvers, framework.get()));
+ }
+ });
+
+ // Unregistered frameworks are no longer possible. We emit an
+ // empty array for the sake of backward compatibility.
+ writer->field("unregistered_frameworks", [](JSON::ArrayWriter*) {});
+ };
+
+ return OK(jsonify(frameworks), request.url.query.get("jsonp"));
}
diff --git a/src/master/master.hpp b/src/master/master.hpp
index ac6e6d3..9b98771 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1416,6 +1416,11 @@ private:
const process::http::Request& request,
const process::Owned<ObjectApprovers>& approvers) const;
+ // /frameworks
+ process::http::Response frameworks(
+ const process::http::Request& request,
+ const process::Owned<ObjectApprovers>& approvers) const;
+
private:
const Master* master;
};