MCPcopy Create free account
hub / github.com/ceph/ceph / prepare_command

Method prepare_command

src/mon/LogMonitor.cc:1013–1061  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1011
1012
1013bool LogMonitor::prepare_command(MonOpRequestRef op)
1014{
1015 op->mark_logmon_event("prepare_command");
1016 auto m = op->get_req<MMonCommand>();
1017 stringstream ss;
1018 string rs;
1019 int err = -EINVAL;
1020
1021 cmdmap_t cmdmap;
1022 if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
1023 // ss has reason for failure
1024 string rs = ss.str();
1025 mon.reply_command(op, -EINVAL, rs, get_last_committed());
1026 return true;
1027 }
1028
1029 string prefix;
1030 cmd_getval(cmdmap, "prefix", prefix);
1031
1032 MonSession *session = op->get_session();
1033 if (!session) {
1034 mon.reply_command(op, -EACCES, "access denied", get_last_committed());
1035 return true;
1036 }
1037
1038 if (prefix == "log") {
1039 vector<string> logtext;
1040 cmd_getval(cmdmap, "logtext", logtext);
1041 LogEntry le;
1042 le.rank = m->get_orig_source();
1043 le.addrs.v.push_back(m->get_orig_source_addr());
1044 le.name = session->entity_name;
1045 le.stamp = m->get_recv_stamp();
1046 le.seq = 0;
1047 string level_str = cmd_getval_or<string>(cmdmap, "level", "info");
1048 le.prio = LogEntry::str_to_level(level_str);
1049 le.channel = CLOG_CHANNEL_DEFAULT;
1050 le.msg = str_join(logtext, " ");
1051 pending_keys.insert(le.key());
1052 pending_log.insert(pair<utime_t,LogEntry>(le.stamp, le));
1053 wait_for_commit(op, new Monitor::C_Command(
1054 mon, op, 0, string(), get_last_committed() + 1));
1055 return true;
1056 }
1057
1058 getline(ss, rs);
1059 mon.reply_command(op, err, rs, get_last_committed());
1060 return false;
1061}
1062
1063void LogMonitor::dump_info(Formatter *f)
1064{

Callers

nothing calls this directly

Calls 12

cmdmap_from_jsonFunction · 0.85
mark_logmon_eventMethod · 0.80
reply_commandMethod · 0.80
get_orig_sourceMethod · 0.80
get_orig_source_addrMethod · 0.80
cmd_getvalFunction · 0.70
str_joinFunction · 0.50
strMethod · 0.45
get_sessionMethod · 0.45
push_backMethod · 0.45
insertMethod · 0.45
keyMethod · 0.45

Tested by

no test coverage detected