]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: implement delete oids
authorAbhishek Lekshmanan <abhishek@suse.com>
Tue, 1 Sep 2020 15:19:10 +0000 (17:19 +0200)
committerPritha Srivastava <prsrivas@redhat.com>
Mon, 6 Jun 2022 10:49:42 +0000 (16:19 +0530)
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
src/rgw/services/svc_role.h
src/rgw/services/svc_role_rados.cc
src/rgw/services/svc_role_rados.h

index 91dc89011e74b962f737adebeef9c1429aa86292..013c0ebb983749091efdc6f774188a8b7b02431a 100644 (file)
@@ -90,5 +90,21 @@ class RGWSI_Role: public RGWServiceInstance
                          const std::string& name,
                          RGWObjVersionTracker * const objv_tracker,
                          optional_yield y,
-              const DoutPrefixProvider *dpp) = 0;
+                         const DoutPrefixProvider *dpp) = 0;
+
+  virtual int delete_name(RGWSI_MetaBackend::Context *ctx,
+                         const std::string& name,
+                         const std::string& tenant,
+                         RGWObjVersionTracker * const objv_tracker,
+                         optional_yield y,
+                         const DoutPrefixProvider *dpp) = 0;
+
+  virtual int delete_path(RGWSI_MetaBackend::Context *ctx,
+                         const std::string& role_id,
+                         const std::string& path,
+                         const std::string& tenant,
+                         RGWObjVersionTracker * const objv_tracker,
+                         optional_yield y,
+                         const DoutPrefixProvider *dpp) = 0;
+
 };
index bc0802d523979bc13dfa495300f8fee6364963e0..4974de5d36aa6d4f5e4f8e7b95576dae5ae49856 100644 (file)
@@ -134,6 +134,22 @@ int RGWSI_Role_RADOS::read_name(RGWSI_MetaBackend::Context *ctx,
   return 0;
 }
 
+static int delete_oid(RGWSI_MetaBackend::Context *ctx,
+                      RGWSI_MetaBackend* meta_be,
+                      const std::string& oid,
+                      RGWObjVersionTracker * const objv_tracker,
+                      optional_yield y,
+                      const DoutPrefixProvider *dpp)
+{
+  RGWSI_MBSObj_RemoveParams params;
+  int r = meta_be->remove(ctx, oid, params, objv_tracker, y, dpp);
+  if (r < 0 && r != -ENOENT && r != -ECANCELED) {
+    ldout(meta_be->ctx(),0) << "ERROR: RGWSI_Role: could not remove oid = "
+                                << oid << " r = "<< r << dendl;
+    return r;
+  }
+  return 0;
+}
 
 int RGWSI_Role_RADOS::delete_info(RGWSI_MetaBackend::Context *ctx,
                                   const std::string& role_id,
@@ -141,13 +157,32 @@ int RGWSI_Role_RADOS::delete_info(RGWSI_MetaBackend::Context *ctx,
                                   optional_yield y,
                                   const DoutPrefixProvider *dpp)
 {
-  RGWSI_MBSObj_RemoveParams params;
 
-  int r = svc.meta_be->remove(ctx, get_role_meta_key(role_id), params, objv_tracker, y, dpp);
-  if (r < 0 && r != -ENOENT && r != -ECANCELED) {
-    ldout(svc.meta_be->ctx(),0) << "ERROR: could not remove RGWRole, id = "
-                                << role_id << " r = "<< r << dendl;
-    return r;
-  }
-  return 0;
+  return delete_oid(ctx, svc.meta_be, get_role_meta_key(role_id),
+                    objv_tracker, y, dpp);
+}
+
+int RGWSI_Role_RADOS::delete_name(RGWSI_MetaBackend::Context *ctx,
+                                  const std::string& name,
+                                  const std::string& tenant,
+                                  RGWObjVersionTracker * const objv_tracker,
+                                  optional_yield y,
+                                  const DoutPrefixProvider *dpp)
+{
+  return delete_oid(ctx, svc.meta_be, get_role_name_meta_key(name, tenant),
+                    objv_tracker, y, dpp);
+
+}
+
+int RGWSI_Role_RADOS::delete_path(RGWSI_MetaBackend::Context *ctx,
+                                  const std::string& role_id,
+                                  const std::string& path,
+                                  const std::string& tenant,
+                                  RGWObjVersionTracker * const objv_tracker,
+                                  optional_yield y,
+                                  const DoutPrefixProvider *dpp)
+{
+  return delete_oid(ctx, svc.meta_be, get_role_path_meta_key(path, role_id, tenant),
+                    objv_tracker, y, dpp);
+
 }
index 14b0a479555e8e806c578d6d58d95e89c40e3523..973922cbad88631f04215a85111706344d6b7d46 100644 (file)
@@ -98,6 +98,21 @@ class RGWSI_Role_RADOS: public RGWSI_Role
                  optional_yield y,
                  const DoutPrefixProvider *dpp) override;
 
+  int delete_name(RGWSI_MetaBackend::Context *ctx,
+                 const std::string& name,
+                 const std::string& tenant,
+                 RGWObjVersionTracker * const objv_tracker,
+                 optional_yield y,
+                 const DoutPrefixProvider *dpp) override;
+
+  int delete_path(RGWSI_MetaBackend::Context *ctx,
+                const std::string& role_id,
+                const std::string& path,
+                const std::string& tenant,
+                RGWObjVersionTracker * const objv_tracker,
+                optional_yield y,
+                const DoutPrefixProvider *dpp) override;
+
 
 private:
   RGWSI_MetaBackend_Handler *be_handler;