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;
   };