]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: make radosgw-admin user rm idempotent 5918/head
authorOrit Wasserman <owasserm@redhat.com>
Thu, 27 Aug 2015 14:35:25 +0000 (16:35 +0200)
committerOrit Wasserman <owasserm@redhat.com>
Mon, 14 Sep 2015 08:50:16 +0000 (10:50 +0200)
Fixes: #5378
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_user.cc

index 5b1a75b4766ee47dfee3f6f314cda4e7a9ab9f4c..af82ecbbf770e4e50d06303975d56aceb0d1fb0d 100644 (file)
@@ -1764,7 +1764,9 @@ int main(int argc, char **argv)
     break;
   case OPT_USER_RM:
     ret = user.remove(user_op, &err_msg);
-    if (ret < 0) {
+    if (ret == -ENOENT) {
+      cerr << err_msg << std::endl;
+    } else if (ret < 0) {
       cerr << "could not remove user: " << err_msg << std::endl;
       return -ret;
     }
index 47475c3d8b5ea61da17a3a97d4eb39022f6024c1..1931565da9bd6481fec502a5f4077b39759afb38 100644 (file)
@@ -466,7 +466,7 @@ int rgw_delete_user(RGWRados *store, RGWUserInfo& info, RGWObjVersionTracker& ob
   rgw_obj uid_obj(store->zone.user_uid_pool, info.user_id);
   ldout(store->ctx(), 10) << "removing user index: " << info.user_id << dendl;
   ret = store->meta_mgr->remove_entry(user_meta_handler, info.user_id, &objv_tracker);
-  if (ret < 0 && ret != -ENOENT) {
+  if (ret < 0 && ret != -ENOENT && ret  != -ECANCELED) {
     ldout(store->ctx(), 0) << "ERROR: could not remove " << info.user_id << ":" << uid_obj << ", should be fixed (err=" << ret << ")" << dendl;
     return ret;
   }
@@ -1903,7 +1903,7 @@ int RGWUser::execute_remove(RGWUserAdminOpState& op_state, std::string *err_msg)
 
   if (!op_state.has_existing_user()) {
     set_err_msg(err_msg, "user does not exist");
-    return -EINVAL;
+    return -ENOENT;
   }
 
   bool done;