From bf25bfda1328d7a8ce8ef2d872edcf9695c9fea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Thu, 24 Oct 2013 18:29:28 +0200 Subject: [PATCH] Feature #1678: Volatile size quotas are long long in c++, change ruby fsck & migrator to use ints instead of floats --- src/onedb/4.2.0_to_4.3.80.rb | 4 ++-- src/onedb/fsck.rb | 19 +++++-------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/onedb/4.2.0_to_4.3.80.rb b/src/onedb/4.2.0_to_4.3.80.rb index 247eec1119..9180f13b5f 100644 --- a/src/onedb/4.2.0_to_4.3.80.rb +++ b/src/onedb/4.2.0_to_4.3.80.rb @@ -302,7 +302,7 @@ http://opennebula.org/documentation:rel4.4:upgrade if ( type == "SWAP" || type == "FS") e.each_element("SIZE") { |size_elem| - vol_used += size_elem.text.to_f + vol_used += size_elem.text.to_i } end } @@ -326,7 +326,7 @@ http://opennebula.org/documentation:rel4.4:upgrade vm_elem.add_element("VMS_USED").text = vms_used.to_s vm_elem.add_element("VOLATILE_SIZE").text = vol_limit - vm_elem.add_element("VOLATILE_SIZE_USED").text = sprintf('%.2f', vol_used) + vm_elem.add_element("VOLATILE_SIZE_USED").text = vol_used.to_s end end diff --git a/src/onedb/fsck.rb b/src/onedb/fsck.rb index 306432af17..e222fc5c1e 100644 --- a/src/onedb/fsck.rb +++ b/src/onedb/fsck.rb @@ -1286,7 +1286,7 @@ module OneDBFsck cpu_used = 0.0 mem_used = 0 vms_used = 0 - vol_used = 0.0 + vol_used = 0 # VNet quotas vnet_usage = {} @@ -1318,8 +1318,7 @@ module OneDBFsck if ( type == "SWAP" || type == "FS") e.each_element("SIZE") { |size_elem| - vol_used += size_elem.text.to_f - vol_used = (vol_used * 100).to_i / 100.0 + vol_used += size_elem.text.to_i } end } @@ -1399,17 +1398,9 @@ module OneDBFsck } vm_elem.each_element("VOLATILE_SIZE_USED") { |e| - # Check if the float value or the string representation mismatch, - # but ignoring the precision - - different = ( e.text.to_f != vol_used || - ![sprintf('%.2f', vol_used), sprintf('%.1f', vol_used), sprintf('%.0f', vol_used)].include?(e.text) ) - - vol_used_str = sprintf('%.2f', vol_used) - - if different - log_error("#{resource} #{oid} quotas: VOLATILE_SIZE_USED has #{e.text} \tis\t#{vol_used_str}") - e.text = vol_used_str + if e.text != vol_used.to_s + log_error("#{resource} #{oid} quotas: VOLATILE_SIZE_USED has #{e.text} \tis\t#{vol_used}") + e.text = vol_used.to_s end }