admin: get_devices returns observed_state again
authorEric Wong <normalperson@yhbt.net>
Mon, 8 Oct 2012 22:10:29 +0000 (8 15:10 -0700)
committerEric Wong <normalperson@yhbt.net>
Mon, 8 Oct 2012 22:10:29 +0000 (8 15:10 -0700)
Blank observed_state (for dead devices) are mapped to nil.

lib/mogilefs/admin.rb

index 1b16765..9855d8c 100644 (file)
@@ -57,16 +57,26 @@ class MogileFS::Admin < MogileFS::Client
   #     "devid"=>1,
   #     "hostid"=>1,
   #     "mb_used"=>666,
+  #     "utilization"=>0.0,
+  #     "reject_bad_md5"=>false,
+  #     "observed_state"=>"writeable",
   #     "mb_total"=>666666}]
 
   def get_devices(devid = nil)
     to_i = %w(mb_asof mb_free mb_used mb_total devid weight hostid)
-    want = %w(status).concat(to_i)
+    want = %w(status observed_state).concat(to_i)
     rv = @backend.get_devices(devid ? { :devid => devid } : {})
     rv = clean('devices', 'dev', rv, true, to_i, want)
+    ostates = Hash[%w(readable writeable unreachable).map! { |f| [f,f] }]
+
     rv.each do |row|
       u = row["utilization"] and
         row["utilization"] = nil == u ? nil : u.to_f
+
+      # maps "" to nil (for dead devices)
+      row["observed_state"] = ostates[row["observed_state"]]
+
+      # be sure we do not set this at all for pre-2.60 MogileFS-Server
       case row["reject_bad_md5"]
       when "1"
         row["reject_bad_md5"] = true