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

Function TenantsHandler

modules/overrides/overrides_tenants_http.go:31–74  ·  view source on GitHub ↗
(o Interface)

Source from the content-addressed store, hash-verified

29}
30
31func TenantsHandler(o Interface) http.HandlerFunc {
32 return func(w http.ResponseWriter, req *http.Request) {
33 tenants := make(map[string]*tenantsPageTenant)
34
35 // runtime overrides
36 var runtimeTenants []string
37 switch o := o.(type) {
38 case *runtimeConfigOverridesManager:
39 runtimeTenants = o.GetTenantIDs()
40 case *userConfigurableOverridesManager:
41 runtimeTenants = o.Interface.GetTenantIDs()
42 default:
43 util.WriteTextResponse(w, "Internal error happened when retrieving runtime overrides")
44 }
45 for _, tenant := range runtimeTenants {
46 tenants[tenant] = &tenantsPageTenant{
47 Name: tenant,
48 HasRuntimeOverrides: true,
49 }
50 }
51
52 // user-configurable overrides
53 userConfigurableOverridesManager, ok := o.(*userConfigurableOverridesManager)
54 if ok {
55 for _, tenant := range userConfigurableOverridesManager.GetTenantIDs() {
56 tenantsPage := tenants[tenant]
57 if tenantsPage == nil {
58 tenantsPage = &tenantsPageTenant{Name: tenant}
59 tenants[tenant] = tenantsPage
60 }
61
62 tenantsPage.HasUserConfigurableOverrides = true
63 }
64 }
65
66 tenantsList := slices.AppendSeq(make([]*tenantsPageTenant, 0, len(tenants)), maps.Values(tenants))
67 sortTenantsPageTenant(tenantsList)
68
69 util.RenderHTTPResponse(w, tenantsPageContents{
70 Now: time.Now(),
71 Tenants: tenantsList,
72 }, tenantsTemplate, req)
73 }
74}
75
76func sortTenantsPageTenant(list []*tenantsPageTenant) {
77 sort.Slice(list, func(i, j int) bool {

Callers 1

initOverridesMethod · 0.92

Calls 6

WriteTextResponseFunction · 0.92
RenderHTTPResponseFunction · 0.92
sortTenantsPageTenantFunction · 0.85
GetTenantIDsMethod · 0.65
NowMethod · 0.65
ValuesMethod · 0.45

Tested by

no test coverage detected