From 52b7481197444af08fc9945745e7c7dd9fb20023 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 23 Apr 2011 16:02:13 -0700 Subject: [PATCH] mon: fix up osd health report Signed-off-by: Sage Weil --- src/mon/Monitor.cc | 4 +++- src/mon/OSDMonitor.cc | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index a342445bd728f..eb16f9480de41 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -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; } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 5fd05e6f7e06a..d807fa89ed07e 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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; } -- 2.39.5