From 89d57ec80ebd7d78223920e329f9ec5414d5e31b Mon Sep 17 00:00:00 2001 From: Volker Theile Date: Wed, 16 May 2018 09:52:51 +0200 Subject: [PATCH] rgw: Do not modify email if argument is not set The RGW Admin OPS API overwrites the users email either it is not set via argument, e.g. when executing /{admin}/user?uid=test5&suspended=true. Signed-off-by: Volker Theile (cherry picked from commit c6792a8be2fc1496e7a76b0e6b2579d32556b6b3) --- qa/tasks/radosgw_admin_rest.py | 1 + src/rgw/rgw_rest_user.cc | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/qa/tasks/radosgw_admin_rest.py b/qa/tasks/radosgw_admin_rest.py index 7bd72d19536c..99a742f13b9e 100644 --- a/qa/tasks/radosgw_admin_rest.py +++ b/qa/tasks/radosgw_admin_rest.py @@ -254,6 +254,7 @@ def task(ctx, config): (ret, out) = rgwadmin_rest(admin_conn, ['user', 'info'], {'uid' : user1}) assert ret == 200 assert out['suspended'] + assert out['email'] == email # TESTCASE 're-enable','user','enable','suspended user','succeeds' (ret, out) = rgwadmin_rest(admin_conn, ['user', 'modify'], {'uid' : user1, 'suspended' : 'false'}) diff --git a/src/rgw/rgw_rest_user.cc b/src/rgw/rgw_rest_user.cc index 84194bfa8c03..ee526e3c03a4 100644 --- a/src/rgw/rgw_rest_user.cc +++ b/src/rgw/rgw_rest_user.cc @@ -212,7 +212,7 @@ void RGWOp_User_Modify::execute() bool gen_key; bool suspended; bool system; - + bool email_set; bool quota_set; int32_t max_buckets; @@ -222,7 +222,7 @@ void RGWOp_User_Modify::execute() rgw_user uid(uid_str); RESTArgs::get_string(s, "display-name", display_name, &display_name); - RESTArgs::get_string(s, "email", email, &email); + RESTArgs::get_string(s, "email", email, &email, &email_set); RESTArgs::get_string(s, "access-key", access_key, &access_key); RESTArgs::get_string(s, "secret-key", secret_key, &secret_key); RESTArgs::get_string(s, "user-caps", caps, &caps); @@ -241,7 +241,10 @@ void RGWOp_User_Modify::execute() op_state.set_user_id(uid); op_state.set_display_name(display_name); - op_state.set_user_email(email); + + if (email_set) + op_state.set_user_email(email); + op_state.set_caps(caps); op_state.set_access_key(access_key); op_state.set_secret_key(secret_key); -- 2.47.3