From: Volker Theile Date: Tue, 29 May 2018 13:09:02 +0000 (+0200) Subject: rgw: Get the user metadata of the user used to sign the request X-Git-Tag: v14.0.1~1108^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=98b4a854fbc4ae255eec4fe647063d68332f479d;p=ceph.git rgw: Get the user metadata of the user used to sign the request Add REST endpoint /admin/metadata/user?myself to get the metadata of the user that is used to sign the request. See feature request https://tracker.ceph.com/issues/24335. Signed-off-by: Volker Theile --- diff --git a/src/rgw/rgw_rest_metadata.cc b/src/rgw/rgw_rest_metadata.cc index 1c588898479c..14056edb3898 100644 --- a/src/rgw/rgw_rest_metadata.cc +++ b/src/rgw/rgw_rest_metadata.cc @@ -59,6 +59,15 @@ void RGWOp_Metadata_Get::execute() { http_ret = 0; } +void RGWOp_Metadata_Get_Myself::execute() { + string owner_id; + + owner_id = s->owner.get_id().to_str(); + s->info.args.append("key", owner_id); + + return RGWOp_Metadata_Get::execute(); +} + void RGWOp_Metadata_List::execute() { string marker = s->info.args.get("marker"); bool max_entries_specified; @@ -301,6 +310,8 @@ void RGWOp_Metadata_Unlock::execute() { } RGWOp *RGWHandler_Metadata::op_get() { + if (s->info.args.exists("myself")) + return new RGWOp_Metadata_Get_Myself; if (s->info.args.exists("key")) return new RGWOp_Metadata_Get; else diff --git a/src/rgw/rgw_rest_metadata.h b/src/rgw/rgw_rest_metadata.h index d91cc0015637..712a7e2d5a1d 100644 --- a/src/rgw/rgw_rest_metadata.h +++ b/src/rgw/rgw_rest_metadata.h @@ -39,6 +39,14 @@ public: const char* name() const override { return "get_metadata"; } }; +class RGWOp_Metadata_Get_Myself : public RGWOp_Metadata_Get { +public: + RGWOp_Metadata_Get_Myself() {} + ~RGWOp_Metadata_Get_Myself() override {} + + void execute() override; +}; + class RGWOp_Metadata_Put : public RGWRESTOp { int get_data(bufferlist& bl); string update_status;