Repository: mesos
Updated Branches:
  refs/heads/master a0811310c -> b56f7d27d


Added callback to the QoS Controller to retrieve usages from the monitor.

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


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

Branch: refs/heads/master
Commit: 37533b92b95f14c4713218952140804e8c60a3c0
Parents: a081131
Author: Bartek Plotka <[email protected]>
Authored: Fri Jun 12 13:47:56 2015 -0700
Committer: Jie Yu <[email protected]>
Committed: Fri Jun 12 13:47:58 2015 -0700

----------------------------------------------------------------------
 include/mesos/slave/qos_controller.hpp | 11 ++++++++---
 src/slave/qos_controller.cpp           |  6 +++---
 src/slave/qos_controller.hpp           |  5 ++++-
 src/slave/slave.cpp                    |  5 +++--
 src/tests/mesos.hpp                    |  8 +++++---
 5 files changed, 23 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/37533b92/include/mesos/slave/qos_controller.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/slave/qos_controller.hpp 
b/include/mesos/slave/qos_controller.hpp
index 1d89acf..7e280cc 100644
--- a/include/mesos/slave/qos_controller.hpp
+++ b/include/mesos/slave/qos_controller.hpp
@@ -29,6 +29,7 @@
 #include <process/future.hpp>
 #include <process/queue.hpp>
 
+#include <stout/lambda.hpp>
 #include <stout/nothing.hpp>
 #include <stout/option.hpp>
 #include <stout/try.hpp>
@@ -52,9 +53,13 @@ public:
 
   virtual ~QoSController() {}
 
-  // Initializes this QoS Controller.
-  // TODO(nnielsen): Pass ResourceMonitor* once it's exposed.
-  virtual Try<Nothing> initialize() = 0;
+  // Initializes this QoS Controller. This method needs to be
+  // called before any other member method is called. It registers
+  // a callback in the QoS Controller. The callback allows the
+  // QoS Controller to fetch the current resource usage for each
+  // executor on slave.
+  virtual Try<Nothing> initialize(
+      const lambda::function<process::Future<ResourceUsage>()>& usage) = 0;
 
   // A QoS Controller informs the slave about corrections to carry
   // out, but returning futures to QoSCorrection objects. For more

http://git-wip-us.apache.org/repos/asf/mesos/blob/37533b92/src/slave/qos_controller.cpp
----------------------------------------------------------------------
diff --git a/src/slave/qos_controller.cpp b/src/slave/qos_controller.cpp
index febb236..5788368 100644
--- a/src/slave/qos_controller.cpp
+++ b/src/slave/qos_controller.cpp
@@ -81,7 +81,8 @@ NoopQoSController::~NoopQoSController()
 }
 
 
-Try<Nothing> NoopQoSController::initialize()
+Try<Nothing> NoopQoSController::initialize(
+    const lambda::function<Future<ResourceUsage>()>& usage)
 {
   if (process.get() != NULL) {
     return Error("Noop QoS Controller has already been initialized");
@@ -94,8 +95,7 @@ Try<Nothing> NoopQoSController::initialize()
 }
 
 
-process::Future<list<mesos::slave::QoSCorrection>>
-NoopQoSController::corrections()
+Future<list<mesos::slave::QoSCorrection>> NoopQoSController::corrections()
 {
   return Future<list<mesos::slave::QoSCorrection>>();
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/37533b92/src/slave/qos_controller.hpp
----------------------------------------------------------------------
diff --git a/src/slave/qos_controller.hpp b/src/slave/qos_controller.hpp
index b377983..6188a74 100644
--- a/src/slave/qos_controller.hpp
+++ b/src/slave/qos_controller.hpp
@@ -21,6 +21,8 @@
 
 #include <mesos/slave/qos_controller.hpp>
 
+#include <stout/lambda.hpp>
+
 #include <process/owned.hpp>
 
 namespace mesos {
@@ -39,7 +41,8 @@ class NoopQoSController : public mesos::slave::QoSController
 public:
   virtual ~NoopQoSController();
 
-  virtual Try<Nothing> initialize();
+  virtual Try<Nothing> initialize(
+      const lambda::function<process::Future<ResourceUsage>()>& usage);
 
   virtual process::Future<std::list<mesos::slave::QoSCorrection>> 
corrections();
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/37533b92/src/slave/slave.cpp
----------------------------------------------------------------------
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index b523c2f..9af69d8 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -335,8 +335,9 @@ void Slave::initialize()
             << initialize.error();
   }
 
-  // TODO(nnielsen): Pass ResourceMonitor* to 'initialize'.
-  initialize = qosController->initialize();
+  initialize = qosController->initialize(
+      defer(self(), &Self::usage));
+
   if (initialize.isError()) {
     EXIT(1) << "Failed to initialize the QoS Controller: "
             << initialize.error();

http://git-wip-us.apache.org/repos/asf/mesos/blob/37533b92/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index e19ef98..b80987b 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -753,9 +753,9 @@ class MockQoSController : public mesos::slave::QoSController
 public:
   MockQoSController()
   {
-    ON_CALL(*this, initialize())
+    ON_CALL(*this, initialize(_))
       .WillByDefault(Return(Nothing()));
-    EXPECT_CALL(*this, initialize())
+    EXPECT_CALL(*this, initialize(_))
       .WillRepeatedly(DoDefault());
 
     ON_CALL(*this, corrections())
@@ -765,7 +765,9 @@ public:
       .WillRepeatedly(DoDefault());
   }
 
-  MOCK_METHOD0(initialize, Try<Nothing>());
+  MOCK_METHOD1(
+      initialize,
+      Try<Nothing>(const lambda::function<process::Future<ResourceUsage>()>&));
 
   MOCK_METHOD0(
       corrections, process::Future<std::list<mesos::slave::QoSCorrection>>());

Reply via email to