]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: swift key removal
authorYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 12 Oct 2011 21:46:09 +0000 (14:46 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Wed, 12 Oct 2011 21:46:42 +0000 (14:46 -0700)
src/rgw/rgw_admin.cc

index 61b406c33d591a8d6725d271f3948e04609978d0..3590f379d4cd4b87b264855f1c65311a489d1349 100644 (file)
@@ -620,7 +620,7 @@ int main(int argc, char **argv)
     free(suser);
   }
 
-  if (opt_cmd == OPT_KEY_RM && access_key.empty()) {
+  if (opt_cmd == OPT_KEY_RM && key_type == KEY_TYPE_S3 && access_key.empty()) {
     cerr << "error: access key was not specified" << std::endl;
     return usage();
   }
@@ -836,15 +836,26 @@ int main(int argc, char **argv)
     break;
 
   case OPT_KEY_RM:
-    kiter = info.access_keys.find(access_key);
-    if (kiter == info.access_keys.end()) {
-      cerr << "key not found" << std::endl;
-    } else {
-      rgw_remove_key_index(kiter->second);
-      info.access_keys.erase(kiter);
-      if ((err = rgw_store_user_info(info)) < 0) {
-        cerr << "error storing user info: " << cpp_strerror(-err) << std::endl;
-        break;
+    {
+      map<string, RGWAccessKey> *keys_map;
+      if (key_type == KEY_TYPE_SWIFT) {
+        access_key = info.user_id;
+        access_key.append(":");
+        access_key.append(subuser);
+        keys_map = &info.swift_keys;
+      } else {
+        keys_map = &info.access_keys;
+      }
+      kiter = keys_map->find(access_key);
+      if (kiter == keys_map->end()) {
+        cerr << "key not found" << std::endl;
+      } else {
+        rgw_remove_key_index(kiter->second);
+        keys_map->erase(kiter);
+        if ((err = rgw_store_user_info(info)) < 0) {
+          cerr << "error storing user info: " << cpp_strerror(-err) << std::endl;
+          break;
+        }
       }
     }
     show_user_info(info, formatter);