]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/HealthMonitor: persist summary for non-sticky mutes
authorSage Weil <sage@redhat.com>
Wed, 31 Jul 2019 06:31:22 +0000 (01:31 -0500)
committerSage Weil <sage@redhat.com>
Thu, 15 Aug 2019 01:40:08 +0000 (20:40 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/HealthMonitor.cc
src/mon/health_check.h

index 9437c2617803a95e640328a33cdd1437b3ffb0c0..f0ac5412f84c251d82ecea9bd433778fda5efafe 100644 (file)
@@ -294,10 +294,23 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op)
       ttl = ceph_clock_now();
       ttl += std::chrono::duration<double>(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)) {
index 9135b892d3941d2361e7fc9c792ac7bc10dde032..93b9e62f9b08b33a2c53befa27326664760e4ef2 100644 (file)
@@ -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<health_mute_t*>& 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)