]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Always provide summary for non-healthy cluster 4868/head
authorThorsten Behrens <tbehrens@suse.com>
Fri, 6 Feb 2015 00:26:40 +0000 (01:26 +0100)
committerNathan Cutler <ncutler@suse.com>
Wed, 8 Jul 2015 13:53:00 +0000 (15:53 +0200)
This fixes a problem, wherein calamari does not provide
popup drill-downs for warnings or errors, should the summary
be missing.

Calamari gets health info from /api/v1/cluster/$FSID/health.
If the data here has a summary field, this summary is provided
in a popup window:

  /api/v1/cluster/$FSID/health is populated (ultimately) with
  status obtained via librados python bindings from the ceph
  cluster. In the case where there's clock skew, the summary
  field supplied by the ceph cluster is empty.

No summary field, no popup window with more health details.

Signed-off-by: Thorsten Behrens <tbehrens@suse.com>
(cherry picked from commit eaf6e0cf48488fe604d0ef0db164d44948d4e8d4)

src/mon/Monitor.cc

index 70cb7981cb6d333e15a1a6c9d0e06db1481c81a9..247891029db636cb8f014b119156c64ffddf5c2b 100644 (file)
@@ -2253,26 +2253,6 @@ health_status_t Monitor::get_health(list<string>& status,
 
   health_monitor->get_health(f, summary, (detailbl ? &detail : NULL));
 
-  if (f)
-    f->open_array_section("summary");
-  health_status_t overall = HEALTH_OK;
-  if (!summary.empty()) {
-    while (!summary.empty()) {
-      if (overall > summary.front().first)
-       overall = summary.front().first;
-      status.push_back(summary.front().second);
-      if (f) {
-        f->open_object_section("item");
-        f->dump_stream("severity") <<  summary.front().first;
-        f->dump_string("summary", summary.front().second);
-        f->close_section();
-      }
-      summary.pop_front();
-    }
-  }
-  if (f)
-    f->close_section();
-
   if (f) {
     f->open_object_section("timechecks");
     f->dump_unsigned("epoch", get_epoch());
@@ -2281,6 +2261,7 @@ health_status_t Monitor::get_health(list<string>& status,
       << ((timecheck_round%2) ? "on-going" : "finished");
   }
 
+  health_status_t overall = HEALTH_OK;
   if (!timecheck_skews.empty()) {
     list<string> warns;
     if (f)
@@ -2327,6 +2308,7 @@ health_status_t Monitor::get_health(list<string>& status,
           ss << ",";
       }
       status.push_back(ss.str());
+      summary.push_back(make_pair(HEALTH_WARN, "Monitor clock skew detected "));
     }
     if (f)
       f->close_section();
@@ -2334,6 +2316,25 @@ health_status_t Monitor::get_health(list<string>& status,
   if (f)
     f->close_section();
 
+  if (f)
+    f->open_array_section("summary");
+  if (!summary.empty()) {
+    while (!summary.empty()) {
+      if (overall > summary.front().first)
+       overall = summary.front().first;
+      status.push_back(summary.front().second);
+      if (f) {
+        f->open_object_section("item");
+        f->dump_stream("severity") <<  summary.front().first;
+        f->dump_string("summary", summary.front().second);
+        f->close_section();
+      }
+      summary.pop_front();
+    }
+  }
+  if (f)
+    f->close_section();
+
   stringstream fss;
   fss << overall;
   status.push_front(fss.str());