mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: Migrate metadata queries to use resource calls (#49921)
* Sent resource calls for metadata to the backend * moved resource calls to the backend * code review feedback * fixed post with body * statuscode >= 300 * cleanup * fixed tests * fixed datasource tests * code review feedback * force some other endpoints to only GET * fix linting errors * fixed tests * was able to remove section of redundant code * cleanup and code review feedback * moved query_exemplars to get request * fixed return on error * went back to resource calls, but using the backendsrv directly * moved to a resource call with fallback * fixed tests * check for proper messages * proper check for invalid calls * code review changes
This commit is contained in:
committed by
GitHub
parent
d2f3631a47
commit
53ee72d15d
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/grafana/grafana/pkg/tsdb/prometheus/buffered"
|
||||
"github.com/grafana/grafana/pkg/tsdb/prometheus/querydata"
|
||||
"github.com/grafana/grafana/pkg/tsdb/prometheus/resource"
|
||||
apiv1 "github.com/prometheus/client_golang/api/prometheus/v1"
|
||||
)
|
||||
|
||||
@@ -29,6 +30,7 @@ type Service struct {
|
||||
type instance struct {
|
||||
buffered *buffered.Buffered
|
||||
queryData *querydata.QueryData
|
||||
resource *resource.Resource
|
||||
}
|
||||
|
||||
func ProvideService(httpClientProvider httpclient.Provider, cfg *setting.Cfg, features featuremgmt.FeatureToggles, tracer tracing.Tracer) *Service {
|
||||
@@ -57,9 +59,15 @@ func newInstanceSettings(httpClientProvider httpclient.Provider, cfg *setting.Cf
|
||||
return nil, err
|
||||
}
|
||||
|
||||
r, err := resource.New(httpClientProvider, cfg, features, settings, plog)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return instance{
|
||||
buffered: b,
|
||||
queryData: qd,
|
||||
resource: r,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
@@ -81,6 +89,27 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
|
||||
return i.buffered.ExecuteTimeSeriesQuery(ctx, req)
|
||||
}
|
||||
|
||||
func (s *Service) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error {
|
||||
i, err := s.getInstance(req.PluginContext)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
statusCode, bytes, err := i.resource.Execute(ctx, req)
|
||||
body := bytes
|
||||
if err != nil {
|
||||
body = []byte(err.Error())
|
||||
}
|
||||
|
||||
return sender.Send(&backend.CallResourceResponse{
|
||||
Status: statusCode,
|
||||
Headers: map[string][]string{
|
||||
"content-type": {"application/json"},
|
||||
},
|
||||
Body: body,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Service) getInstance(pluginCtx backend.PluginContext) (*instance, error) {
|
||||
i, err := s.im.Get(pluginCtx)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user