]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: slightly simplify metadata abstraction
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 13 May 2013 21:26:19 +0000 (14:26 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 13 May 2013 21:26:19 +0000 (14:26 -0700)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_metadata.cc
src/rgw/rgw_metadata.h
src/rgw/rgw_user.cc

index 1495994b713678d7f792d7ce83ca7a5001c541b6..4690afdc68f368a0d8ba755266bce63556e9d958 100644 (file)
@@ -1332,11 +1332,9 @@ public:
     return store->delete_bucket(bucket);
   }
 
-  int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
-                RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) {
-    return rgw_put_system_obj(store, store->zone.domain_root, key,
-                              bl.c_str(), bl.length(), exclusive,
-                              objv_tracker, pattrs);
+  void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {
+    oid = key;
+    bucket = store->zone.domain_root;
   }
 
   int list_keys_init(RGWRados *store, void **phandle)
index c474a6d0de711f1e27756a63e946b8d5d4381762..8312da6b3ccedde91ef058804529d0f124a3c76d 100644 (file)
@@ -5,6 +5,7 @@
 #include "cls/version/cls_version_types.h"
 
 #include "rgw_rados.h"
+#include "rgw_tools.h"
 
 #define dout_subsys ceph_subsys_rgw
 
@@ -183,8 +184,9 @@ public:
 
   virtual int get(RGWRados *store, string& entry, RGWMetadataObject **obj) { return -ENOTSUP; }
   virtual int put(RGWRados *store, string& entry, RGWObjVersionTracker& objv_tracker, JSONObj *obj) { return -ENOTSUP; }
-  virtual int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
-                        RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) { return -ENOTSUP; }
+
+  virtual void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {}
+
   virtual int remove(RGWRados *store, string& entry, RGWObjVersionTracker& objv_tracker) { return -ENOTSUP; }
 
   virtual int list_keys_init(RGWRados *store, void **phandle) {
@@ -525,7 +527,14 @@ int RGWMetadataManager::put_entry(RGWMetadataHandler *handler, string& key, buff
   if (ret < 0)
     return ret;
 
-  ret = handler->put_entry(store, key, bl, exclusive, objv_tracker, pattrs);
+  string oid;
+  rgw_bucket bucket;
+
+  handler->get_pool_and_oid(store, key, bucket, oid);
+
+  ret = rgw_put_system_obj(store, bucket, oid,
+                           bl.c_str(), bl.length(), exclusive,
+                           objv_tracker, pattrs);
   if (ret < 0)
     return ret;
 
index b9e10fd7326d3b29dcb96a41f0b9cb1776e51e19..21a37e27cab172c5167cda4cb4d85ddb370fd96e 100644 (file)
@@ -33,8 +33,7 @@ class RGWMetadataHandler {
   friend class RGWMetadataManager;
 
 protected:
-  virtual int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
-                        RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs = NULL) = 0;
+  virtual void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) = 0;
 public:
   virtual ~RGWMetadataHandler() {}
   virtual string get_type() = 0;
index 0e71dc602eba79c5ee0f61913a5ad6ebeee83cef..4bb4369c2d4f18be16d756b35621f42fe0ef2a91 100644 (file)
@@ -2287,11 +2287,9 @@ public:
     return rgw_delete_user(store, info);
   }
 
-  int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
-                RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) {
-    return rgw_put_system_obj(store, store->zone.user_uid_pool, key,
-                              bl.c_str(), bl.length(), exclusive,
-                              objv_tracker, pattrs);
+  void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {
+    oid = key;
+    bucket = store->zone.user_uid_pool;
   }
 
   int list_keys_init(RGWRados *store, void **phandle)