MCPcopy Create free account
hub / github.com/cortexproject/cortex / InitFrontend

Function InitFrontend

pkg/frontend/config.go:40–73  ·  view source on GitHub ↗

InitFrontend initializes frontend (either V1 -- without scheduler, or V2 -- with scheduler) or no frontend at all if downstream Prometheus URL is used instead. Returned RoundTripper can be wrapped in more round-tripper middlewares, and then eventually registered into HTTP server using the Handler f

(cfg CombinedFrontendConfig, limits v1.Limits, grpcListenPort int, log log.Logger, reg prometheus.Registerer, retry *transport.Retry)

Source from the content-addressed store, hash-verified

38// into HTTP server using the Handler from this package. Returned RoundTripper is always non-nil
39// (if there are no errors), and it uses the returned frontend (if any).
40func InitFrontend(cfg CombinedFrontendConfig, limits v1.Limits, grpcListenPort int, log log.Logger, reg prometheus.Registerer, retry *transport.Retry) (http.RoundTripper, *v1.Frontend, *v2.Frontend, error) {
41 switch {
42 case cfg.DownstreamURL != "":
43 // If the user has specified a downstream Prometheus, then we should use that.
44 rt, err := NewDownstreamRoundTripper(cfg.DownstreamURL, http.DefaultTransport)
45 return rt, nil, nil, err
46
47 case cfg.FrontendV2.SchedulerAddress != "":
48 // If query-scheduler address is configured, use Frontend.
49 if cfg.FrontendV2.Addr == "" {
50 addr, err := util.GetFirstAddressOf(cfg.FrontendV2.InfNames)
51 if err != nil {
52 return nil, nil, nil, errors.Wrap(err, "failed to get frontend address")
53 }
54
55 cfg.FrontendV2.Addr = addr
56 }
57
58 if cfg.FrontendV2.Port == 0 {
59 cfg.FrontendV2.Port = grpcListenPort
60 }
61
62 fr, err := v2.NewFrontend(cfg.FrontendV2, limits, log, reg, retry)
63 return transport.AdaptGrpcRoundTripperToHTTPRoundTripper(fr), nil, fr, err
64
65 default:
66 // No scheduler = use original frontend.
67 fr, err := v1.New(cfg.FrontendV1, limits, log, reg, retry)
68 if err != nil {
69 return nil, nil, nil, err
70 }
71 return transport.AdaptGrpcRoundTripperToHTTPRoundTripper(fr), fr, nil, nil
72 }
73}

Callers 2

initQueryFrontendMethod · 0.92
testFrontendFunction · 0.85

Calls 6

GetFirstAddressOfFunction · 0.92
NewFrontendFunction · 0.92
NewFunction · 0.92
WrapMethod · 0.65

Tested by 1

testFrontendFunction · 0.68