From c09dc4ec45f17f18dd142f655a889629789afe86 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 31 Jul 2019 01:31:22 -0500 Subject: [PATCH] mon/HealthMonitor: persist summary for non-sticky mutes Signed-off-by: Sage Weil --- src/mon/HealthMonitor.cc | 13 +++++++++++++ src/mon/health_check.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/src/mon/HealthMonitor.cc b/src/mon/HealthMonitor.cc index 9437c261780..f0ac5412f84 100644 --- a/src/mon/HealthMonitor.cc +++ b/src/mon/HealthMonitor.cc @@ -294,10 +294,23 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op) ttl = ceph_clock_now(); ttl += std::chrono::duration(secs).count(); } + health_check_map_t all; + gather_all_health_checks(&all); + string summary; + if (!sticky) { + auto p = all.checks.find(code); + if (p == all.checks.end()) { + r = -ENOENT; + ss << "health alert " << code << " is not currently raised"; + goto out; + } + summary = p->second.summary; + } auto& m = pending_mutes[code]; m.code = code; m.ttl = ttl; m.sticky = sticky; + m.summary = summary; } else if (prefix == "health unmute") { string code; if (cmd_getval(g_ceph_context, cmdmap, "code", code)) { diff --git a/src/mon/health_check.h b/src/mon/health_check.h index 9135b892d39..93b9e62f9b0 100644 --- a/src/mon/health_check.h +++ b/src/mon/health_check.h @@ -65,12 +65,14 @@ struct health_mute_t { std::string code; utime_t ttl; bool sticky = false; + string summary; DENC(health_mute_t, v, p) { DENC_START(1, 1, p); denc(v.code, p); denc(v.ttl, p); denc(v.sticky, p); + denc(v.summary, p); DENC_FINISH(p); } @@ -80,6 +82,7 @@ struct health_mute_t { f->dump_stream("ttl") << ttl; } f->dump_bool("sticky", sticky); + f->dump_string("summary", summary); } static void generate_test_instances(std::list& ls) { @@ -88,6 +91,7 @@ struct health_mute_t { ls.back()->code = "OSD_DOWN"; ls.back()->ttl = utime_t(1, 2); ls.back()->sticky = true; + ls.back()->summary = "foo bar"; } }; WRITE_CLASS_DENC(health_mute_t) -- 2.39.5