diff options
Diffstat (limited to 'lib/mogilefs/admin.rb')
-rw-r--r-- | lib/mogilefs/admin.rb | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/mogilefs/admin.rb b/lib/mogilefs/admin.rb index 6b63a6b..eeb58ba 100644 --- a/lib/mogilefs/admin.rb +++ b/lib/mogilefs/admin.rb @@ -84,8 +84,9 @@ class MogileFS::Admin < MogileFS::Client # "key"=>"new_new_key"}] def list_fids(from_fid, to_fid) + to_i = { "fid" => true, "devcount" => true, "length" => true } clean('fid_count', 'fid_', - @backend.list_fids(:from => from_fid, :to => to_fid)) + @backend.list_fids(:from => from_fid, :to => to_fid), true, to_i) end ## @@ -327,13 +328,18 @@ class MogileFS::Admin < MogileFS::Client # "altip"=>"", # "altmask"=>""}] - def clean(count, prefix, res, underscore = true) + def clean(count, prefix, res, underscore = true, to_i = []) underscore = underscore ? '_' : '' + keys = res.keys (1..res[count].to_i).map do |i| - dev = res.select { |k,_| k =~ /^#{prefix}#{i}#{underscore}/ }.map do |k,v| - [k.sub(/^#{prefix}#{i}#{underscore}/, ''), v] + re = /^#{prefix}#{i}#{underscore}/ + row = {} + keys.grep(re).each do |k| + v = res[k] + k = k.sub(re, "").freeze + row[k] = to_i.include?(k) ? v.to_i : v end - Hash[*dev.flatten] + row end end |