From: Casey Bodley Date: Wed, 7 Aug 2019 14:09:29 +0000 (-0400) Subject: rgw: add rename_swift_keys for user rename X-Git-Tag: v15.1.0~1913^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d02c1cab5c5e6eb28bd8d12bb379607727ef498a;p=ceph-ci.git rgw: add rename_swift_keys for user rename Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index 480dafc0507..2efd31e7612 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -1936,6 +1936,21 @@ int RGWUser::check_op(RGWUserAdminOpState& op_state, std::string *err_msg) return 0; } +// update swift_keys with new user id +static void rename_swift_keys(const rgw_user& user, + std::map& keys) +{ + std::string user_id; + user.to_str(user_id); + + auto modify_keys = std::move(keys); + for (auto& [k, key] : modify_keys) { + std::string id = user_id + ":" + key.subuser; + key.id = id; + keys[id] = std::move(key); + } +} + int RGWUser::execute_rename(RGWUserAdminOpState& op_state, std::string *err_msg) { int ret; @@ -2063,9 +2078,12 @@ int RGWUser::execute_rename(RGWUserAdminOpState& op_state, std::string *err_msg) // update the 'stub user' with all of the other fields and rewrite all of the // associated index objects - op_state.get_user_info().user_id = uid; + RGWUserInfo& user_info = op_state.get_user_info(); + user_info.user_id = uid; op_state.objv = objv; + rename_swift_keys(uid, user_info.swift_keys); + return update(op_state, err_msg); }