+--------------------------------------------------------+-----------------------------------------+
| ``s3:ObjectSynced:DeletionMarkerCreated`` | Defined, Ceph extension (not generated) |
+--------------------------------------------------------+-----------------------------------------+
+| ``s3:Replication:*`` | Supported |
++--------------------------------------------------------+-----------------------------------------+
+| ``s3:Replication:Create`` | Supported |
++--------------------------------------------------------+-----------------------------------------+
+| ``s3:Replication:Delete`` | Defined, Supported (not generated) |
++--------------------------------------------------------+-----------------------------------------+
+| ``s3:Replication:DeletionMarkerCreated`` | Defined, Supported (not generated) |
++--------------------------------------------------------+-----------------------------------------+
| ``s3:ObjectRestore:Post`` | Not applicable |
+--------------------------------------------------------+-----------------------------------------+
| ``s3:ObjectRestore:Complete`` | Not applicable |
std::string tenant(dest_bucket.get_tenant());
std::unique_ptr<rgw::sal::Notification> notify =
- store->get_notification(
- dpp, &dest_obj, nullptr, {rgw::notify::ObjectSyncedCreate},
- &dest_bucket, user_id, tenant, req_id, null_yield);
+ store->get_notification(dpp, &dest_obj, nullptr,
+ {rgw::notify::ObjectSyncedCreate,
+ rgw::notify::ReplicationCreate},
+ &dest_bucket, user_id, tenant, req_id,
+ null_yield);
auto notify_res =
static_cast<rgw::sal::RadosNotification*>(notify.get())
->get_reservation();
int ret = rgw::notify::publish_reserve(
- dpp, *store->svc()->site, {rgw::notify::ObjectSyncedCreate},
+ dpp, *store->svc()->site,
+ {rgw::notify::ObjectSyncedCreate, rgw::notify::ReplicationCreate},
notify_res, &obj_tags);
if (ret < 0) {
ldpp_dout(dpp, 1)
return "s3:LifecycleExpiration:DeleteMarkerCreated";
case LifecycleTransition:
return "s3:LifecycleTransition";
+ case Replication:
+ return "s3:Replication:*";
+ case ReplicationCreate:
+ return "s3:Replication:Create";
+ case ReplicationDelete:
+ return "s3:Replication:Delete";
+ case ReplicationDeletionMarkerCreated:
+ return "s3:Replication:DeletionMarkerCreated";
case UnknownEvent:
return "s3:UnknownEvent";
}
return LifecycleExpirationDeleteMarkerCreated;
if (s == "s3:LifecycleTransition")
return LifecycleTransition;
+ if (s == "s3:Replication:*")
+ return Replication;
+ if (s == "s3:Replication:Create")
+ return ReplicationCreate;
+ if (s == "s3:Replication:Delete")
+ return ReplicationDelete;
+ if (s == "s3:Replication:DeletionMarkerCreated")
+ return ReplicationDeletionMarkerCreated;
return UnknownEvent;
}
LifecycleExpirationDelete = 0x100000,
LifecycleExpirationDeleteMarkerCreated = 0x200000,
LifecycleTransition = 0xF000000,
- UnknownEvent = 0x10000000
+ Replication = 0xF0000000,
+ ReplicationCreate = 0x10000000,
+ ReplicationDelete = 0x20000000,
+ ReplicationDeletionMarkerCreated = 0x40000000,
+ UnknownEvent = 0x100000000
};
using EventTypeList = std::vector<EventType>;