Graphite: Backend events endpoint (#110598)

* Add lint rules

* Backend decoupling

- Add standalone files
- Add graphite query type
- Add logger to Service
- Create logger in the ProvideService method
- Use a pointer for the HTTP client provider
- Update logger usage everywhere
- Update tracer type
- Replace simplejson with json
- Add dummy CallResource and CheckHealth methods
- Update tests

* Update ConfigEditor imports

* Update types imports

* Update datasource

- Switch to using semver package
- Update imports

* Update store imports

* Update helper imports and notification creation

* Update context import

* Update version numbers and logic

* Copy array_move from core

* Test updates

* Add required files and update plugin.json

* Update core references and packages

* Remove commented code

* Update wire

* Lint

* Fix import

* Copy null type

* More lint

* Update snapshot

* Refactor backend

- Split query logic into separate file
- Move utils to separate file

* Add health-check logic

- Support backend healthcheck if the FF is enabled

* Remove query import support as unneeded

* Add test

* Add util function for decoding responses

* Add events types

* Add resource handler

* Add events handler and generic resource req handler

* Tests

* Update frontend

- Add types
- Update events function to support backend requests

* Lint and typing

* Lint

* Add tests

* Review

* Review

* Fix packages

* Fix merge issues
This commit is contained in:
Andreas Christou
2025-09-11 17:08:19 +01:00
committed by GitHub
parent aecc2c9fe7
commit 85e92ce04b
7 changed files with 532 additions and 23 deletions
+12 -5
View File
@@ -10,13 +10,16 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/httpclient"
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter"
"go.opentelemetry.io/otel/trace"
)
type Service struct {
im instancemgmt.InstanceManager
tracer trace.Tracer
logger log.Logger
im instancemgmt.InstanceManager
tracer trace.Tracer
logger log.Logger
resourceHandler backend.CallResourceHandler
HTTPClient *http.Client
}
const (
@@ -26,11 +29,15 @@ const (
func ProvideService(httpClientProvider *httpclient.Provider, tracer trace.Tracer) *Service {
logger := backend.NewLoggerWith("logger", "graphite")
return &Service{
s := &Service{
im: datasource.NewInstanceManager(newInstanceSettings(httpClientProvider)),
tracer: tracer,
logger: logger,
}
s.resourceHandler = httpadapter.New(s.newResourceMux())
return s
}
type datasourceInfo struct {
@@ -85,5 +92,5 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
}
func (s *Service) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error {
return nil
return s.resourceHandler.CallResource(ctx, req, sender)
}