From 31429d8d40f3364b717dd654e4e3d61885faa8fd Mon Sep 17 00:00:00 2001
From: juanmont <jjmontiel@opennebula.org>
Date: Thu, 22 Mar 2018 15:57:04 +0100
Subject: [PATCH] F #1843: Sent scheduler like parameter

---
 src/scheduler/include/Scheduler.h    | 11 ++++++++---
 src/scheduler/src/sched/Scheduler.cc |  2 ++
 src/scheduler/src/sched/mm_sched.cc  |  3 ++-
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/scheduler/include/Scheduler.h b/src/scheduler/include/Scheduler.h
index 4af223fb9c..cff24bc1b2 100644
--- a/src/scheduler/include/Scheduler.h
+++ b/src/scheduler/include/Scheduler.h
@@ -43,14 +43,19 @@ class Scheduler: public ActionListener
 {
 public:
 
+    static Scheduler* sched;
+
     void start();
 
     virtual void register_policies(const SchedulerTemplate& conf){};
 
-    static Scheduler& instance()
+    static Scheduler& instance(Scheduler* the_sched=0)
     {
-        static Scheduler _sched;
-        return _sched;
+        if ( the_sched != 0)
+        {
+            sched = the_sched;
+        }
+        return *sched;
     }
 
     float get_mem_ds_scale()
diff --git a/src/scheduler/src/sched/Scheduler.cc b/src/scheduler/src/sched/Scheduler.cc
index 30747e4eed..d5fe346087 100644
--- a/src/scheduler/src/sched/Scheduler.cc
+++ b/src/scheduler/src/sched/Scheduler.cc
@@ -37,6 +37,8 @@
 
 using namespace std;
 
+Scheduler* Scheduler::sched = 0;
+
 
 /* -------------------------------------------------------------------------- */
 /* -------------------------------------------------------------------------- */
diff --git a/src/scheduler/src/sched/mm_sched.cc b/src/scheduler/src/sched/mm_sched.cc
index 63b283db18..950d6a5639 100644
--- a/src/scheduler/src/sched/mm_sched.cc
+++ b/src/scheduler/src/sched/mm_sched.cc
@@ -15,6 +15,7 @@
 /* -------------------------------------------------------------------------- */
 
 #include "RankScheduler.h"
+#include "Scheduler.h"
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -25,7 +26,7 @@
 
 int main(int argc, char **argv)
 {
-    Scheduler& sched = RankScheduler::instance();
+    Scheduler& sched = Scheduler::instance(new RankScheduler());
 
     try
     {