forked from opsgenie/kubernetes-event-exporter
/
receiver.go
126 lines (101 loc) · 2.85 KB
/
receiver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package sinks
import "errors"
// Receiver allows receiving
type ReceiverConfig struct {
Name string `yaml:"name"`
InMemory *InMemoryConfig `yaml:"inMemory"`
Webhook *WebhookConfig `yaml:"webhook"`
File *FileConfig `yaml:"file"`
Syslog *SyslogConfig `yaml:"syslog"`
Stdout *StdoutConfig `yaml:"stdout"`
Elasticsearch *ElasticsearchConfig `yaml:"elasticsearch"`
Kinesis *KinesisConfig `yaml:"kinesis"`
Firehose *FirehoseConfig `yaml:"firehose"`
OpenSearch *OpenSearchConfig `yaml:"opensearch"`
Opsgenie *OpsgenieConfig `yaml:"opsgenie"`
Loki *LokiConfig `yaml:"loki"`
SQS *SQSConfig `yaml:"sqs"`
SNS *SNSConfig `yaml:"sns"`
Slack *SlackConfig `yaml:"slack"`
Kafka *KafkaConfig `yaml:"kafka"`
Pubsub *PubsubConfig `yaml:"pubsub"`
Opscenter *OpsCenterConfig `yaml:"opscenter"`
Teams *TeamsConfig `yaml:"teams"`
BigQuery *BigQueryConfig `yaml:"bigquery"`
EventBridge *EventBridgeConfig `yaml:"eventbridge"`
Pipe *PipeConfig `yaml:"pipe"`
}
func (r *ReceiverConfig) Validate() error {
return nil
}
func (r *ReceiverConfig) GetSink() (Sink, error) {
if r.InMemory != nil {
// This reference is used for test purposes to count the events in the sink.
// It should not be used in production since it will only cause memory leak and (b)OOM
sink := &InMemory{Config: r.InMemory}
r.InMemory.Ref = sink
return sink, nil
}
// Sorry for this code, but its Go
if r.Pipe != nil {
return NewPipeSink(r.Pipe)
}
if r.Webhook != nil {
return NewWebhook(r.Webhook)
}
if r.File != nil {
return NewFileSink(r.File)
}
if r.Syslog != nil {
return NewSyslogSink(r.Syslog)
}
if r.Stdout != nil {
return NewStdoutSink(r.Stdout)
}
if r.Elasticsearch != nil {
return NewElasticsearch(r.Elasticsearch)
}
if r.Kinesis != nil {
return NewKinesisSink(r.Kinesis)
}
if r.Firehose != nil {
return NewFirehoseSink(r.Firehose)
}
if r.OpenSearch != nil {
return NewOpenSearch(r.OpenSearch)
}
if r.Opsgenie != nil {
return NewOpsgenieSink(r.Opsgenie)
}
if r.SQS != nil {
return NewSQSSink(r.SQS)
}
if r.SNS != nil {
return NewSNSSink(r.SNS)
}
if r.Slack != nil {
return NewSlackSink(r.Slack)
}
if r.Kafka != nil {
return NewKafkaSink(r.Kafka)
}
if r.Pubsub != nil {
return NewPubsubSink(r.Pubsub)
}
if r.Opscenter != nil {
return NewOpsCenterSink(r.Opscenter)
}
if r.Teams != nil {
return NewTeamsSink(r.Teams)
}
if r.BigQuery != nil {
return NewBigQuerySink(r.BigQuery)
}
if r.EventBridge != nil {
return NewEventBridgeSink(r.EventBridge)
}
if r.Loki != nil {
return NewLoki(r.Loki)
}
return nil, errors.New("unknown sink")
}