You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2015/12/10 20:52:43 UTC

[1/2] mesos git commit: Aggregated as member Http in Master.

Repository: mesos
Updated Branches:
  refs/heads/master 5c4e46091 -> 0ca126fa8


Aggregated as member Http in Master.

Before this change the Http object was copied in to each HTTP routing
lambda. If state were to be introduced, this could create hard to
debug issues. Aggregating a single instance as a member of Master
prevents these issues and simplifies access to communal code paths
such as `authenticate`.

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


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

Branch: refs/heads/master
Commit: 41badcc63967533c9cdd1d843106ccb16d1c93e9
Parents: 5c4e460
Author: Joris Van Remoortere <jo...@gmail.com>
Authored: Thu Dec 10 09:17:57 2015 -0800
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Thu Dec 10 11:46:43 2015 -0800

----------------------------------------------------------------------
 src/master/master.cpp | 51 +++++++++++++++++++++++-----------------------
 src/master/master.hpp |  2 ++
 2 files changed, 27 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/41badcc6/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index 7acdc0a..0d14822 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -278,6 +278,7 @@ Master::Master(
     const Flags& _flags)
   : ProcessBase("master"),
     flags(_flags),
+    http(this),
     allocator(_allocator),
     registrar(_registrar),
     repairer(_repairer),
@@ -743,57 +744,55 @@ void Master::initialize()
       &AuthenticateMessage::pid);
 
   // Setup HTTP routes.
-  Http http = Http(this);
-
   route("/api/v1/scheduler",
         Http::SCHEDULER_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.scheduler(request);
         });
   route("/create-volumes",
         Http::CREATE_VOLUMES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.createVolumes(request);
         });
   route("/destroy-volumes",
         Http::DESTROY_VOLUMES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.destroyVolumes(request);
         });
   route("/frameworks",
         Http::FRAMEWORKS(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.frameworks(request);
         });
   route("/flags",
         Http::FLAGS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.flags(request);
         });
   route("/health",
         Http::HEALTH_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           return http.health(request);
         });
   route("/observe",
         Http::OBSERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.observe(request);
         });
   route("/redirect",
         Http::REDIRECT_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           return http.redirect(request);
         });
   route("/reserve",
         Http::RESERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.reserve(request);
         });
@@ -801,25 +800,25 @@ void Master::initialize()
   // deprecation cycle on 0.26.
   route("/roles.json",
         Http::ROLES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/roles",
         Http::ROLES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.roles(request);
         });
   route("/teardown",
         Http::TEARDOWN_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.teardown(request);
         });
   route("/slaves",
         Http::SLAVES_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.slaves(request);
         });
@@ -827,19 +826,19 @@ void Master::initialize()
   // deprecation cycle on 0.26.
   route("/state.json",
         Http::STATE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state",
         Http::STATE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.state(request);
         });
   route("/state-summary",
         Http::STATESUMMARY_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.stateSummary(request);
         });
@@ -847,49 +846,49 @@ void Master::initialize()
   // deprecation cycle.
   route("/tasks.json",
         Http::TASKS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/tasks",
         Http::TASKS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.tasks(request);
         });
   route("/maintenance/schedule",
         Http::MAINTENANCE_SCHEDULE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceSchedule(request);
         });
   route("/maintenance/status",
         Http::MAINTENANCE_STATUS_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.maintenanceStatus(request);
         });
   route("/machine/down",
         Http::MACHINE_DOWN_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.machineDown(request);
         });
   route("/machine/up",
         Http::MACHINE_UP_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.machineUp(request);
         });
   route("/unreserve",
         Http::UNRESERVE_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.unreserve(request);
         });
   route("/quota",
         Http::QUOTA_HELP(),
-        [http](const process::http::Request& request) {
+        [this](const process::http::Request& request) {
           Http::log(request);
           return http.quota(request);
         });

http://git-wip-us.apache.org/repos/asf/mesos/blob/41badcc6/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 4683fa5..d8f9801 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1131,6 +1131,8 @@ private:
 
   const Flags flags;
 
+  Http http;
+
   Option<MasterInfo> leader; // Current leading master.
 
   mesos::master::allocator::Allocator* allocator;


[2/2] mesos git commit: Quota: Added authentication of quota requests.

Posted by jo...@apache.org.
Quota: Added authentication of quota requests.

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


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

Branch: refs/heads/master
Commit: 0ca126fa8afbcfa8f1628ba16a1928989f6bf582
Parents: 41badcc
Author: Jan Schlicht <ja...@mesosphere.io>
Authored: Thu Dec 10 09:35:13 2015 -0800
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Thu Dec 10 11:46:53 2015 -0800

----------------------------------------------------------------------
 src/master/master.hpp        |  3 +++
 src/master/quota_handler.cpp | 21 +++++++++++++++++----
 2 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/0ca126fa/src/master/master.hpp
----------------------------------------------------------------------
diff --git a/src/master/master.hpp b/src/master/master.hpp
index d8f9801..9aa548a 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1113,6 +1113,9 @@ private:
     // NOTE: The quota specific pieces of the Operator API are factored
     // out into this separate class.
     QuotaHandler quotaHandler;
+
+    // Access to `authenticate`.
+    friend class QuotaHandler;
   };
 
   Master(const Master&);              // No copying.

http://git-wip-us.apache.org/repos/asf/mesos/blob/0ca126fa/src/master/quota_handler.cpp
----------------------------------------------------------------------
diff --git a/src/master/quota_handler.cpp b/src/master/quota_handler.cpp
index b209da4..1116787 100644
--- a/src/master/quota_handler.cpp
+++ b/src/master/quota_handler.cpp
@@ -16,6 +16,8 @@
 
 #include "master/master.hpp"
 
+#include <vector>
+
 #include <mesos/resources.hpp>
 
 #include <mesos/quota/quota.hpp>
@@ -44,6 +46,7 @@ using http::Accepted;
 using http::BadRequest;
 using http::Conflict;
 using http::OK;
+using http::Unauthorized;
 
 using process::Future;
 using process::Owned;
@@ -254,8 +257,13 @@ Future<http::Response> Master::QuotaHandler::set(
 {
   VLOG(1) << "Setting quota from request: '" << request.body << "'";
 
-  // Authenticate and authorize the request.
-  // TODO(alexr): Check Master::Http::authenticate() for an example.
+  // Authenticate the request.
+  Result<Credential> credential = master->http.authenticate(request);
+  if (credential.isError()) {
+    return Unauthorized("Mesos master", credential.error());
+  }
+
+  // TODO(nfnt): Authorize the request.
 
   // Check that the request type is POST which is guaranteed by the master.
   CHECK_EQ("POST", request.method);
@@ -368,8 +376,13 @@ Future<http::Response> Master::QuotaHandler::remove(
 {
   VLOG(1) << "Removing quota for request path: '" << request.url.path << "'";
 
-  // Authenticate and authorize the request.
-  // TODO(alexr): Check Master::Http::authenticate() for an example.
+    // Authenticate the request.
+  Result<Credential> credential = master->http.authenticate(request);
+  if (credential.isError()) {
+    return Unauthorized("Mesos master", credential.error());
+  }
+
+  // TODO(nfnt): Authorize the request.
 
   // Check that the request type is DELETE which is guaranteed by the master.
   CHECK_EQ("DELETE", request.method);