github.com/grafana/pyroscope@v1.18.0/pkg/storegateway/gateway_tenants_http.go (about) 1 // SPDX-License-Identifier: AGPL-3.0-only 2 3 package storegateway 4 5 import ( 6 _ "embed" // Used to embed html template 7 "fmt" 8 "html/template" 9 "net/http" 10 "time" 11 12 "github.com/grafana/pyroscope/pkg/util" 13 ) 14 15 //go:embed tenants.gohtml 16 var tenantsPageHTML string 17 var tenantsTemplate = template.Must(template.New("webpage").Parse(tenantsPageHTML)) 18 19 type tenantsPageContents struct { 20 Now time.Time `json:"now"` 21 Tenants []string `json:"tenants,omitempty"` 22 } 23 24 func (s *StoreGateway) TenantsHandler(w http.ResponseWriter, req *http.Request) { 25 tenantIDs, err := s.stores.scanUsers(req.Context()) 26 if err != nil { 27 util.WriteTextResponse(w, fmt.Sprintf("Can't read tenants: %s", err)) 28 return 29 } 30 31 util.RenderHTTPResponse(w, tenantsPageContents{ 32 Now: time.Now(), 33 Tenants: tenantIDs, 34 }, tenantsTemplate, req) 35 }