diff --git a/src/scheduler/include/Scheduler.h b/src/scheduler/include/Scheduler.h index f40b27c589..c95dbf57a5 100644 --- a/src/scheduler/include/Scheduler.h +++ b/src/scheduler/include/Scheduler.h @@ -83,7 +83,8 @@ protected: machines_limit(0), dispatch_limit(0), host_dispatch_limit(0), - mem_ds_scale(0) + mem_ds_scale(0), + diff_vnets(false) { am.addListener(this); }; @@ -227,6 +228,11 @@ private: */ float mem_ds_scale; + /** + * Boolean to dispatch the VM inside different vnets + */ + bool diff_vnets; + /** * oned runtime configuration values */ diff --git a/src/scheduler/src/sched/Scheduler.cc b/src/scheduler/src/sched/Scheduler.cc index d67ad94e2c..31b4bccbe2 100644 --- a/src/scheduler/src/sched/Scheduler.cc +++ b/src/scheduler/src/sched/Scheduler.cc @@ -108,6 +108,7 @@ void Scheduler::start() ostringstream oss; string etc_path; + string diff_vnets_str; unsigned int live_rescheds; @@ -157,6 +158,22 @@ void Scheduler::start() conf.get("MEMORY_SYSTEM_DS_SCALE", mem_ds_scale); + conf.get("DIFFERENT_VNETS", diff_vnets_str); + + one_util::toupper(diff_vnets_str); + + if (diff_vnets_str != "" ) + { + if ( diff_vnets_str == "NO" ) + { + diff_vnets = false; + } + else if ( diff_vnets_str == "YES" ) + { + diff_vnets = true; + } + } + // ----------------------------------------------------------- // Log system & Configuration File // ----------------------------------------------------------- @@ -1537,6 +1554,11 @@ void Scheduler::dispatch() for (n = net_resources.rbegin() ; n != net_resources.rend(); n++) { + if ( diff_vnets && matched_networks.find((*n)->oid) != matched_networks.end() ) + { + continue; + } + net = vnetpool->get((*n)->oid); if ( net == 0 ) diff --git a/src/scheduler/src/sched/SchedulerTemplate.cc b/src/scheduler/src/sched/SchedulerTemplate.cc index b2c5f350a6..eca98cb8b5 100644 --- a/src/scheduler/src/sched/SchedulerTemplate.cc +++ b/src/scheduler/src/sched/SchedulerTemplate.cc @@ -122,6 +122,12 @@ void SchedulerTemplate::set_conf_default() attribute = new SingleAttribute("MEMORY_SYSTEM_DS_SCALE",value); conf_default.insert(make_pair(attribute->name(),attribute)); + //DIFFERENT_VNETS + value = "NO"; + + attribute = new SingleAttribute("DIFFERENT_VNETS",value); + conf_default.insert(make_pair(attribute->name(),attribute)); + //LOG CONFIGURATION vvalue.clear(); vvalue.insert(make_pair("SYSTEM","file"));