Skip to content

Commit 7255311

Browse files
committed
Merged in feature/SCFF-38 (pull request #20)
Feature/SCFF-38
2 parents 7d7e07b + 48ce031 commit 7255311

4 files changed

Lines changed: 40 additions & 6 deletions

File tree

main.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var (
3535
sumoName = kingpin.Flag("sumo-name", "Sumo Logic Name").Default("").OverrideDefaultFromEnvar("SUMO_NAME").String()
3636
sumoHost = kingpin.Flag("sumo-host", "Sumo Logic Host").Default("").OverrideDefaultFromEnvar("SUMO_HOST").String()
3737
verboseLogMessages = kingpin.Flag("verbose-log-messages", "Verbose Log Messages").Default("true").OverrideDefaultFromEnvar("VERBOSE_LOG_MESSAGES").Bool()
38+
customMetadata = kingpin.Flag("custom-metadata", "Custom Metadata").Default("").OverrideDefaultFromEnvar("CUSTOM_METADATA").String()
3839
)
3940

4041
var (
@@ -90,7 +91,7 @@ func main() {
9091

9192
logging.Info.Println("Creating queue")
9293
queue := eventQueue.NewQueue(make([]*events.Event, 100))
93-
loggingClientSumo := sumoCFFirehose.NewSumoLogicAppender(*sumoEndpoint, 5000, &queue, *eventsBatchSize, *sumoPostMinimumDelay, *sumoCategory, *sumoName, *sumoHost, *verboseLogMessages)
94+
loggingClientSumo := sumoCFFirehose.NewSumoLogicAppender(*sumoEndpoint, 5000, &queue, *eventsBatchSize, *sumoPostMinimumDelay, *sumoCategory, *sumoName, *sumoHost, *verboseLogMessages, *customMetadata)
9495
go loggingClientSumo.Start() //multi
9596

9697
logging.Info.Println("Creating Events")

sumoCFFirehose/sumoLogicAppender.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package sumoCFFirehose
33
import (
44
"bytes"
55
"compress/gzip"
6+
"encoding/json"
67
"errors"
78
"net/http"
89
"runtime"
10+
"strings"
911
"time"
1012

11-
"encoding/json"
12-
1313
"bitbucket.org/mcplusa-ondemand/firehose-to-sumologic/eventQueue"
1414
"bitbucket.org/mcplusa-ondemand/firehose-to-sumologic/events"
1515
"bitbucket.org/mcplusa-ondemand/firehose-to-sumologic/logging"
@@ -27,6 +27,7 @@ type SumoLogicAppender struct {
2727
sumoName string
2828
sumoHost string
2929
verboseLogMessages bool
30+
customMetadata string
3031
}
3132

3233
type SumoBuffer struct {
@@ -35,7 +36,7 @@ type SumoBuffer struct {
3536
timerIdlebuffer time.Time
3637
}
3738

38-
func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQueue *eventQueue.Queue, eventsBatchSize int, sumoPostMinimumDelay time.Duration, sumoCategory string, sumoName string, sumoHost string, verboseLogMessages bool) *SumoLogicAppender {
39+
func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQueue *eventQueue.Queue, eventsBatchSize int, sumoPostMinimumDelay time.Duration, sumoCategory string, sumoName string, sumoHost string, verboseLogMessages bool, customMetadata string) *SumoLogicAppender {
3940
return &SumoLogicAppender{
4041
url: urlValue,
4142
connectionTimeout: connectionTimeoutValue,
@@ -47,6 +48,7 @@ func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQue
4748
sumoName: sumoName,
4849
sumoHost: sumoHost,
4950
verboseLogMessages: verboseLogMessages,
51+
customMetadata: customMetadata,
5052
}
5153
}
5254

@@ -186,6 +188,14 @@ func (s *SumoLogicAppender) AppendLogs(buffer *SumoBuffer) {
186188
buffer.logEventsInCurrentBuffer++
187189

188190
}
191+
func ParseCustomMetadata(customMetadata string) map[string]string {
192+
cMetadataArray := strings.Split(customMetadata, ",")
193+
customMetadataMap := make(map[string]string)
194+
for i := 0; i < len(cMetadataArray); i++ {
195+
customMetadataMap[strings.Split(cMetadataArray[i], ":")[0]] = strings.Split(cMetadataArray[i], ":")[1]
196+
}
197+
return customMetadataMap
198+
}
189199

190200
func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
191201
if logStringToSend != "" {
@@ -198,7 +208,6 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
198208
logging.Error.Printf("http.NewRequest() error: %v\n", err)
199209
return
200210
}
201-
202211
request.Header.Add("Content-Encoding", "gzip")
203212

204213
if s.sumoName != "" {
@@ -210,6 +219,13 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string) {
210219
if s.sumoCategory != "" {
211220
request.Header.Add("X-Sumo-Category", s.sumoCategory)
212221
}
222+
223+
if s.customMetadata != "" {
224+
customMetadataMap := ParseCustomMetadata(s.customMetadata)
225+
for key, value := range customMetadataMap {
226+
request.Header.Add(key, value)
227+
}
228+
}
213229
//checking the timer before first POST intent
214230
for time.Since(s.timerBetweenPost) < s.sumoPostMinimumDelay {
215231
logging.Trace.Println("Delaying Post because minimum post timer not expired")

sumoCFFirehose/sumoLogicAppender_test.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ func TestStringBuilderVerboseLogsTrue(t *testing.T) {
114114
}
115115
finalMessage := StringBuilder(&eventVerboseLogMessage, true)
116116

117-
assert.Contains(t, finalMessage, "source_type", "dsds")
117+
assert.Contains(t, finalMessage, "source_type", "")
118+
119+
}
120+
func TestSendParseCustomMetadata(t *testing.T) {
121+
customMetadata := "Key1:Value1,Key2:Value2,Key3:Value3"
122+
mapCustomMetadata := ParseCustomMetadata(customMetadata)
123+
mapExpected := map[string]string{
124+
"Key1": "Value1",
125+
"Key2": "Value2",
126+
"Key3": "Value3",
127+
}
128+
129+
assert.Equal(t, mapExpected, mapCustomMetadata, "")
118130

119131
}

tile.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ forms:
6767
label: Sumo Logic Host
6868
description: Sumo Logic Host (this will override the default in Sumo Logic)
6969
optional: true
70+
- name: custom-metadata
71+
type: string
72+
label: Custom Metadata
73+
description: Enter your custom metatdata and values (key1:value1,key2:value2, etc...)
74+
optional: true
7075

7176
- name: cf-config
7277
label: Cloud Foundry Settings

0 commit comments

Comments
 (0)