Fix test refs #16051
[arvados.git] / services / api / lib / config_loader.rb
index 6aeb6fce29eebca04e91e2ec89ebc637d5942cdd..522aa73b0a0545a0cb9fa4b58184877581fb7752 100644 (file)
@@ -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