From 682324854cc1d23e68050b48199f4466898a6b42 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Wed, 9 Sep 2015 10:52:41 -0400 Subject: [PATCH] radosgw-admin: add realm set command Signed-off-by: Casey Bodley --- src/rgw/rgw_admin.cc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index 2d12b3a8647ce..7e171b2bc317d 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -90,6 +90,7 @@ void _usage() cerr << " realm list-periods list all realm periods\n"; cerr << " realm remove remove a zonegroup from the realm\n"; cerr << " realm rename rename a realm\n"; + cerr << " realm set set realm info (requires infile)\n"; cerr << " realm set-default set realm as default\n"; cerr << " zonegroup create create a new zone group info\n"; cerr << " zonegroup default set default zone group\n"; @@ -328,6 +329,7 @@ enum { OPT_REALM_LIST_PERIODS, OPT_REALM_REMOVE, OPT_REALM_RENAME, + OPT_REALM_SET, OPT_REALM_SET_DEFAULT, OPT_PERIOD_PREPARE, OPT_PERIOD_DELETE, @@ -517,6 +519,8 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_ return OPT_REALM_REMOVE; if (strcmp(cmd, "rename") == 0) return OPT_REALM_RENAME; + if (strcmp(cmd, "set") == 0) + return OPT_REALM_SET; if (strcmp(cmd, "set-default") == 0) return OPT_REALM_SET_DEFAULT; } else if (strcmp(prev_cmd, "zonegroup") == 0) { @@ -1679,7 +1683,8 @@ int main(int argc, char **argv) opt_cmd == OPT_REALM_DELETE || opt_cmd == OPT_REALM_GET || opt_cmd == OPT_REALM_LIST || opt_cmd == OPT_REALM_LIST_PERIODS || opt_cmd == OPT_REALM_GET_DEFAULT || opt_cmd == OPT_REALM_REMOVE || - opt_cmd == OPT_REALM_RENAME || opt_cmd == OPT_REALM_SET_DEFAULT); + opt_cmd == OPT_REALM_RENAME || opt_cmd == OPT_REALM_SET || + opt_cmd == OPT_REALM_SET_DEFAULT); if (raw_storage_op) { store = RGWStoreManager::get_raw_storage(g_ceph_context); @@ -2012,6 +2017,36 @@ int main(int argc, char **argv) } } break; + case OPT_REALM_SET: + { + if (realm_id.empty() && realm_name.empty()) { + cerr << "no realm name or id provided" << std::endl; + return -EINVAL; + } + if (infile.empty()) { + cerr << "no realm input file provided" << std::endl; + return -EINVAL; + } + RGWRealm realm(realm_id, realm_name); + int ret = realm.init(g_ceph_context, store, false); + if (ret < 0) { + cerr << "failed to init realm: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + ret = read_decode_json(infile, realm); + if (ret < 0) { + return 1; + } + ret = realm.update(); + if (ret < 0) { + cerr << "ERROR: couldn't store realm info: " << cpp_strerror(-ret) << std::endl; + return 1; + } + encode_json("realm", realm, formatter); + formatter->flush(cout); + } + break; + case OPT_REALM_SET_DEFAULT: { RGWRealm realm(realm_id, realm_name); -- 2.39.5