1
1
package stream
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
6
+ "github.com/frain-dev/convoy/util"
5
7
6
8
"github.com/frain-dev/convoy"
7
9
"github.com/frain-dev/convoy/auth/realm_chain"
@@ -19,13 +21,28 @@ func AddStreamCommand(a *cli.App) *cobra.Command {
19
21
var socketPort uint32
20
22
var logLevel string
21
23
24
+ var newRelicApp string
25
+ var newRelicKey string
26
+ var newRelicTracerEnabled bool
27
+ var newRelicConfigEnabled bool
28
+
22
29
cmd := & cobra.Command {
23
30
Use : "stream" ,
24
31
Short : "Start a websocket server to pipe events to a convoy cli instance" ,
25
32
RunE : func (cmd * cobra.Command , args []string ) error {
26
- c , err := config .Get ()
33
+ // override config with cli flags
34
+ cliConfig , err := buildCliFlagConfiguration (cmd )
27
35
if err != nil {
28
- a .Logger .WithError (err ).Fatal ("failed to initialize realm chain" )
36
+ return err
37
+ }
38
+
39
+ if err = config .Override (cliConfig ); err != nil {
40
+ return err
41
+ }
42
+
43
+ cfg , err := config .Get ()
44
+ if err != nil {
45
+ a .Logger .Errorf ("Failed to retrieve config: %v" , err )
29
46
return err
30
47
}
31
48
@@ -60,19 +77,19 @@ func AddStreamCommand(a *cli.App) *cobra.Command {
60
77
EventDeliveryRepo : eventDeliveryRepo ,
61
78
}
62
79
63
- h := socket .NewHub ()
64
- h .Start ()
65
-
66
80
lo := a .Logger .(* log.Logger )
67
81
lo .SetPrefix ("stream server" )
68
82
69
- lvl , err := log .ParseLevel (c .Logger .Level )
83
+ lvl , err := log .ParseLevel (cfg .Logger .Level )
70
84
if err != nil {
71
85
return err
72
86
}
73
87
lo .SetLevel (lvl )
74
88
75
- handler := socket .BuildRoutes (h , r )
89
+ h := socket .NewHub ()
90
+ h .Start (context .Background ())
91
+
92
+ handler := socket .BuildRoutes (r )
76
93
77
94
consumer := worker .NewConsumer (a .Queue , lo )
78
95
consumer .RegisterHandlers (convoy .StreamCliEventsProcessor , h .EventDeliveryCLiHandler (r ))
@@ -81,8 +98,8 @@ func AddStreamCommand(a *cli.App) *cobra.Command {
81
98
fmt .Println ("Registering Stream Server Consumer..." )
82
99
consumer .Start ()
83
100
84
- if c .Server .HTTP .SocketPort != 0 {
85
- socketPort = c .Server .HTTP .SocketPort
101
+ if cfg .Server .HTTP .SocketPort != 0 {
102
+ socketPort = cfg .Server .HTTP .SocketPort
86
103
}
87
104
88
105
srv := server .NewServer (socketPort , func () { h .Stop () })
@@ -98,5 +115,59 @@ func AddStreamCommand(a *cli.App) *cobra.Command {
98
115
99
116
cmd .Flags ().Uint32Var (& socketPort , "socket-port" , 5008 , "Socket port" )
100
117
cmd .Flags ().StringVar (& logLevel , "log-level" , "error" , "stream log level" )
118
+
119
+ cmd .Flags ().BoolVar (& newRelicConfigEnabled , "new-relic-config-enabled" , false , "Enable new-relic config" )
120
+ cmd .Flags ().BoolVar (& newRelicTracerEnabled , "new-relic-tracer-enabled" , false , "Enable new-relic distributed tracer" )
121
+ cmd .Flags ().StringVar (& newRelicApp , "new-relic-app" , "" , "NewRelic application name" )
122
+ cmd .Flags ().StringVar (& newRelicKey , "new-relic-key" , "" , "NewRelic application license key" )
123
+
101
124
return cmd
102
125
}
126
+
127
+ func buildCliFlagConfiguration (cmd * cobra.Command ) (* config.Configuration , error ) {
128
+ c := & config.Configuration {}
129
+
130
+ // CONVOY_NEWRELIC_APP_NAME
131
+ newReplicApp , err := cmd .Flags ().GetString ("new-relic-app" )
132
+ if err != nil {
133
+ return nil , err
134
+ }
135
+
136
+ if ! util .IsStringEmpty (newReplicApp ) {
137
+ c .Tracer .NewRelic .AppName = newReplicApp
138
+ }
139
+
140
+ // CONVOY_NEWRELIC_LICENSE_KEY
141
+ newReplicKey , err := cmd .Flags ().GetString ("new-relic-key" )
142
+ if err != nil {
143
+ return nil , err
144
+ }
145
+
146
+ if ! util .IsStringEmpty (newReplicKey ) {
147
+ c .Tracer .NewRelic .LicenseKey = newReplicKey
148
+ }
149
+
150
+ // CONVOY_NEWRELIC_CONFIG_ENABLED
151
+ isNRCESet := cmd .Flags ().Changed ("new-relic-config-enabled" )
152
+ if isNRCESet {
153
+ newReplicConfigEnabled , err := cmd .Flags ().GetBool ("new-relic-config-enabled" )
154
+ if err != nil {
155
+ return nil , err
156
+ }
157
+
158
+ c .Tracer .NewRelic .ConfigEnabled = newReplicConfigEnabled
159
+ }
160
+
161
+ // CONVOY_NEWRELIC_DISTRIBUTED_TRACER_ENABLED
162
+ isNRTESet := cmd .Flags ().Changed ("new-relic-tracer-enabled" )
163
+ if isNRTESet {
164
+ newReplicTracerEnabled , err := cmd .Flags ().GetBool ("new-relic-tracer-enabled" )
165
+ if err != nil {
166
+ return nil , err
167
+ }
168
+
169
+ c .Tracer .NewRelic .DistributedTracerEnabled = newReplicTracerEnabled
170
+ }
171
+
172
+ return c , nil
173
+ }
0 commit comments