]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add support for printing generic attrs on Swift container.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 17 Sep 2015 16:13:17 +0000 (18:13 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 17 Sep 2015 16:32:38 +0000 (18:32 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_rest_swift.cc

index 12b5855ad8c35eea220486244f2b85d8f4b61303..98d1accaaa018e939757b53605284367322c3536 100644 (file)
@@ -341,15 +341,21 @@ static void dump_container_metadata(struct req_state *s, RGWBucketEnt& bucket)
     if (!s->bucket_info.placement_rule.empty()) {
       s->cio->print("X-Storage-Policy: %s\r\n", s->bucket_info.placement_rule.c_str());
     }
-    // Dump user-defined metadata items
+
+    /* Dump user-defined metadata items and generic attrs. */
     const size_t PREFIX_LEN = sizeof(RGW_ATTR_META_PREFIX) - 1;
     map<string, bufferlist>::iterator iter;
-    for (iter = s->bucket_attrs.lower_bound(RGW_ATTR_META_PREFIX); iter != s->bucket_attrs.end(); ++iter) {
+    for (iter = s->bucket_attrs.lower_bound(RGW_ATTR_PREFIX);
+         iter != s->bucket_attrs.end();
+         ++iter) {
       const char *name = iter->first.c_str();
-      if (strncmp(name, RGW_ATTR_META_PREFIX, PREFIX_LEN) == 0) {
+      map<string, string>::const_iterator geniter = rgw_to_http_attrs.find(name);
+
+      if (geniter != rgw_to_http_attrs.end() &&
+          geniter->first.compare(RGW_ATTR_CONTENT_TYPE) != 0) {
+        s->cio->print("%s: %s\r\n", geniter->second.c_str(), iter->second.c_str());
+      } else if (strncmp(name, RGW_ATTR_META_PREFIX, PREFIX_LEN) == 0) {
         s->cio->print("X-Container-Meta-%s: %s\r\n", name + PREFIX_LEN, iter->second.c_str());
-      } else {
-        break;
       }
     }
   }