From d5ca7c3fc09c697607e2bb3638a0cc7389b7f1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Wed, 30 Oct 2013 18:33:59 +0100 Subject: [PATCH 1/2] Feature #1678: Return storage monitorization in im_dummy --- src/im_mad/dummy/one_im_dummy.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/im_mad/dummy/one_im_dummy.rb b/src/im_mad/dummy/one_im_dummy.rb index 36c18a4cbf..9e8b145db8 100755 --- a/src/im_mad/dummy/one_im_dummy.rb +++ b/src/im_mad/dummy/one_im_dummy.rb @@ -64,6 +64,10 @@ class DummyInformationManager < OpenNebulaDriver results << "USEDCPU=#{used_cpu}\n" results << "FREECPU=#{800-used_cpu}\n" + results << "DS_LOCATION_USED_MB=9720\n" + results << "DS_LOCATION_TOTAL_MB=20480\n" + results << "DS_LOCATION_FREE_MB=20480\n" + results = Base64::encode64(results).strip.delete("\n") send_message("MONITOR", RESULT[:success], number, results) From dfe2d0a6feb2d00d4d81d8fcf3f79e9027fefe1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 31 Oct 2013 11:13:53 +0100 Subject: [PATCH 2/2] Feature #1678: The sched treats uninitialized shared system DS as non-shared ones. --- src/scheduler/include/DatastoreXML.h | 12 ++++++++++++ src/scheduler/src/pool/DatastoreXML.cc | 5 +++++ src/scheduler/src/sched/Scheduler.cc | 6 +++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/scheduler/include/DatastoreXML.h b/src/scheduler/include/DatastoreXML.h index 2b0d252ecb..8da7f22845 100644 --- a/src/scheduler/include/DatastoreXML.h +++ b/src/scheduler/include/DatastoreXML.h @@ -74,6 +74,16 @@ public: return shared; }; + /** + * Returns true if the DS free_mb is not 0. Only for shared DS + * @return true if the DS is monitored + */ + bool is_monitored() + { + return monitored; + }; + + private: int oid; @@ -81,6 +91,8 @@ private: long long free_mb; /**< Free disk for VMs (in MB). */ + bool monitored; + bool shared; static const char *ds_paths[]; /**< paths for search function */ diff --git a/src/scheduler/src/pool/DatastoreXML.cc b/src/scheduler/src/pool/DatastoreXML.cc index ec7781e425..93d47bcc59 100644 --- a/src/scheduler/src/pool/DatastoreXML.cc +++ b/src/scheduler/src/pool/DatastoreXML.cc @@ -38,6 +38,11 @@ void DatastoreXML::init_attributes() cluster_id = atoi(((*this)["/DATASTORE/CLUSTER_ID"] )[0].c_str() ); free_mb = atoll(((*this)["/DATASTORE/FREE_MB"])[0].c_str()); + long long total_mb = atoll(((*this)["/DATASTORE/TOTAL_MB"])[0].c_str()); + long long used_mb = atoll(((*this)["/DATASTORE/USED_MB"])[0].c_str()); + + monitored = (free_mb != 0 || total_mb != 0 || used_mb != 0); + string shared_st; this->xpath(shared_st, "/DATASTORE/TEMPLATE/SHARED", "YES"); diff --git a/src/scheduler/src/sched/Scheduler.cc b/src/scheduler/src/sched/Scheduler.cc index 210db8655f..fae6eb514f 100644 --- a/src/scheduler/src/sched/Scheduler.cc +++ b/src/scheduler/src/sched/Scheduler.cc @@ -684,7 +684,7 @@ void Scheduler::match_schedule() // Check datastore capacity // ----------------------------------------------------------------- - if (ds->is_shared()) + if (ds->is_shared() && ds->is_monitored()) { if (ds->test_capacity(vm_disk)) { @@ -886,7 +886,7 @@ void Scheduler::dispatch() if (!vm->is_resched()) { - if (ds->is_shared()) + if (ds->is_shared() && ds->is_monitored()) { test_cap_result = ds->test_capacity(dsk); } @@ -944,7 +944,7 @@ void Scheduler::dispatch() // DS capacity is only added for new deployments, not for migrations if (!vm->is_resched()) { - if (ds->is_shared()) + if (ds->is_shared() && ds->is_monitored()) { ds->add_capacity(dsk); }