diff options
Diffstat (limited to 'lib/mogilefs/admin.rb')
-rw-r--r-- | lib/mogilefs/admin.rb | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/lib/mogilefs/admin.rb b/lib/mogilefs/admin.rb index 6a746ac..0a90cd6 100644 --- a/lib/mogilefs/admin.rb +++ b/lib/mogilefs/admin.rb @@ -151,7 +151,8 @@ class MogileFS::Admin < MogileFS::Client # "test" => { # "default" => { # "mindevcount" => 2, - # "replpolicy" => "MultipleHosts()" + # "replpolicy" => "MultipleHosts()", + # "hashtype => nil, # } # } # } @@ -166,12 +167,13 @@ class MogileFS::Admin < MogileFS::Client domains = {} to_i = %w(mindevcount) + want = %w(name replpolicy hashtype mindevcount) (1..res['domains'].to_i).each do |i| - domain = clean "domain#{i}classes", "domain#{i}class", res, false, to_i - - tmp = domains[res["domain#{i}"].freeze] = {} + domain = clean("domain#{i}classes", "domain#{i}class", res, false, to_i, + want) + tmp = domains[res["domain#{i}"]] = {} domain.each do |d| - tmp[d.delete("name").freeze] = d + tmp[d.delete("name")] = d have_replpolicy ||= d.include?("replpolicy") end end @@ -370,23 +372,33 @@ class MogileFS::Admin < MogileFS::Client # "altip"=>"", # "altmask"=>""}] - def clean(count, prefix, res, underscore = true, to_i = []) + def clean(count, prefix, res, underscore = true, to_i = [], want = nil) empty = "" underscore = underscore ? '_' : empty # convert array to hash for O(1) lookups to_i = to_i.inject({}) { |m,k| m[k] = m } - - keys = res.keys - (1..res[count].to_i).map do |i| - re = /^#{prefix}#{i}#{underscore}/ - row = {} - keys.grep(re).each do |k| - v = res[k] - k = k.sub(re, empty).freeze - row[k] = to_i.include?(k) ? (empty == v ? nil : v.to_i) : v + if want + (1..res[count].to_i).map do |i| + row = {} + want.each do |k| + v = res["#{prefix}#{i}#{underscore}#{k}"] or next + row[k] = to_i.include?(k) ? (empty == v ? nil : v.to_i) : v + end + row + end + else + keys = res.keys + (1..res[count].to_i).map do |i| + re = /^#{prefix}#{i}#{underscore}/ + row = {} + keys.grep(re).each do |k| + v = res[k] + k = k.sub(re, empty) + row[k] = to_i.include?(k) ? (empty == v ? nil : v.to_i) : v + end + row end - row end end |