]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
radosgw-admin: add realm set command
authorCasey Bodley <cbodley@redhat.com>
Wed, 9 Sep 2015 14:52:41 +0000 (10:52 -0400)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 12 Feb 2016 00:12:43 +0000 (16:12 -0800)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_admin.cc

index 2d12b3a8647ce18760327c2f29a8380f0ce4175a..7e171b2bc317d24a4241b04f10fb7208f529a56a 100644 (file)
@@ -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);