diff --git a/sinks/interfaces.go b/sinks/interfaces.go index f67b015d8..c14d8d10d 100644 --- a/sinks/interfaces.go +++ b/sinks/interfaces.go @@ -39,7 +39,9 @@ func ManufactureSink() (e EventSinkInterface) { case "glog": e = NewGlogSink() case "stdout": - e = NewStdoutSink() + viper.SetDefault("stdoutJSONNamespace", "") + stdoutNamespace := viper.GetString("stdoutJSONNamespace") + e = NewStdoutSink(stdoutNamespace) case "http": url := viper.GetString("httpSinkUrl") if url == "" { diff --git a/sinks/stdoutsink.go b/sinks/stdoutsink.go index c2c302ac2..a89cd9bc9 100644 --- a/sinks/stdoutsink.go +++ b/sinks/stdoutsink.go @@ -30,21 +30,34 @@ import ( // can be queried in Kibana. type StdoutSink struct { // TODO: create a channel and buffer for scaling + namespace string } + // NewStdoutSink will create a new StdoutSink with default options, returned as // an EventSinkInterface -func NewStdoutSink() EventSinkInterface { - return &StdoutSink{} +func NewStdoutSink(namespace string) EventSinkInterface { + return &StdoutSink{ + namespace: namespace} } // UpdateEvents implements the EventSinkInterface func (gs *StdoutSink) UpdateEvents(eNew *v1.Event, eOld *v1.Event) { eData := NewEventData(eNew, eOld) - - if eJSONBytes, err := json.Marshal(eData); err == nil { - fmt.Println(string(eJSONBytes)) + + if len(gs.namespace) > 0 { + namespacedData := map[string]interface{}{} + namespacedData[gs.namespace] = eData + if eJSONBytes, err := json.Marshal(namespacedData); err == nil { + fmt.Println(string(eJSONBytes)) + } else { + fmt.Fprintf(os.Stderr, "Failed to json serialize event: %v", err) + } } else { - fmt.Fprintf(os.Stderr, "Failed to json serialize event: %v", err) + if eJSONBytes, err := json.Marshal(eData); err == nil { + fmt.Println(string(eJSONBytes)) + } else { + fmt.Fprintf(os.Stderr, "Failed to json serialize event: %v", err) + } } }