]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix up osd health report
authorSage Weil <sage.weil@dreamhost.com>
Sat, 23 Apr 2011 23:02:13 +0000 (16:02 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Sat, 23 Apr 2011 23:02:13 +0000 (16:02 -0700)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/mon/Monitor.cc
src/mon/OSDMonitor.cc

index a342445bd728fe3482ce902bc715703050a7868e..eb16f9480de41cd0c45a9b68904685b5db8a0a34 100644 (file)
@@ -361,7 +361,9 @@ void Monitor::handle_command(MMonCommand *m)
       }
       
       stringstream ss;
-      ss << overall << " " << combined;
+      ss << overall;
+      if (combined.length())
+       ss << " " << combined;
       rs = ss.str();
       r = 0;
     }
index 5fd05e6f7e06a90f2f238b946e1666bbf8660ae0..d807fa89ed07e59f8c9df6e5aef5d4f86d4893b0 100644 (file)
@@ -1129,13 +1129,19 @@ enum health_status_t OSDMonitor::get_health(std::ostream &ss) const
   int num_in_osds = osdmap.get_num_in_osds();
 
   if (num_osds == 0) {
-    ss << " no osds";
+    ss << "no osds";
     ret = HEALTH_ERR;
-  }
-  else if ((num_up_osds != num_osds) ||
-          (num_in_osds != num_osds)) {
-    ss << " " << num_up_osds << "/" << num_in_osds << "/" << num_osds << " osds up/in";
-    ret = HEALTH_WARN;
+  } else {
+    if (num_up_osds < num_osds) {
+      ss << (num_osds - num_up_osds) << "/" << num_osds << " osds down";
+      ret = HEALTH_WARN;
+    }
+    if (num_in_osds < num_osds) {
+      if (ret != HEALTH_OK)
+       ss << ", ";
+      ss << (num_osds - num_in_osds) << "/" << num_osds << " osds out";
+      ret = HEALTH_WARN;
+    }
   }
   return ret;
 }