mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Converts the core testdata data source to use the SDK contracts and by that implementing a backend plugin in core Grafana in similar manner as an external one. Co-authored-by: Will Browne <will.browne@grafana.com> Co-authored-by: Marcus Efraimsson <marefr@users.noreply.github.com> Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package testdatasource
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter"
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
|
"github.com/grafana/grafana/pkg/plugins/backendplugin"
|
|
"github.com/grafana/grafana/pkg/plugins/backendplugin/coreplugin"
|
|
"github.com/grafana/grafana/pkg/registry"
|
|
)
|
|
|
|
func init() {
|
|
registry.RegisterService(&testDataPlugin{})
|
|
}
|
|
|
|
type testDataPlugin struct {
|
|
BackendPluginManager backendplugin.Manager `inject:""`
|
|
logger log.Logger
|
|
scenarios map[string]*Scenario
|
|
queryMux *datasource.QueryTypeMux
|
|
}
|
|
|
|
func (p *testDataPlugin) Init() error {
|
|
p.logger = log.New("tsdb.testdata")
|
|
p.scenarios = map[string]*Scenario{}
|
|
p.queryMux = datasource.NewQueryTypeMux()
|
|
p.registerScenarios()
|
|
resourceMux := http.NewServeMux()
|
|
p.registerRoutes(resourceMux)
|
|
factory := coreplugin.New(backend.ServeOpts{
|
|
QueryDataHandler: p.queryMux,
|
|
CallResourceHandler: httpadapter.New(resourceMux),
|
|
})
|
|
err := p.BackendPluginManager.Register("testdata", factory)
|
|
if err != nil {
|
|
p.logger.Error("Failed to register plugin", "error", err)
|
|
}
|
|
return nil
|
|
}
|