From 1034b2ada9bc1a63b63e094085d2851eb8846ae5 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Thu, 6 Jun 2019 16:03:10 -0400 Subject: [PATCH] 15000: Accept byte size suffixes (KB, KiB, ...) for numeric configs. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- services/api/lib/config_loader.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/services/api/lib/config_loader.rb b/services/api/lib/config_loader.rb index 6aeb6fce29..522aa73b0a 100644 --- a/services/api/lib/config_loader.rb +++ b/services/api/lib/config_loader.rb @@ -134,6 +134,31 @@ class ConfigLoader cfg[k] = URI(cfg[k]) end + if cfgtype == Integer && cfg[k].is_a?(String) + v = cfg[k].sub(/B\s*$/, '') + if mt = /(-?\d*\.?\d+)\s*([KMGTPE]i?)$/.match(v) + if mt[1].index('.') + v = mt[1].to_f + else + v = mt[1].to_i + end + cfg[k] = v * { + 'K' => 1000, + 'Ki' => 1 << 10, + 'M' => 1000000, + 'Mi' => 1 << 20, + "G" => 1000000000, + "Gi" => 1 << 30, + "T" => 1000000000000, + "Ti" => 1 << 40, + "P" => 1000000000000000, + "Pi" => 1 << 50, + "E" => 1000000000000000000, + "Ei" => 1 << 60, + }[mt[2]] + end + end + if !cfg[k].is_a? cfgtype raise "#{cfgkey} expected #{cfgtype} but was #{cfg[k].class}" end -- 2.39.5