summaryrefslogtreecommitdiffstats
path: root/src/rgw/rgw_notify_event_type.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/rgw/rgw_notify_event_type.cc
parentInitial commit. (diff)
downloadceph-upstream/18.2.2.tar.xz
ceph-upstream/18.2.2.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/rgw/rgw_notify_event_type.cc')
-rw-r--r--src/rgw/rgw_notify_event_type.cc119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/rgw/rgw_notify_event_type.cc b/src/rgw/rgw_notify_event_type.cc
new file mode 100644
index 000000000..7a0ef9568
--- /dev/null
+++ b/src/rgw/rgw_notify_event_type.cc
@@ -0,0 +1,119 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#include "rgw_notify_event_type.h"
+#include "include/str_list.h"
+
+namespace rgw::notify {
+
+ std::string to_string(EventType t) {
+ switch (t) {
+ case ObjectCreated:
+ return "s3:ObjectCreated:*";
+ case ObjectCreatedPut:
+ return "s3:ObjectCreated:Put";
+ case ObjectCreatedPost:
+ return "s3:ObjectCreated:Post";
+ case ObjectCreatedCopy:
+ return "s3:ObjectCreated:Copy";
+ case ObjectCreatedCompleteMultipartUpload:
+ return "s3:ObjectCreated:CompleteMultipartUpload";
+ case ObjectRemoved:
+ return "s3:ObjectRemoved:*";
+ case ObjectRemovedDelete:
+ return "s3:ObjectRemoved:Delete";
+ case ObjectRemovedDeleteMarkerCreated:
+ return "s3:ObjectRemoved:DeleteMarkerCreated";
+ case ObjectLifecycle:
+ return "s3:ObjectLifecycle:*";
+ case ObjectExpiration:
+ 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 ObjectSynced:
+ return "s3:ObjectSynced:*";
+ case ObjectSyncedCreate:
+ return "s3:ObjectSynced:Create";
+ case ObjectSyncedDelete:
+ return "s3:ObjectSynced:Delete";
+ case ObjectSyncedDeletionMarkerCreated:
+ return "s3:ObjectSynced:DeletionMarkerCreated";
+ case UnknownEvent:
+ return "s3:UnknownEvent";
+ }
+ return "s3:UnknownEvent";
+ }
+
+ std::string to_event_string(EventType t) {
+ return to_string(t).substr(3);
+ }
+
+ EventType from_string(const std::string& s) {
+ if (s == "s3:ObjectCreated:*")
+ return ObjectCreated;
+ if (s == "s3:ObjectCreated:Put")
+ return ObjectCreatedPut;
+ if (s == "s3:ObjectCreated:Post")
+ return ObjectCreatedPost;
+ if (s == "s3:ObjectCreated:Copy")
+ return ObjectCreatedCopy;
+ if (s == "s3:ObjectCreated:CompleteMultipartUpload")
+ return ObjectCreatedCompleteMultipartUpload;
+ if (s == "s3:ObjectRemoved:*")
+ return ObjectRemoved;
+ if (s == "s3:ObjectRemoved:Delete")
+ return ObjectRemovedDelete;
+ if (s == "s3:ObjectRemoved:DeleteMarkerCreated")
+ return ObjectRemovedDeleteMarkerCreated;
+ if (s == "s3:ObjectLifecycle:*")
+ return ObjectLifecycle;
+ if (s == "s3:ObjectLifecycle: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:*")
+ return ObjectTransition;
+ if (s == "s3:ObjectLifecycle:Transition:Current")
+ return ObjectTransitionCurrent;
+ if (s == "s3:ObjectLifecycle:Transition:Noncurrent")
+ return ObjectTransitionNoncurrent;
+ if (s == "s3:ObjectSynced:*")
+ return ObjectSynced;
+ if (s == "s3:ObjectSynced:Create")
+ return ObjectSyncedCreate;
+ if (s == "s3:ObjectSynced:Delete")
+ return ObjectSyncedDelete;
+ if (s == "s3:ObjectSynced:DeletionMarkerCreated")
+ return ObjectSyncedDeletionMarkerCreated;
+ return UnknownEvent;
+ }
+
+bool operator==(EventType lhs, EventType rhs) {
+ return lhs & rhs;
+}
+
+void from_string_list(const std::string& string_list, EventTypeList& event_list) {
+ event_list.clear();
+ ceph::for_each_substr(string_list, ",", [&event_list] (auto token) {
+ event_list.push_back(rgw::notify::from_string(std::string(token.begin(), token.end())));
+ });
+}
+}