MCPcopy
hub / github.com/grafana/tempo / statusHandler

Method statusHandler

cmd/tempo/app/app.go:386–462  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

384}
385
386func (t *App) statusHandler() http.HandlerFunc {
387 return func(w http.ResponseWriter, r *http.Request) {
388 var errs []error
389 msg := bytes.Buffer{}
390
391 simpleEndpoints := map[string]func(io.Writer) error{
392 "version": t.writeStatusVersion,
393 "services": t.writeStatusServices,
394 "endpoints": t.writeStatusEndpoints,
395 }
396
397 wrapStatus := func(endpoint string) {
398 msg.WriteString("GET /status/" + endpoint + "\n")
399
400 switch endpoint {
401 case "runtime_config":
402 err := t.writeRuntimeConfig(&msg, r)
403 if err != nil {
404 errs = append(errs, err)
405 }
406 case "config":
407 err := t.writeStatusConfig(&msg, r)
408 if err != nil {
409 errs = append(errs, err)
410 }
411 default:
412 err := simpleEndpoints[endpoint](&msg)
413 if err != nil {
414 errs = append(errs, err)
415 }
416 }
417 }
418
419 vars := mux.Vars(r)
420
421 if endpoint, ok := vars["endpoint"]; ok {
422 wrapStatus(endpoint)
423 } else {
424 wrapStatus("version")
425 wrapStatus("services")
426 wrapStatus("endpoints")
427 wrapStatus("runtime_config")
428 wrapStatus("config")
429 }
430
431 w.Header().Set("Content-Type", "text/plain")
432
433 joinErrors := func(errs []error) error {
434 if len(errs) == 0 {
435 return nil
436 }
437 var err error
438
439 for _, e := range errs {
440 if e != nil {
441 if err == nil {
442 err = e
443 } else {

Callers 1

RunMethod · 0.95

Calls 9

writeRuntimeConfigMethod · 0.95
writeStatusConfigMethod · 0.95
BytesMethod · 0.80
SetMethod · 0.65
ErrorMethod · 0.65
WriteMethod · 0.65
LogMethod · 0.65
HeaderMethod · 0.45
WriteHeaderMethod · 0.45

Tested by

no test coverage detected