Loki: Decouple some of backend dependencies on grafana (#106788)
* Remove backend dependencies on core * Remove .golangci.yml changes * make update-workspace
This commit is contained in:
+18
-11
@@ -22,16 +22,23 @@ import (
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/promlib/models"
|
||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||
ngalertmodels "github.com/grafana/grafana/pkg/services/ngalert/models"
|
||||
"github.com/grafana/grafana/pkg/tsdb/loki/kinds/dataquery"
|
||||
)
|
||||
|
||||
const (
|
||||
flagLokiLogsDataplane = "lokiLogsDataplane"
|
||||
flagLokiSendDashboardPanelNames = "lokiSendDashboardPanelNames"
|
||||
flagLokiRunQueriesInParallel = "lokiRunQueriesInParallel"
|
||||
flagLokiStructuredMetadata = "lokiStructuredMetadata"
|
||||
flagLogQLScope = "logQLScope"
|
||||
flagLokiExperimentalStreaming = "lokiExperimentalStreaming"
|
||||
fromAlertHeaderName = "FromAlert"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
im instancemgmt.InstanceManager
|
||||
tracer tracing.Tracer
|
||||
tracer trace.Tracer
|
||||
logger log.Logger
|
||||
}
|
||||
|
||||
@@ -41,7 +48,7 @@ var (
|
||||
_ backend.CallResourceHandler = (*Service)(nil)
|
||||
)
|
||||
|
||||
func ProvideService(httpClientProvider *httpclient.Provider, tracer tracing.Tracer) *Service {
|
||||
func ProvideService(httpClientProvider *httpclient.Provider, tracer trace.Tracer) *Service {
|
||||
return &Service{
|
||||
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider)),
|
||||
tracer: tracer,
|
||||
@@ -118,7 +125,7 @@ func (s *Service) CallResource(ctx context.Context, req *backend.CallResourceReq
|
||||
return callResource(ctx, req, sender, dsInfo, logger, s.tracer)
|
||||
}
|
||||
|
||||
func callResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender, dsInfo *datasourceInfo, plog log.Logger, tracer tracing.Tracer) error {
|
||||
func callResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender, dsInfo *datasourceInfo, plog log.Logger, tracer trace.Tracer) error {
|
||||
url := req.URL
|
||||
|
||||
lokiURL := fmt.Sprintf("/loki/api/v1/%s", url)
|
||||
@@ -169,7 +176,7 @@ func callResource(ctx context.Context, req *backend.CallResourceRequest, sender
|
||||
|
||||
func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
|
||||
dsInfo, err := s.getDSInfo(ctx, req.PluginContext)
|
||||
_, fromAlert := req.Headers[ngalertmodels.FromAlertHeaderName]
|
||||
_, fromAlert := req.Headers[fromAlertHeaderName]
|
||||
logger := s.logger.FromContext(ctx).With("fromAlert", fromAlert)
|
||||
if err != nil {
|
||||
logger.Debug("Failed to get data source info", "err", err)
|
||||
@@ -177,13 +184,13 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
|
||||
}
|
||||
|
||||
responseOpts := ResponseOpts{
|
||||
logsDataplane: isFeatureEnabled(ctx, featuremgmt.FlagLokiLogsDataplane),
|
||||
logsDataplane: isFeatureEnabled(ctx, flagLokiLogsDataplane),
|
||||
}
|
||||
|
||||
return queryData(ctx, req, dsInfo, responseOpts, s.tracer, logger, isFeatureEnabled(ctx, featuremgmt.FlagLokiRunQueriesInParallel), isFeatureEnabled(ctx, featuremgmt.FlagLokiStructuredMetadata), isFeatureEnabled(ctx, featuremgmt.FlagLogQLScope))
|
||||
return queryData(ctx, req, dsInfo, responseOpts, s.tracer, logger, isFeatureEnabled(ctx, flagLokiRunQueriesInParallel), isFeatureEnabled(ctx, flagLokiStructuredMetadata), isFeatureEnabled(ctx, flagLogQLScope))
|
||||
}
|
||||
|
||||
func queryData(ctx context.Context, req *backend.QueryDataRequest, dsInfo *datasourceInfo, responseOpts ResponseOpts, tracer tracing.Tracer, plog log.Logger, runInParallel bool, requestStructuredMetadata, logQLScopes bool) (*backend.QueryDataResponse, error) {
|
||||
func queryData(ctx context.Context, req *backend.QueryDataRequest, dsInfo *datasourceInfo, responseOpts ResponseOpts, tracer trace.Tracer, plog log.Logger, runInParallel bool, requestStructuredMetadata, logQLScopes bool) (*backend.QueryDataResponse, error) {
|
||||
result := backend.NewQueryDataResponse()
|
||||
|
||||
api := newLokiAPI(dsInfo.HTTPClient, dsInfo.URL, plog, tracer, requestStructuredMetadata)
|
||||
@@ -229,7 +236,7 @@ func queryData(ctx context.Context, req *backend.QueryDataRequest, dsInfo *datas
|
||||
return result, err
|
||||
}
|
||||
|
||||
func executeQuery(ctx context.Context, query *lokiQuery, req *backend.QueryDataRequest, runInParallel bool, api *LokiAPI, responseOpts ResponseOpts, tracer tracing.Tracer, plog log.Logger) backend.DataResponse {
|
||||
func executeQuery(ctx context.Context, query *lokiQuery, req *backend.QueryDataRequest, runInParallel bool, api *LokiAPI, responseOpts ResponseOpts, tracer trace.Tracer, plog log.Logger) backend.DataResponse {
|
||||
ctx, span := tracer.Start(ctx, "datasource.loki.queryData.runQueries.runQuery", trace.WithAttributes(
|
||||
attribute.Bool("runInParallel", runInParallel),
|
||||
attribute.String("expr", query.Expr),
|
||||
|
||||
Reference in New Issue
Block a user