]> git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_notify_event_type.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / rgw / rgw_notify_event_type.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #include "rgw_notify_event_type.h"
5 #include "include/str_list.h"
6
7 namespace rgw::notify {
8
9 std::string to_string(EventType t) {
10 switch (t) {
11 case ObjectCreated:
12 return "s3:ObjectCreated:*";
13 case ObjectCreatedPut:
14 return "s3:ObjectCreated:Put";
15 case ObjectCreatedPost:
16 return "s3:ObjectCreated:Post";
17 case ObjectCreatedCopy:
18 return "s3:ObjectCreated:Copy";
19 case ObjectCreatedCompleteMultipartUpload:
20 return "s3:ObjectCreated:CompleteMultipartUpload";
21 case ObjectRemoved:
22 return "s3:ObjectRemoved:*";
23 case ObjectRemovedDelete:
24 return "s3:ObjectRemoved:Delete";
25 case ObjectRemovedDeleteMarkerCreated:
26 return "s3:ObjectRemoved:DeleteMarkerCreated";
27 case ObjectLifecycle:
28 return "s3:ObjectLifecycle:*";
29 case ObjectExpiration:
30 return "s3:ObjectLifecycle:Expiration:*";
31 case ObjectExpirationCurrent:
32 return "s3:ObjectLifecycle:Expiration:Current";
33 case ObjectExpirationNoncurrent:
34 return "s3:ObjectLifecycle:Expiration:Noncurrent";
35 case ObjectExpirationDeleteMarker:
36 return "s3:ObjectLifecycle:Expiration:DeleteMarker";
37 case ObjectExpirationAbortMPU:
38 return "s3:ObjectLifecycle:Expiration:AbortMPU";
39 case ObjectTransition:
40 return "s3:ObjectLifecycle:Transition:*";
41 case ObjectTransitionCurrent:
42 return "s3:ObjectLifecycle:Transition:Current";
43 case ObjectTransitionNoncurrent:
44 return "s3:ObjectLifecycle:Transition:Noncurrent";
45 case ObjectSynced:
46 return "s3:ObjectSynced:*";
47 case ObjectSyncedCreate:
48 return "s3:ObjectSynced:Create";
49 case ObjectSyncedDelete:
50 return "s3:ObjectSynced:Delete";
51 case ObjectSyncedDeletionMarkerCreated:
52 return "s3:ObjectSynced:DeletionMarkerCreated";
53 case UnknownEvent:
54 return "s3:UnknownEvent";
55 }
56 return "s3:UnknownEvent";
57 }
58
59 std::string to_event_string(EventType t) {
60 return to_string(t).substr(3);
61 }
62
63 EventType from_string(const std::string& s) {
64 if (s == "s3:ObjectCreated:*")
65 return ObjectCreated;
66 if (s == "s3:ObjectCreated:Put")
67 return ObjectCreatedPut;
68 if (s == "s3:ObjectCreated:Post")
69 return ObjectCreatedPost;
70 if (s == "s3:ObjectCreated:Copy")
71 return ObjectCreatedCopy;
72 if (s == "s3:ObjectCreated:CompleteMultipartUpload")
73 return ObjectCreatedCompleteMultipartUpload;
74 if (s == "s3:ObjectRemoved:*")
75 return ObjectRemoved;
76 if (s == "s3:ObjectRemoved:Delete")
77 return ObjectRemovedDelete;
78 if (s == "s3:ObjectRemoved:DeleteMarkerCreated")
79 return ObjectRemovedDeleteMarkerCreated;
80 if (s == "s3:ObjectLifecycle:*")
81 return ObjectLifecycle;
82 if (s == "s3:ObjectLifecycle:Expiration:*")
83 return ObjectExpiration;
84 if (s == "s3:ObjectLifecycle:Expiration:Current")
85 return ObjectExpirationCurrent;
86 if (s == "s3:ObjectLifecycle:Expiration:Noncurrent")
87 return ObjectExpirationNoncurrent;
88 if (s == "s3:ObjectLifecycle:Expiration:DeleteMarker")
89 return ObjectExpirationDeleteMarker;
90 if (s == "s3:ObjectLifecycle:Expiration:AbortMultipartUpload")
91 return ObjectExpirationAbortMPU;
92 if (s == "s3:ObjectLifecycle:Transition:*")
93 return ObjectTransition;
94 if (s == "s3:ObjectLifecycle:Transition:Current")
95 return ObjectTransitionCurrent;
96 if (s == "s3:ObjectLifecycle:Transition:Noncurrent")
97 return ObjectTransitionNoncurrent;
98 if (s == "s3:ObjectSynced:*")
99 return ObjectSynced;
100 if (s == "s3:ObjectSynced:Create")
101 return ObjectSyncedCreate;
102 if (s == "s3:ObjectSynced:Delete")
103 return ObjectSyncedDelete;
104 if (s == "s3:ObjectSynced:DeletionMarkerCreated")
105 return ObjectSyncedDeletionMarkerCreated;
106 return UnknownEvent;
107 }
108
109 bool operator==(EventType lhs, EventType rhs) {
110 return lhs & rhs;
111 }
112
113 void from_string_list(const std::string& string_list, EventTypeList& event_list) {
114 event_list.clear();
115 ceph::for_each_substr(string_list, ",", [&event_list] (auto token) {
116 event_list.push_back(rgw::notify::from_string(std::string(token.begin(), token.end())));
117 });
118 }
119 }