Skip to content

Commit

Permalink
Always provide summary for non-healthy cluster
Browse files Browse the repository at this point in the history
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 eaf6e0c)
  • Loading branch information
Thorsten Behrens authored and smithfarm committed Jul 8, 2015
1 parent 72ecd52 commit ecac1a4
Showing 1 changed file with 21 additions and 20 deletions.
41 changes: 21 additions & 20 deletions src/mon/Monitor.cc
Expand Up @@ -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());
Expand All @@ -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)
Expand Down Expand Up @@ -2327,13 +2308,33 @@ 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();
}
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());
Expand Down

0 comments on commit ecac1a4

Please sign in to comment.