Event Types
-----------
-+----------------------------------------------+-----------------+-------------------------------------------+
-| Event | Notification | PubSub |
-+==============================================+=================+===========================================+
-| ``s3:ObjectCreated:*`` | Supported |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectCreated:Put`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectCreated:Post`` | Supported | Not Supported |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectCreated:Copy`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectCreated:CompleteMultipartUpload`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectRemoved:*`` | Supported | Supported only the specific events below |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectRemoved:Delete`` | Supported |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectRemoved:DeleteMarkerCreated`` | Supported |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectRestore:Post`` | Not applicable to Ceph |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ObjectRestore:Complete`` | Not applicable to Ceph |
-+----------------------------------------------+-----------------+-------------------------------------------+
-| ``s3:ReducedRedundancyLostObject`` | Not applicable to Ceph |
-+----------------------------------------------+-----------------+-------------------------------------------+
++------------------------------------------------+-----------------+-------------------------------------------+
+| Event | Notification | PubSub |
++================================================+=================+===========================================+
+| ``s3:ObjectCreated:*`` | Supported |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Put`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Post`` | Supported | Not Supported |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:Copy`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectCreated:CompleteMultipartUpload`` | Supported | Supported at ``s3:ObjectCreated:*`` level |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:*`` | Supported | Supported only the specific events below |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:Delete`` | Supported |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRemoved:DeleteMarkerCreated`` | Supported |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Expiration:Current`` | Supported, Ceph extension |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Expiration:NonCurrent`` | Supported, Ceph extension |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Expiration:DeleteMarker`` | Supported, Ceph extension |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Expiration:AbortMultipartUpload`` | Defined, Ceph extension (not generated) |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Transition:Current`` | Supported, Ceph extension |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectLifecycle:Transition:NonCurrent`` | Supported, Ceph extension |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRestore:Post`` | Not applicable to Ceph |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ObjectRestore:Complete`` | Not applicable to Ceph |
++------------------------------------------------+-----------------+-------------------------------------------+
+| ``s3:ReducedRedundancyLostObject`` | Not applicable to Ceph |
++----------------------------------------------+-----------------+---------------------------------------------+
.. note::
int r;
if (o.is_delete_marker()) {
r = remove_expired_obj(oc.dpp, oc, true,
- rgw::notify::ObjectDeleteMarkerExpiration);
+ rgw::notify::ObjectExpirationDeleteMarker);
if (r < 0) {
ldpp_dout(oc.dpp, 0) << "ERROR: current is-dm remove_expired_obj "
<< oc.bucket << ":" << o.key
} else {
/* ! o.is_delete_marker() */
r = remove_expired_obj(oc.dpp, oc, !oc.bucket->versioned(),
- rgw::notify::ObjectExpiration);
+ rgw::notify::ObjectExpirationCurrent);
if (r < 0) {
ldpp_dout(oc.dpp, 0) << "ERROR: remove_expired_obj "
<< oc.bucket << ":" << o.key
int process(lc_op_ctx& oc) {
auto& o = oc.o;
int r = remove_expired_obj(oc.dpp, oc, true,
- rgw::notify::ObjectNoncurrentExpiration);
+ rgw::notify::ObjectExpirationNoncurrent);
if (r < 0) {
ldpp_dout(oc.dpp, 0) << "ERROR: remove_expired_obj (non-current expiration) "
<< oc.bucket << ":" << o.key
int process(lc_op_ctx& oc) {
auto& o = oc.o;
int r = remove_expired_obj(oc.dpp, oc, true,
- rgw::notify::ObjectDeleteMarkerExpiration);
+ rgw::notify::ObjectExpirationDeleteMarker);
if (r < 0) {
ldpp_dout(oc.dpp, 0) << "ERROR: remove_expired_obj (delete marker expiration) "
<< oc.bucket << ":" << o.key
return "s3:ObjectRemoved:Delete";
case ObjectRemovedDeleteMarkerCreated:
return "s3:ObjectRemoved:DeleteMarkerCreated";
+ case ObjectLifecycle:
+ return "s3:ObjectLifecycle:*";
case ObjectExpiration:
- return "s3:ObjectLifecycle:Expiration";
- case ObjectNoncurrentExpiration:
- return "s3:ObjectLifecycle:NoncurrentExpiration";
- case ObjectDeleteMarkerExpiration:
- return "s3:ObjectLifecycle:DeleteMarkerExpiration";
+ return "s3:ObjectLifecycle:Expiration:*";
+ case ObjectExpirationCurrent:
+ return "s3:ObjectLifecycle:Expiration:Current";
+ case ObjectExpirationNoncurrent:
+ return "s3:ObjectLifecycle:Expiration:Noncurrent";
+ case ObjectExpirationDeleteMarker:
+ return "s3:ObjectLifecycle:Expiration:DeleteMarker";
+ case ObjectExpirationAbortMPU:
+ return "s3:ObjectLifecycle:Expiration:AbortMPU";
+ case ObjectTransition:
+ return "s3:ObjectLifecycle:Transition:*";
+ case ObjectTransitionCurrent:
+ return "s3:ObjectLifecycle:Transition:Current";
+ case ObjectTransitionNoncurrent:
+ return "s3:ObjectLifecycle:Transition:Noncurrent";
case UnknownEvent:
return "s3:UnknownEvent";
}
return "OBJECT_DELETE";
case ObjectRemovedDeleteMarkerCreated:
return "DELETE_MARKER_CREATE";
+ case ObjectLifecycle:
+ return "OBJECT_LIFECYCLE";
case ObjectExpiration:
- case ObjectNoncurrentExpiration:
- case ObjectDeleteMarkerExpiration:
+ case ObjectExpirationCurrent:
+ case ObjectExpirationNoncurrent:
+ case ObjectExpirationDeleteMarker:
+ case ObjectExpirationAbortMPU:
return "OBJECT_EXPIRATION";
+ case ObjectTransition:
+ case ObjectTransitionCurrent:
+ case ObjectTransitionNoncurrent:
+ return "OBJECT_TRANSITION";
case ObjectRemoved:
case UnknownEvent:
return "UNKNOWN_EVENT";
return ObjectRemovedDelete;
if (s == "s3:ObjectRemoved:DeleteMarkerCreated" || s == "DELETE_MARKER_CREATE")
return ObjectRemovedDeleteMarkerCreated;
+ if (s == "s3:ObjectLifecycle:*")
+ return ObjectLifecycle;
+ if (s == "s3:ObjectLifecycle:Expiration:*" || s == "OBJECT_EXPIRATION")
+ return ObjectExpiration;
+ if (s == "s3:ObjectLifecycle:Expiration:Current")
+ return ObjectExpirationCurrent;
+ if (s == "s3:ObjectLifecycle:Expiration:Noncurrent")
+ return ObjectExpirationNoncurrent;
+ if (s == "s3:ObjectLifecycle:Expiration:DeleteMarker")
+ return ObjectExpirationDeleteMarker;
+ if (s == "s3:ObjectLifecycle:Expiration:AbortMultipartUpload")
+ return ObjectExpirationAbortMPU;
+ if (s == "s3:ObjectLifecycle:Transition:*" || s == "OBJECT_TRANSITION")
+ return ObjectTransition;
+ if (s == "s3:ObjectLifecycle:Transition:Current")
+ return ObjectTransitionCurrent;
+ if (s == "s3:ObjectLifecycle:Transition:Noncurrent")
+ return ObjectTransitionNoncurrent;
return UnknownEvent;
}
ObjectRemovedDelete = 0x10,
ObjectRemovedDeleteMarkerCreated = 0x20,
// lifecycle events (RGW extension)
- ObjectExpiration = 0x40,
- ObjectNoncurrentExpiration = 0x80,
- ObjectDeleteMarkerExpiration = 0x100,
- UnknownEvent = 0x200
+ ObjectLifecycle = 0xFF00,
+ ObjectExpiration = 0xF00,
+ ObjectExpirationCurrent = 0x100,
+ ObjectExpirationNoncurrent = 0x200,
+ ObjectExpirationDeleteMarker = 0x400,
+ ObjectExpirationAbortMPU = 0x800,
+ ObjectTransition = 0xF000,
+ ObjectTransitionCurrent = 0x1000,
+ ObjectTransitionNoncurrent = 0x2000,
+ UnknownEvent = 0x10000
};
using EventTypeList = std::vector<EventType>;