string prefix;
cmd_getval(cmdmap, "prefix", prefix);
if (prefix == "auth add" ||
+ prefix == "auth rotate" ||
prefix == "auth del" ||
prefix == "auth rm" ||
prefix == "auth get-or-create" ||
wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs,
get_last_committed() + 1));
return true;
+ } else if (prefix == "auth rotate") {
+ if (entity_name.empty()) {
+ ss << "bad entity name";
+ err = -EINVAL;
+ goto done;
+ }
+
+ EntityAuth entity_auth;
+ if (!mon.key_server.get_auth(entity, entity_auth)) {
+ ss << "entity does not exist";
+ err = -ENOENT;
+ goto done;
+ }
+
+ entity_auth.key.create(g_ceph_context, CEPH_CRYPTO_AES);
+
+ KeyServerData::Incremental auth_inc;
+ auth_inc.op = KeyServerData::AUTH_INC_ADD;
+ auth_inc.name = entity;
+ auth_inc.auth = entity_auth;
+ push_cephx_inc(auth_inc);
+
+ _encode_auth(entity, entity_auth, rdata, f.get());
+ wait_for_commit(op, new Monitor::C_Command(mon, op, 0, rs, rdata,
+ get_last_committed() + 1));
+ return true;
}
done:
rdata.append(ds);
"add auth info for <entity> from input file, or random key if no "
"input is given, and/or any caps specified in the command",
"auth", "rwx")
+COMMAND("auth rotate "
+ "name=entity,type=CephString",
+ "rotate entity key",
+ "auth", "rwx")
COMMAND("auth get-or-create-key "
"name=entity,type=CephString "
"name=caps,type=CephString,n=N,req=false",