]> git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_notify_event_type.cc
import quincy beta 17.1.0
[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 UnknownEvent:
46 return "s3:UnknownEvent";
47 }
48 return "s3:UnknownEvent";
49 }
50
51 std::string to_ceph_string(EventType t) {
52 switch (t) {
53 case ObjectCreated:
54 case ObjectCreatedPut:
55 case ObjectCreatedPost:
56 case ObjectCreatedCopy:
57 case ObjectCreatedCompleteMultipartUpload:
58 return "OBJECT_CREATE";
59 case ObjectRemovedDelete:
60 return "OBJECT_DELETE";
61 case ObjectRemovedDeleteMarkerCreated:
62 return "DELETE_MARKER_CREATE";
63 case ObjectLifecycle:
64 return "OBJECT_LIFECYCLE";
65 case ObjectExpiration:
66 case ObjectExpirationCurrent:
67 case ObjectExpirationNoncurrent:
68 case ObjectExpirationDeleteMarker:
69 case ObjectExpirationAbortMPU:
70 return "OBJECT_EXPIRATION";
71 case ObjectTransition:
72 case ObjectTransitionCurrent:
73 case ObjectTransitionNoncurrent:
74 return "OBJECT_TRANSITION";
75 case ObjectRemoved:
76 case UnknownEvent:
77 return "UNKNOWN_EVENT";
78 }
79 return "UNKNOWN_EVENT";
80 }
81
82 std::string to_event_string(EventType t) {
83 return to_string(t).substr(3);
84 }
85
86 EventType from_string(const std::string& s) {
87 if (s == "s3:ObjectCreated:*" || s == "OBJECT_CREATE")
88 return ObjectCreated;
89 if (s == "s3:ObjectCreated:Put")
90 return ObjectCreatedPut;
91 if (s == "s3:ObjectCreated:Post")
92 return ObjectCreatedPost;
93 if (s == "s3:ObjectCreated:Copy")
94 return ObjectCreatedCopy;
95 if (s == "s3:ObjectCreated:CompleteMultipartUpload")
96 return ObjectCreatedCompleteMultipartUpload;
97 if (s == "s3:ObjectRemoved:*")
98 return ObjectRemoved;
99 if (s == "s3:ObjectRemoved:Delete" || s == "OBJECT_DELETE")
100 return ObjectRemovedDelete;
101 if (s == "s3:ObjectRemoved:DeleteMarkerCreated" || s == "DELETE_MARKER_CREATE")
102 return ObjectRemovedDeleteMarkerCreated;
103 if (s == "s3:ObjectLifecycle:*")
104 return ObjectLifecycle;
105 if (s == "s3:ObjectLifecycle:Expiration:*" || s == "OBJECT_EXPIRATION")
106 return ObjectExpiration;
107 if (s == "s3:ObjectLifecycle:Expiration:Current")
108 return ObjectExpirationCurrent;
109 if (s == "s3:ObjectLifecycle:Expiration:Noncurrent")
110 return ObjectExpirationNoncurrent;
111 if (s == "s3:ObjectLifecycle:Expiration:DeleteMarker")
112 return ObjectExpirationDeleteMarker;
113 if (s == "s3:ObjectLifecycle:Expiration:AbortMultipartUpload")
114 return ObjectExpirationAbortMPU;
115 if (s == "s3:ObjectLifecycle:Transition:*" || s == "OBJECT_TRANSITION")
116 return ObjectTransition;
117 if (s == "s3:ObjectLifecycle:Transition:Current")
118 return ObjectTransitionCurrent;
119 if (s == "s3:ObjectLifecycle:Transition:Noncurrent")
120 return ObjectTransitionNoncurrent;
121 return UnknownEvent;
122 }
123
124 bool operator==(EventType lhs, EventType rhs) {
125 return lhs & rhs;
126 }
127
128 void from_string_list(const std::string& string_list, EventTypeList& event_list) {
129 event_list.clear();
130 ceph::for_each_substr(string_list, ",", [&event_list] (auto token) {
131 event_list.push_back(rgw::notify::from_string(std::string(token.begin(), token.end())));
132 });
133 }
134 }