(o Interface)
| 27 | } |
| 28 | |
| 29 | func 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) |
no test coverage detected