diff --git a/src/scheduler/include/HostPoolXML.h b/src/scheduler/include/HostPoolXML.h index deead4b2f8..8160262df6 100644 --- a/src/scheduler/include/HostPoolXML.h +++ b/src/scheduler/include/HostPoolXML.h @@ -49,9 +49,9 @@ protected: return get_nodes("/HOST_POOL/HOST[STATE<3]", content); }; - virtual void add_object(xmlNodePtr node); + void add_object(xmlNodePtr node); - virtual int load_info(xmlrpc_c::value &result); + int load_info(xmlrpc_c::value &result); }; #endif /* HOST_POOL_XML_H_ */ diff --git a/src/scheduler/include/PoolXML.h b/src/scheduler/include/PoolXML.h index e206524de8..4acc8e3f51 100644 --- a/src/scheduler/include/PoolXML.h +++ b/src/scheduler/include/PoolXML.h @@ -53,7 +53,7 @@ public: flush(); // ------------------------------------------------------------------------- - // Load the ids (to get an updated list of hosts) + // Load the ids (to get an updated list of the pool) // ------------------------------------------------------------------------- xmlrpc_c::value result; @@ -97,6 +97,8 @@ public: add_object(nodes[i]); } + free_nodes(nodes); + return 0; }; diff --git a/src/scheduler/include/Scheduler.h b/src/scheduler/include/Scheduler.h index 6cd9886af7..5fd1ae6365 100644 --- a/src/scheduler/include/Scheduler.h +++ b/src/scheduler/include/Scheduler.h @@ -18,6 +18,7 @@ #define SCHEDULER_H_ #include "Log.h" +#include "UserPoolXML.h" #include "HostPoolXML.h" #include "VirtualMachinePoolXML.h" #include "SchedulerPolicy.h" @@ -48,6 +49,7 @@ protected: int _machines_limit, int _dispatch_limit, int _host_dispatch_limit): hpool(0), vmpool(0), + upool(0), timer(_timer), url(_url), machines_limit(_machines_limit), @@ -71,6 +73,11 @@ protected: delete vmpool; } + if ( upool != 0) + { + delete upool; + } + if ( client != 0) { delete client; @@ -83,6 +90,7 @@ protected: HostPoolXML * hpool; VirtualMachinePoolXML * vmpool; + UserPoolXML * upool; // --------------------------------------------------------------- // Scheduler Policies diff --git a/src/scheduler/src/pool/SConstruct b/src/scheduler/src/pool/SConstruct index 31fe496bf4..0eb31942d5 100644 --- a/src/scheduler/src/pool/SConstruct +++ b/src/scheduler/src/pool/SConstruct @@ -21,6 +21,8 @@ Import('sched_env') lib_name='scheduler_pool' source_files=[ + 'UserPoolXML.cc', + 'UserXML.cc', 'HostPoolXML.cc', 'HostXML.cc', 'VirtualMachinePoolXML.cc', diff --git a/src/scheduler/src/sched/Scheduler.cc b/src/scheduler/src/sched/Scheduler.cc index 7bd288d11c..6b22e106f3 100644 --- a/src/scheduler/src/sched/Scheduler.cc +++ b/src/scheduler/src/sched/Scheduler.cc @@ -121,6 +121,7 @@ void Scheduler::start() hpool = new HostPoolXML(client); vmpool = new VirtualMachinePoolXML(client, machines_limit); + upool = new UserPoolXML(client); // ----------------------------------------------------------- // Load scheduler policies @@ -228,6 +229,17 @@ int Scheduler::set_up_pools() return rc; } + //-------------------------------------------------------------------------- + //Cleans the cache and get the pending VMs + //-------------------------------------------------------------------------- + + rc = upool->set_up(); + + if ( rc != 0 ) + { + return rc; + } + //-------------------------------------------------------------------------- //Get the matching hosts for each VM //--------------------------------------------------------------------------