Skip to content

Commit 61ffdd4

Browse files
Make HTTP middleware optional (#194)
* Make HTTP middleware optional * Allow the Router to be set by caller Signed-off-by: Michel Hollands <[email protected]>
1 parent cef15bc commit 61ffdd4

File tree

2 files changed

+30
-13
lines changed

2 files changed

+30
-13
lines changed

server/server.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,12 @@ type Config struct {
6262
HTTPServerWriteTimeout time.Duration `yaml:"http_server_write_timeout"`
6363
HTTPServerIdleTimeout time.Duration `yaml:"http_server_idle_timeout"`
6464

65-
GRPCOptions []grpc.ServerOption `yaml:"-"`
66-
GRPCMiddleware []grpc.UnaryServerInterceptor `yaml:"-"`
67-
GRPCStreamMiddleware []grpc.StreamServerInterceptor `yaml:"-"`
68-
HTTPMiddleware []middleware.Interface `yaml:"-"`
65+
GRPCOptions []grpc.ServerOption `yaml:"-"`
66+
GRPCMiddleware []grpc.UnaryServerInterceptor `yaml:"-"`
67+
GRPCStreamMiddleware []grpc.StreamServerInterceptor `yaml:"-"`
68+
HTTPMiddleware []middleware.Interface `yaml:"-"`
69+
Router *mux.Router `yaml:"-"`
70+
DoNotAddDefaultHTTPMiddleware bool `yaml:"-"`
6971

7072
GPRCServerMaxRecvMsgSize int `yaml:"grpc_server_max_recv_msg_size"`
7173
GRPCServerMaxSendMsgSize int `yaml:"grpc_server_max_send_msg_size"`
@@ -270,7 +272,12 @@ func New(cfg Config) (*Server, error) {
270272
grpcServer := grpc.NewServer(grpcOptions...)
271273

272274
// Setup HTTP server
273-
router := mux.NewRouter()
275+
var router *mux.Router
276+
if cfg.Router != nil {
277+
router = cfg.Router
278+
} else {
279+
router = mux.NewRouter()
280+
}
274281
if cfg.PathPrefix != "" {
275282
// Expect metrics and pprof handlers to be prefixed with server's path prefix.
276283
// e.g. /loki/metrics or /loki/debug/pprof
@@ -279,14 +286,16 @@ func New(cfg Config) (*Server, error) {
279286
if cfg.RegisterInstrumentation {
280287
RegisterInstrumentation(router)
281288
}
289+
282290
var sourceIPs *middleware.SourceIPExtractor
283291
if cfg.LogSourceIPs {
284292
sourceIPs, err = middleware.NewSourceIPs(cfg.LogSourceIPsHeader, cfg.LogSourceIPsRegex)
285293
if err != nil {
286294
return nil, fmt.Errorf("error setting up source IP extraction: %v", err)
287295
}
288296
}
289-
httpMiddleware := []middleware.Interface{
297+
298+
defaultHTTPMiddleware := []middleware.Interface{
290299
middleware.Tracer{
291300
RouteMatcher: router,
292301
SourceIPs: sourceIPs,
@@ -303,8 +312,13 @@ func New(cfg Config) (*Server, error) {
303312
InflightRequests: inflightRequests,
304313
},
305314
}
315+
httpMiddleware := []middleware.Interface{}
316+
if cfg.DoNotAddDefaultHTTPMiddleware {
317+
httpMiddleware = cfg.HTTPMiddleware
318+
} else {
319+
httpMiddleware = append(defaultHTTPMiddleware, cfg.HTTPMiddleware...)
320+
}
306321

307-
httpMiddleware = append(httpMiddleware, cfg.HTTPMiddleware...)
308322
httpServer := &http.Server{
309323
ReadTimeout: cfg.HTTPServerReadTimeout,
310324
WriteTimeout: cfg.HTTPServerWriteTimeout,

server/server_test.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"google.golang.org/grpc/status"
2121

2222
google_protobuf "github.com/golang/protobuf/ptypes/empty"
23+
"github.com/gorilla/mux"
2324
"github.com/prometheus/client_golang/prometheus"
2425
node_https "github.com/prometheus/node_exporter/https"
2526
"github.com/stretchr/testify/require"
@@ -425,12 +426,14 @@ func TestMiddlewareLogging(t *testing.T) {
425426
var level logging.Level
426427
level.Set("info")
427428
cfg := Config{
428-
HTTPListenAddress: "localhost",
429-
HTTPListenPort: 9192,
430-
GRPCListenAddress: "localhost",
431-
HTTPMiddleware: []middleware.Interface{middleware.Logging},
432-
MetricsNamespace: "testing_logging",
433-
LogLevel: level,
429+
HTTPListenAddress: "localhost",
430+
HTTPListenPort: 9192,
431+
GRPCListenAddress: "localhost",
432+
HTTPMiddleware: []middleware.Interface{middleware.Logging},
433+
MetricsNamespace: "testing_logging",
434+
LogLevel: level,
435+
DoNotAddDefaultHTTPMiddleware: true,
436+
Router: &mux.Router{},
434437
}
435438
server, err := New(cfg)
436439
require.NoError(t, err)

0 commit comments

Comments
 (0)