diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2011-09-02 12:39:42 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@hq.newdream.net> | 2011-09-02 12:48:41 -0700 |
commit | 327d0ddfff12f1e2530e5568eeff0824aa3287ad (patch) | |
tree | 4aaf3e15c77ce52a64432e34b3f2dd986f3f3775 | |
parent | 62f3c460d66ee42a935ab72fe33f3d097403aaa5 (diff) | |
download | ceph-327d0ddfff12f1e2530e5568eeff0824aa3287ad.tar.gz |
rgw: user info dumps json/xml
-rw-r--r-- | src/rgw/rgw_admin.cc | 98 | ||||
-rw-r--r-- | src/test/cli/radosgw_admin/help.t | 4 |
2 files changed, 73 insertions, 29 deletions
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index f5ed950fa30..e2933845bde 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -57,11 +57,11 @@ void _usage() cerr << " --uid=<id> user id\n"; cerr << " --subuser=<name> subuser name\n"; cerr << " --access-key=<key> S3 access key\n"; - cerr << " --os-user=<group:name> OpenStack user\n"; + cerr << " --swift-user=<group:name> Swift user\n"; cerr << " --email=<email>\n"; cerr << " --auth_uid=<auid> librados uid\n"; cerr << " --secret=<key> S3 key\n"; - cerr << " --os-secret=<key> OpenStack key\n"; + cerr << " --swift-secret=<key> Swift key\n"; cerr << " --gen-access-key generate random access key\n"; cerr << " --gen-secret generate random secret key\n"; cerr << " --access=<access> Set access permissions for sub-user, should be one\n"; @@ -266,32 +266,76 @@ string escape_str(string& src, char c) return dest; } -static void show_user_info( RGWUserInfo& info) +static void show_user_info(RGWUserInfo& info, const char *format, Formatter *formatter) { map<string, RGWAccessKey>::iterator kiter; map<string, RGWSubUser>::iterator uiter; - cout << "User ID: " << info.user_id << std::endl; - cout << "RADOS UID: " << info.auid << std::endl; - cout << "Keys:" << std::endl; - for (kiter = info.access_keys.begin(); kiter != info.access_keys.end(); ++kiter) { - RGWAccessKey& k = kiter->second; - cout << " User: " << info.user_id << (k.subuser.empty() ? "" : ":") << k.subuser << std::endl; - cout << " Access Key: " << k.id << std::endl; - cout << " Secret Key: " << k.key << std::endl; - } - cout << "Users: " << std::endl; - for (uiter = info.subusers.begin(); uiter != info.subusers.end(); ++uiter) { - RGWSubUser& u = uiter->second; - cout << " Name: " << info.user_id << ":" << u.name << std::endl; - char buf[256]; - perm_to_str(u.perm_mask, buf, sizeof(buf)); - cout << " Permissions: " << buf << std::endl; + + if (!format) { + cout << "User ID: " << info.user_id << std::endl; + cout << "RADOS UID: " << info.auid << std::endl; + cout << "Keys:" << std::endl; + for (kiter = info.access_keys.begin(); kiter != info.access_keys.end(); ++kiter) { + RGWAccessKey& k = kiter->second; + cout << " User: " << info.user_id << (k.subuser.empty() ? "" : ":") << k.subuser << std::endl; + cout << " Access Key: " << k.id << std::endl; + cout << " Secret Key: " << k.key << std::endl; + } + cout << "Users: " << std::endl; + for (uiter = info.subusers.begin(); uiter != info.subusers.end(); ++uiter) { + RGWSubUser& u = uiter->second; + cout << " Name: " << info.user_id << ":" << u.name << std::endl; + char buf[256]; + perm_to_str(u.perm_mask, buf, sizeof(buf)); + cout << " Permissions: " << buf << std::endl; + } + cout << "Display Name: " << info.display_name << std::endl; + cout << "Email: " << info.user_email << std::endl; + cout << "Swift User: " << (info.openstack_name.size() ? info.openstack_name : "<undefined>")<< std::endl; + cout << "Swift Key: " << (info.openstack_key.size() ? info.openstack_key : "<undefined>")<< std::endl; + } else { + formatter->open_object_section("user_info"); + + formatter->dump_string("user_id", info.user_id.c_str()); + formatter->dump_format("rados_uid", "%lld", info.auid); + formatter->dump_string("display_name", info.display_name.c_str()); + formatter->dump_string("email", info.user_email.c_str()); + formatter->dump_string("swift_user", info.openstack_name.c_str()); + formatter->dump_string("swift_key", info.openstack_key.c_str()); + + // keys + formatter->open_array_section("keys"); + for (kiter = info.access_keys.begin(); kiter != info.access_keys.end(); ++kiter) { + RGWAccessKey& k = kiter->second; + const char *sep = (k.subuser.empty() ? "" : ":"); + const char *subuser = (k.subuser.empty() ? "" : k.subuser.c_str()); + formatter->open_object_section("key"); + formatter->dump_format("user", "%s%s%s", info.user_id.c_str(), sep, subuser); + formatter->dump_string("access_key", k.id); + formatter->dump_string("secret_key", k.key); + formatter->close_section(); + formatter->flush(cout); + } + formatter->close_section(); + + // subusers + formatter->open_array_section("subusers"); + for (uiter = info.subusers.begin(); uiter != info.subusers.end(); ++uiter) { + RGWSubUser& u = uiter->second; + formatter->open_object_section("user"); + formatter->dump_format("id", "%s:%s", info.user_id.c_str(), u.name.c_str()); + char buf[256]; + perm_to_str(u.perm_mask, buf, sizeof(buf)); + formatter->dump_string("permissions", buf); + formatter->close_section(); + formatter->flush(cout); + } + formatter->close_section(); + + formatter->close_section(); + formatter->flush(cout); } - cout << "Display Name: " << info.display_name << std::endl; - cout << "Email: " << info.user_email << std::endl; - cout << "OpenStack User: " << (info.openstack_name.size() ? info.openstack_name : "<undefined>")<< std::endl; - cout << "OpenStack Key: " << (info.openstack_key.size() ? info.openstack_key : "<undefined>")<< std::endl; } static int create_bucket(string bucket_str, string& user_id, string& display_name, uint64_t auid) @@ -816,7 +860,7 @@ int main(int argc, char **argv) remove_old_indexes(old_info, info); - show_user_info(info); + show_user_info(info, format, formatter); break; case OPT_SUBUSER_RM: @@ -827,7 +871,7 @@ int main(int argc, char **argv) cerr << "error storing user info: " << cpp_strerror(-err) << std::endl; break; } - show_user_info(info); + show_user_info(info, format, formatter); break; case OPT_KEY_RM: @@ -842,11 +886,11 @@ int main(int argc, char **argv) break; } } - show_user_info(info); + show_user_info(info, format, formatter); break; case OPT_USER_INFO: - show_user_info(info); + show_user_info(info, format, formatter); break; } diff --git a/src/test/cli/radosgw_admin/help.t b/src/test/cli/radosgw_admin/help.t index adc6259534c..8860c3cdd02 100644 --- a/src/test/cli/radosgw_admin/help.t +++ b/src/test/cli/radosgw_admin/help.t @@ -27,11 +27,11 @@ --uid=<id> user id --subuser=<name> subuser name --access-key=<key> S3 access key - --os-user=<group:name> OpenStack user + --swift-user=<group:name> Swift user --email=<email> --auth_uid=<auid> librados uid --secret=<key> S3 key - --os-secret=<key> OpenStack key + --swift-secret=<key> Swift key --gen-access-key generate random access key --gen-secret generate random secret key --access=<access> Set access permissions for sub-user, should be one |