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 <[email protected]> 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; };
