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

Function TenantStatusHandler

modules/overrides/overrides_tenant_status_http.go:29–88  ·  view source on GitHub ↗
(o Interface)

Source from the content-addressed store, hash-verified

27}
28
29func TenantStatusHandler(o Interface) http.HandlerFunc {
30 return func(w http.ResponseWriter, req *http.Request) {
31 page := tenantStatusPageContents{
32 Now: time.Now(),
33 }
34
35 vars := mux.Vars(req)
36
37 page.Tenant = vars["tenant"]
38 if page.Tenant == "" {
39 util.WriteTextResponse(w, "Tenant ID can't be empty")
40 return
41 }
42
43 // runtime overrides
44 overrides := o.GetRuntimeOverridesFor(page.Tenant)
45 runtimeOverrides, err := yaml.Marshal(overrides)
46 if err != nil {
47 util.WriteTextResponse(w, fmt.Sprintf("Marshalling runtime overrides failed: %s", err))
48 return
49 }
50 page.RuntimeOverrides = string(runtimeOverrides)
51
52 var runtimeTenants []string
53 switch o := o.(type) {
54 case *runtimeConfigOverridesManager:
55 runtimeTenants = o.GetTenantIDs()
56 case *userConfigurableOverridesManager:
57 runtimeTenants = o.Interface.GetTenantIDs()
58 default:
59 util.WriteTextResponse(w, "Internal error happened when retrieving runtime overrides")
60 }
61 if slices.Contains(runtimeTenants, page.Tenant) {
62 page.RuntimeOverridesSource = page.Tenant
63 } else if slices.Contains(runtimeTenants, wildcardTenant) {
64 page.RuntimeOverridesSource = wildcardTenant
65 } else {
66 page.RuntimeOverridesSource = "default overrides"
67 }
68
69 // user-configurable overrides
70 if userConfigOverridesManager, ok := o.(*userConfigurableOverridesManager); ok {
71 overrides := userConfigOverridesManager.getTenantLimits(page.Tenant)
72 if overrides != nil {
73 marshalledOverrides, err := yaml.Marshal(overrides)
74 if err != nil {
75 util.WriteTextResponse(w, fmt.Sprintf("Marshalling user-configurable overrides failed: %s", err))
76 return
77 }
78 page.UserConfigurableOverrides = string(marshalledOverrides)
79 } else {
80 page.UserConfigurableOverrides = "No user-configurable overrides set"
81 }
82 } else {
83 page.UserConfigurableOverrides = "User-configurable overrides are not enabled"
84 }
85
86 util.RenderHTTPResponse(w, page, tenantStatusTemplate, req)

Callers 1

initOverridesMethod · 0.92

Calls 7

WriteTextResponseFunction · 0.92
RenderHTTPResponseFunction · 0.92
getTenantLimitsMethod · 0.80
NowMethod · 0.65
MarshalMethod · 0.65
GetTenantIDsMethod · 0.65

Tested by

no test coverage detected