]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add support for X-Copied-From{-Account} headers of Swift API.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Fri, 13 Mar 2015 17:37:39 +0000 (18:37 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Tue, 24 Mar 2015 18:48:39 +0000 (19:48 +0100)
Fixes: #10663
Backport: hammer
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_rest_swift.cc
src/rgw/rgw_rest_swift.h

index 8f56a64ae385270e172eee8908ee324ac5ebd54f..e10d0de6001d7375d9ff28dac566e6d9da18f87c 100644 (file)
@@ -601,6 +601,20 @@ void RGWCopyObj_ObjStore_SWIFT::send_partial_response(off_t ofs)
   rgw_flush_formatter(s, s->formatter);
 }
 
+void RGWCopyObj_ObjStore_SWIFT::dump_copy_info()
+{
+  /* Dump X-Copied-From */
+  string objname, bucketname;
+  url_encode(src_object.name, objname);
+  url_encode(src_bucket.name, bucketname);
+  s->cio->print("X-Copied-From: %s/%s\r\n", bucketname.c_str(), objname.c_str());
+
+  /* Dump X-Copied-From-Account */
+  string account_name;
+  url_encode(s->user.user_id, account_name);
+  s->cio->print("X-Copied-From-Account: %s\r\n", account_name.c_str());
+}
+
 void RGWCopyObj_ObjStore_SWIFT::send_response()
 {
   if (!sent_header) {
@@ -610,6 +624,7 @@ void RGWCopyObj_ObjStore_SWIFT::send_response()
     dump_errno(s);
     dump_etag(s, etag.c_str());
     dump_last_modified(s, mtime);
+    dump_copy_info();
     end_header(s, this);
   } else {
     s->formatter->close_section();
index 811bf0deaea67377ff36162c638dc7e173c6d21f..e722a2f6f483bc013757b5a84e70f3a2ded6de3f 100644 (file)
@@ -114,6 +114,8 @@ public:
 
 class RGWCopyObj_ObjStore_SWIFT : public RGWCopyObj_ObjStore {
   bool sent_header;
+protected:
+  void dump_copy_info();
 public:
   RGWCopyObj_ObjStore_SWIFT() : sent_header(false) {}
   ~RGWCopyObj_ObjStore_SWIFT() {}