]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon/HealthMonitor: add sticky flag to mutes
authorSage Weil <sage@redhat.com>
Wed, 31 Jul 2019 03:54:25 +0000 (22:54 -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/MonCommands.h
src/mon/Monitor.cc
src/mon/health_check.h

index 8b94cfb23344955cd5ce2de570f3a869813814cf..7945365ad04da6ead2f2be3be52d1e64f7fbaa2a 100644 (file)
@@ -274,12 +274,14 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op)
 
   if (prefix == "health mute") {
     string code;
+    bool sticky = false;
     if (!cmd_getval(g_ceph_context, cmdmap, "code", code) ||
        code == "") {
       r = -EINVAL;
       ss << "must specify an alert code to mute";
       goto out;
     }
+    cmd_getval(g_ceph_context, cmdmap, "sticky", sticky);
     string ttl_str;
     utime_t ttl;
     if (cmd_getval(g_ceph_context, cmdmap, "ttl", ttl_str)) {
@@ -295,6 +297,7 @@ bool HealthMonitor::prepare_command(MonOpRequestRef op)
     auto& m = pending_mutes[code];
     m.code = code;
     m.ttl = ttl;
+    m.sticky = sticky;
   } else if (prefix == "health unmute") {
     string code;
     if (cmd_getval(g_ceph_context, cmdmap, "code", code)) {
index b51979ed87d151c034afd383972e4cf1ab060043..5c0a47c80c5af82f98d01326b7f4978efcae27b3 100644 (file)
@@ -211,9 +211,13 @@ COMMAND_WITH_FLAG("injectargs " \
 COMMAND("status", "show cluster status", "mon", "r")
 COMMAND("health name=detail,type=CephChoices,strings=detail,req=false", \
        "show cluster health", "mon", "r")
-COMMAND("health mute name=code,type=CephString name=ttl,type=CephString,req=false",
+COMMAND("health mute "\
+       "name=code,type=CephString " \
+       "name=ttl,type=CephString,req=false " \
+       "name=sticky,type=CephBool,req=false",
        "mute health alert", "mon", "w")
-COMMAND("health unmute name=code,type=CephString,req=false",
+COMMAND("health unmute "\
+       "name=code,type=CephString,req=false",
        "unmute existing health alert mute(s)", "mon", "w")
 COMMAND("time-sync-status", "show time sync status", "mon", "r")
 COMMAND("df name=detail,type=CephChoices,strings=detail,req=false", \
index ec81805637e7e7f501d8b9e6c0b756c21b977847..d81bbabec205bb59eef3de9fbd50ac7f8cb6122b 100644 (file)
@@ -2881,6 +2881,9 @@ health_status_t Monitor::get_health_status(
              *plain += "0s";
            }
          }
+         if (q->second.sticky) {
+           *plain += ", STICKY";
+         }
          *plain += ") ";
        }
        *plain += "["s + short_health_string(p.second.severity) + "] " +
index 0b08435043ee68f8bd817b88ac3b706bc29c5135..9135b892d3941d2361e7fc9c792ac7bc10dde032 100644 (file)
@@ -64,11 +64,13 @@ WRITE_CLASS_DENC(health_check_t)
 struct health_mute_t {
   std::string code;
   utime_t ttl;
+  bool sticky = false;
 
   DENC(health_mute_t, v, p) {
     DENC_START(1, 1, p);
     denc(v.code, p);
     denc(v.ttl, p);
+    denc(v.sticky, p);
     DENC_FINISH(p);
   }
 
@@ -77,6 +79,7 @@ struct health_mute_t {
     if (ttl != utime_t()) {
       f->dump_stream("ttl") << ttl;
     }
+    f->dump_bool("sticky", sticky);
   }
 
   static void generate_test_instances(std::list<health_mute_t*>& ls) {
@@ -84,6 +87,7 @@ struct health_mute_t {
     ls.push_back(new health_mute_t);
     ls.back()->code = "OSD_DOWN";
     ls.back()->ttl = utime_t(1, 2);
+    ls.back()->sticky = true;
   }
 };
 WRITE_CLASS_DENC(health_mute_t)