From b988f79b463d7d709a1d9dd7037381edb857dd7b Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 10 Mar 2016 14:15:09 -0800 Subject: [PATCH] rgw_admin: policy dump --xml backward compatibility Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_admin.cc | 16 ++++++++++++---- src/rgw/rgw_bucket.cc | 14 ++++++++++++++ src/rgw/rgw_bucket.h | 3 ++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index d7ba50cccf2b..ed0e21fd485c 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -3462,10 +3462,18 @@ int main(int argc, char **argv) } if (opt_cmd == OPT_POLICY) { - int ret = RGWBucketAdminOp::get_policy(store, bucket_op, f); - if (ret < 0) { - cerr << "ERROR: failed to get policy: " << cpp_strerror(-ret) << std::endl; - return -ret; + if (format == "xml") { + int ret = RGWBucketAdminOp::dump_s3_policy(store, bucket_op, cout); + if (ret < 0) { + cerr << "ERROR: failed to get policy: " << cpp_strerror(-ret) << std::endl; + return -ret; + } + } else { + int ret = RGWBucketAdminOp::get_policy(store, bucket_op, f); + if (ret < 0) { + cerr << "ERROR: failed to get policy: " << cpp_strerror(-ret) << std::endl; + return -ret; + } } } diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 9b2294c15a2a..a070508c3150 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -1012,6 +1012,20 @@ int RGWBucketAdminOp::get_policy(RGWRados *store, RGWBucketAdminOpState& op_stat return 0; } +int RGWBucketAdminOp::dump_s3_policy(RGWRados *store, RGWBucketAdminOpState& op_state, + ostream& os) +{ + RGWAccessControlPolicy_S3 policy(store->ctx()); + + int ret = get_policy(store, op_state, policy); + if (ret < 0) + return ret; + + policy.to_xml(os); + + return 0; +} + int RGWBucketAdminOp::unlink(RGWRados *store, RGWBucketAdminOpState& op_state) { RGWBucket bucket; diff --git a/src/rgw/rgw_bucket.h b/src/rgw/rgw_bucket.h index 924c636021fd..069d81825db3 100644 --- a/src/rgw/rgw_bucket.h +++ b/src/rgw/rgw_bucket.h @@ -292,7 +292,8 @@ public: RGWFormatterFlusher& flusher); static int get_policy(RGWRados *store, RGWBucketAdminOpState& op_state, RGWAccessControlPolicy& policy); - + static int dump_s3_policy(RGWRados *store, RGWBucketAdminOpState& op_state, + ostream& os); static int unlink(RGWRados *store, RGWBucketAdminOpState& op_state); static int link(RGWRados *store, RGWBucketAdminOpState& op_state, string *err_msg = NULL); -- 2.47.3