]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add a new error code for invalid admin capability
authorDunrong Huang <riegamaths@gmail.com>
Wed, 23 Dec 2015 14:19:36 +0000 (22:19 +0800)
committerDunrong Huang <riegamaths@gmail.com>
Thu, 24 Dec 2015 12:26:14 +0000 (20:26 +0800)
From http://docs.ceph.com/docs/master/radosgw/adminops/ when attempt to
grant invalid admin capability, rgw should return InvalidCap rather than
InvalidArgument.

Signed-off-by: Dunrong Huang <riegamaths@gmail.com>
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_http_errors.h
src/rgw/rgw_user.cc

index 9e20fa328195376bdba5469932e08890ac89c956..dfd31050a43c9efa5e3182b0b74be7efaacbfb54 100644 (file)
@@ -1010,7 +1010,7 @@ int RGWUserCaps::get_cap(const string& cap, string& type, uint32_t *pperm)
   }
 
   if (!is_valid_cap_type(type))
-    return -EINVAL;
+    return -ERR_INVALID_CAP;
 
   string cap_perm;
   uint32_t perm = 0;
index 7ff0d87a1b285b28ffcc8d8984167cb169617df5..59893527d03b4abdac954dff27ecb6d3aa7b6d89 100644 (file)
@@ -160,6 +160,7 @@ using ceph::crypto::MD5;
 #define ERR_KEY_EXIST            2033
 #define ERR_INVALID_SECRET_KEY   2034
 #define ERR_INVALID_KEY_TYPE     2035
+#define ERR_INVALID_CAP          2036
 #define ERR_USER_SUSPENDED       2100
 #define ERR_INTERNAL_ERROR       2200
 #define ERR_NOT_IMPLEMENTED      2201
index df1b59db1a12453af961b2f24d22998881db24bb..fbe805f41de2f0e383a83ca04c4210316c59f143 100644 (file)
@@ -55,6 +55,7 @@ const static struct rgw_http_errors RGW_HTTP_ERRORS[] = {
     { ERR_KEY_EXIST, 409, "KeyExists"},
     { ERR_INVALID_SECRET_KEY, 400, "InvalidSecretKey"},
     { ERR_INVALID_KEY_TYPE, 400, "InvalidKeyType"},
+    { ERR_INVALID_CAP, 400, "InvalidCapability"},
     { ENOTEMPTY, 409, "BucketNotEmpty" },
     { ERR_PRECONDITION_FAILED, 412, "PreconditionFailed" },
     { ERANGE, 416, "InvalidRange" },
index 296a400e0c6d6b5d10e89d5f34b9f316dd88d177..49c579fd1be7e5f18fb90c6cff076254c8ebe13e 100644 (file)
@@ -1521,7 +1521,7 @@ int RGWUserCapPool::init(RGWUserAdminOpState& op_state)
   caps = op_state.get_caps_obj();
   if (!caps) {
     caps_allowed = false;
-    return -EINVAL;
+    return -ERR_INVALID_CAP;
   }
 
   caps_allowed = true;
@@ -1551,7 +1551,7 @@ int RGWUserCapPool::add(RGWUserAdminOpState& op_state, std::string *err_msg, boo
 
   if (caps_str.empty()) {
     set_err_msg(err_msg, "empty user caps");
-    return -EINVAL;
+    return -ERR_INVALID_CAP;
   }
 
   int r = caps->add_from_string(caps_str);
@@ -1592,7 +1592,7 @@ int RGWUserCapPool::remove(RGWUserAdminOpState& op_state, std::string *err_msg,
 
   if (caps_str.empty()) {
     set_err_msg(err_msg, "empty user caps");
-    return -EINVAL;
+    return -ERR_INVALID_CAP;
   }
 
   int r = caps->remove_from_string(caps_str);