]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix temp url restful apis and support multiple keys
authorYehuda Sadeh <yehuda@inktank.com>
Thu, 9 Jan 2014 18:37:25 +0000 (10:37 -0800)
committerYehuda Sadeh <yehuda@inktank.com>
Thu, 9 Jan 2014 22:28:25 +0000 (14:28 -0800)
the set temp url api didn't do anything, fix that. Also add support for
multiple temp url keys.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest_swift.cc

index 76a428f8bf43846ed18cbf4da0d3598cefc941e9..98ca5801fdaff0b78c3169ea8a98a4e0e8dcfca5 100644 (file)
@@ -1716,6 +1716,29 @@ int RGWSetTempUrl::verify_permission()
 
 void RGWSetTempUrl::execute()
 {
+  ret = get_params();
+  if (ret < 0)
+    return;
+
+  RGWUserAdminOpState user_op;
+  user_op.set_user_id(s->user.user_id);
+  map<int, string>::iterator iter;
+  for (iter = temp_url_keys.begin(); iter != temp_url_keys.end(); ++iter) {
+    user_op.set_temp_url_key(iter->second, iter->first);
+  }
+
+  RGWUser user;
+  ret = user.init(store, user_op);
+  if (ret < 0) {
+    ldout(store->ctx(), 0) << "ERROR: could not init user ret=" << ret << dendl;
+    return;
+  }
+  string err_msg;
+  ret = user.modify(user_op, &err_msg);
+  if (ret < 0) {
+    ldout(store->ctx(), 10) << "user.modify() returned " << ret << ": " << err_msg << dendl;
+    return;
+  }
 }
 
 
index 3fa3497ebb797fc118c0442c9608ec841f8f6d38..2ff8875eb7411d0e76a8cacd5af7932e8dc5126c 100644 (file)
@@ -415,7 +415,7 @@ public:
 class RGWSetTempUrl : public RGWOp {
 protected:
   int ret;
-  string temp_url_key;
+  map<int, string> temp_url_keys;
 public:
   RGWSetTempUrl() : ret(0) {}
 
index 68626b8a6f5fd6ce0a49db509fafab81c3c7b8a1..6524db8b40361fdfe8f19e339d633efdb432c70f 100644 (file)
@@ -427,11 +427,18 @@ void RGWPutMetadata_ObjStore_SWIFT::send_response()
 
 int RGWSetTempUrl_ObjStore_SWIFT::get_params()
 {
-  const char *temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL");
-  if (temp_url)
-    return -EINVAL;
+  const char *temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL_KEY");
+  if (temp_url) {
+    temp_url_keys[0] = temp_url;
+  }
+
+  temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL_KEY_2");
+  if (temp_url) {
+    temp_url_keys[1] = temp_url;
+  }
 
-  temp_url_key = temp_url;
+  if (temp_url_keys.size() == 0)
+    return -EINVAL;
 
   return 0;
 }
@@ -625,7 +632,11 @@ RGWOp *RGWHandler_ObjStore_Service_SWIFT::op_head()
 
 RGWOp *RGWHandler_ObjStore_Service_SWIFT::op_post()
 {
-  const char *temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL");
+  const char *temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL_KEY");
+  if (temp_url) {
+    return new RGWSetTempUrl_ObjStore_SWIFT;
+  }
+  temp_url = s->info.env->get("HTTP_X_ACCOUNT_META_TEMP_URL_KEY_2");
   if (temp_url) {
     return new RGWSetTempUrl_ObjStore_SWIFT;
   }