forked from TrueCloudLab/frostfs-s3-gw
[#340] Add notification configuration handlers
Signed-off-by: Angira Kekteeva <kira@nspcc.ru>
This commit is contained in:
parent
4cbce87eac
commit
4454821285
9 changed files with 320 additions and 10 deletions
69
api/data/notifications.go
Normal file
69
api/data/notifications.go
Normal file
|
@ -0,0 +1,69 @@
|
|||
package data
|
||||
|
||||
type (
|
||||
NotificationConfiguration struct {
|
||||
QueueConfigurations []QueueConfiguration `xml:"QueueConfiguration" json:"QueueConfigurations"`
|
||||
// Not supported topics
|
||||
TopicConfigurations []TopicConfiguration `xml:"TopicConfiguration" json:"TopicConfigurations"`
|
||||
LambdaFunctionConfigurations []LambdaFunctionConfiguration `xml:"CloudFunctionConfiguration" json:"CloudFunctionConfigurations"`
|
||||
}
|
||||
|
||||
QueueConfiguration struct {
|
||||
ID string `xml:"Id" json:"Id"`
|
||||
QueueArn string `xml:"Queue" json:"Queue"`
|
||||
Events []string `xml:"Event" json:"Events"`
|
||||
Filter Filter `xml:"Filter" json:"Filter"`
|
||||
}
|
||||
|
||||
Filter struct {
|
||||
Key Key `xml:"S3Key" json:"S3Key"`
|
||||
}
|
||||
|
||||
Key struct {
|
||||
FilterRules []FilterRule `xml:"FilterRule" json:"FilterRules"`
|
||||
}
|
||||
|
||||
FilterRule struct {
|
||||
Name string `xml:"Name" json:"Name"`
|
||||
Value string `xml:"Value" json:"Value"`
|
||||
}
|
||||
|
||||
// TopicConfiguration and LambdaFunctionConfiguration -- we don't support these configurations
|
||||
// but we need them to detect in notification configurations in requests.
|
||||
TopicConfiguration struct{}
|
||||
LambdaFunctionConfiguration struct{}
|
||||
)
|
||||
|
||||
var ValidEvents = map[string]struct{}{
|
||||
"s3:ReducedRedundancyLostObject": {},
|
||||
"s3:ObjectCreated:*": {},
|
||||
"s3:ObjectCreated:Put": {},
|
||||
"s3:ObjectCreated:Post": {},
|
||||
"s3:ObjectCreated:Copy": {},
|
||||
"s3:ObjectCreated:CompleteMultipartUpload": {},
|
||||
"s3:ObjectRemoved:*": {},
|
||||
"s3:ObjectRemoved:Delete": {},
|
||||
"s3:ObjectRemoved:DeleteMarkerCreated": {},
|
||||
"s3:ObjectRestore:*": {},
|
||||
"s3:ObjectRestore:Post": {},
|
||||
"s3:ObjectRestore:Completed": {},
|
||||
"s3:Replication:*": {},
|
||||
"s3:Replication:OperationFailedReplication": {},
|
||||
"s3:Replication:OperationNotTracked": {},
|
||||
"s3:Replication:OperationMissedThreshold": {},
|
||||
"s3:Replication:OperationReplicatedAfterThreshold": {},
|
||||
"s3:ObjectRestore:Delete": {},
|
||||
"s3:LifecycleTransition": {},
|
||||
"s3:IntelligentTiering": {},
|
||||
"s3:ObjectAcl:Put": {},
|
||||
"s3:LifecycleExpiration:*": {},
|
||||
"s3:LifecycleExpiration:Delete": {},
|
||||
"s3:LifecycleExpiration:DeleteMarkerCreated": {},
|
||||
"s3:ObjectTagging:*": {},
|
||||
"s3:ObjectTagging:Put": {},
|
||||
"s3:ObjectTagging:Delete": {},
|
||||
}
|
||||
|
||||
func (n NotificationConfiguration) IsEmpty() bool {
|
||||
return len(n.QueueConfigurations) == 0 && len(n.TopicConfigurations) == 0 && len(n.LambdaFunctionConfigurations) == 0
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue