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  }