]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/notifications: allow cross tenant notification management 53369/head
authorYuval Lifshitz <ylifshit@redhat.com>
Sun, 10 Sep 2023 14:40:37 +0000 (14:40 +0000)
committerYuval Lifshitz <ylifshit@redhat.com>
Sun, 10 Sep 2023 14:40:37 +0000 (14:40 +0000)
testing instructions:
https://gist.github.com/yuvalif/60063dc67d981b387b382ff0f7f88d91

Fixes: https://tracker.ceph.com/issues/62784
Signed-off-by: Yuval Lifshitz <ylifshit@redhat.com>
src/rgw/rgw_rest_pubsub.cc

index 98ecd52e3ad91bd4448cfb6b9fd189f5bd831f89..9bc7a2897632870a392980761c784f84f25079fd 100644 (file)
@@ -651,9 +651,11 @@ void RGWPSCreateNotifOp::execute(optional_yield y) {
 
   std::unique_ptr<rgw::sal::User> user = driver->get_user(s->owner.get_id());
   std::unique_ptr<rgw::sal::Bucket> bucket;
-  op_ret = driver->get_bucket(this, user.get(), s->owner.get_id().tenant, s->bucket_name, &bucket, y);
+  op_ret = driver->get_bucket(this, user.get(), s->bucket_tenant, s->bucket_name, &bucket, y);
   if (op_ret < 0) {
-    ldpp_dout(this, 1) << "failed to get bucket '" << s->bucket_name << "' info, ret = " << op_ret << dendl;
+    ldpp_dout(this, 1) << "failed to get bucket '" << 
+      (s->bucket_tenant.empty() ? s->bucket_name : s->bucket_tenant + ":" + s->bucket_name) << 
+      "' info, ret = " << op_ret << dendl;
     return;
   }
 
@@ -788,9 +790,11 @@ void RGWPSDeleteNotifOp::execute(optional_yield y) {
 
   std::unique_ptr<rgw::sal::User> user = driver->get_user(s->owner.get_id());
   std::unique_ptr<rgw::sal::Bucket> bucket;
-  op_ret = driver->get_bucket(this, user.get(), s->owner.get_id().tenant, s->bucket_name, &bucket, y);
+  op_ret = driver->get_bucket(this, user.get(), s->bucket_tenant, s->bucket_name, &bucket, y);
   if (op_ret < 0) {
-    ldpp_dout(this, 1) << "failed to get bucket '" << s->bucket_name << "' info, ret = " << op_ret << dendl;
+    ldpp_dout(this, 1) << "failed to get bucket '" << 
+      (s->bucket_tenant.empty() ? s->bucket_name : s->bucket_tenant + ":" + s->bucket_name) << 
+      "' info, ret = " << op_ret << dendl;
     return;
   }
 
@@ -883,9 +887,11 @@ void RGWPSListNotifsOp::execute(optional_yield y) {
 
   std::unique_ptr<rgw::sal::User> user = driver->get_user(s->owner.get_id());
   std::unique_ptr<rgw::sal::Bucket> bucket;
-  op_ret = driver->get_bucket(this, user.get(), s->owner.get_id().tenant, s->bucket_name, &bucket, y);
+  op_ret = driver->get_bucket(this, user.get(), s->bucket_tenant, s->bucket_name, &bucket, y);
   if (op_ret < 0) {
-    ldpp_dout(this, 1) << "failed to get bucket '" << s->bucket_name << "' info, ret = " << op_ret << dendl;
+    ldpp_dout(this, 1) << "failed to get bucket '" << 
+      (s->bucket_tenant.empty() ? s->bucket_name : s->bucket_tenant + ":" + s->bucket_name) << 
+      "' info, ret = " << op_ret << dendl;
     return;
   }