]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: new cr for simple object put
authorYehuda Sadeh <yehuda@redhat.com>
Sat, 30 Jun 2018 02:16:37 +0000 (19:16 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 11 Dec 2018 08:10:42 +0000 (00:10 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_cr_tools.cc
src/rgw/rgw_cr_tools.h
src/rgw/rgw_sync_module_pubsub.cc
src/rgw/rgw_tools.h

index d7dbc6d7bb9f8c2b201170ae0399fc80ead681bc..69eed3689b26432d2fad39574a10aafd4b01f5aa 100644 (file)
@@ -222,3 +222,22 @@ int RGWBucketCreateLocalCR::Request::_send_request()
 
   return ret;
 }
+
+template<>
+int RGWObjectSimplePutCR::Request::_send_request()
+{
+  RGWDataAccess::ObjectRef obj;
+
+  int ret = params.bucket->get_object(params.key, &obj);
+  if (ret < 0) {
+    cerr << "ERROR: failed to get object: " << cpp_strerror(-ret) << std::endl;
+    return -ret;
+  }
+
+  ret = obj->put(params.data, params.attrs);
+  if (ret < 0) {
+    cerr << "ERROR: put object returned error: " << cpp_strerror(-ret) << std::endl;
+  }
+
+  return 0;
+}
index ab69d4c0e0482a72dadc3c7175a9ab11d7fd3fd7..635bbb9302fc6f02fcc37c64e13ce41d24c5e4a1 100644 (file)
@@ -2,6 +2,7 @@
 #define CEPH_RGW_CR_TOOLS_H
 
 #include "rgw_cr_rados.h"
+#include "rgw_tools.h"
 
 
 struct rgw_user_create_params {
@@ -50,6 +51,15 @@ struct rgw_bucket_create_local_params {
 
 using RGWBucketCreateLocalCR = RGWSimpleWriteOnlyAsyncCR<rgw_bucket_create_local_params>;
 
+struct rgw_object_simple_put_params {
+  RGWDataAccess::BucketRef bucket;
+  rgw_obj_key key;
+  bufferlist data;
+  map<string, bufferlist> attrs;
+};
+
+using RGWObjectSimplePutCR = RGWSimpleWriteOnlyAsyncCR<rgw_object_simple_put_params>;
+
 
 
 #endif
index abcf83a894c427de843d664b81ec8308e2c12f5e..725d098e667aeb20c2eea41b0cf5d025f635bd8f 100644 (file)
@@ -234,6 +234,7 @@ class PSSubscription : public RefCountedObject {
   PSSubConfigRef sub_conf;
   shared_ptr<rgw_get_bucket_info_result> get_bucket_info_result;
   RGWBucketInfo *bucket_info{nullptr};
+  RGWDataAccessRef data_access;
 
 public:
 
@@ -304,7 +305,8 @@ public:
                  PSEnvRef _env,
                  PSSubConfigRef& _sub_conf) : sync_env(_sync_env),
                                       env(_env),
-                                      sub_conf(_sub_conf) {}
+                                      sub_conf(_sub_conf),
+                                      data_access(std::make_shared<RGWDataAccess>(sync_env->store)) {}
 
   RGWCoroutine *init_cr() {
     return new InitCR(sync_env, this);
index 89a6aeaa7ef4706a9d0c2f7d3fdd9dc5461fcbbe..0741eb6fa6939e1a18aa17989f7b2856b44c4951 100644 (file)
@@ -191,4 +191,6 @@ public:
   friend class Object;
 };
 
+using RGWDataAccessRef = std::shared_ptr<RGWDataAccess>;
+
 #endif