From 8ad346a3a90d65b2c301aa770e450c2c256854ff Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 17 May 2011 18:32:03 -0700 Subject: [PATCH] mon: 'auth caps [svc value [svc2 value2 [...]]]' Avoid having to futz with cauthtool if possible. Signed-off-by: Sage Weil --- src/mon/AuthMonitor.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/mon/AuthMonitor.cc b/src/mon/AuthMonitor.cc index 96f2832a9f23f..c618d3759021f 100644 --- a/src/mon/AuthMonitor.cc +++ b/src/mon/AuthMonitor.cc @@ -445,6 +445,7 @@ bool AuthMonitor::preprocess_command(MMonCommand *m) if (m->cmd.size() > 1) { if (m->cmd[1] == "add" || m->cmd[1] == "del" || + m->cmd[1] == "caps" || m->cmd[1] == "list") { return false; } @@ -588,6 +589,33 @@ bool AuthMonitor::prepare_command(MMonCommand *m) paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); return true; } + else if (m->cmd[1] == "caps" && m->cmd.size() >= 3) { + KeyServerData::Incremental auth_inc; + if (!auth_inc.name.from_str(m->cmd[2])) { + ss << "bad entity name"; + rs = -EINVAL; + goto done; + } + if (!mon->key_server.contains(auth_inc.name)) { + ss << "couldn't find entry " << auth_inc.name; + rs = -ENOENT; + goto done; + } + mon->key_server.get_auth(auth_inc.name, auth_inc.auth); + + map newcaps; + for (unsigned i=3; i+1cmd.size(); i++) + ::encode(m->cmd[i+1], newcaps[m->cmd[i]]); + + auth_inc.op = KeyServerData::AUTH_INC_ADD; + auth_inc.auth.caps = newcaps; + push_cephx_inc(auth_inc); + + ss << "updated caps for " << auth_inc.name; + getline(ss, rs); + paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); + return true; + } else if (m->cmd[1] == "del" && m->cmd.size() >= 3) { string name = m->cmd[2]; KeyServerData::Incremental auth_inc; -- 2.39.5