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)) {
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);
}
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) {
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)