mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
This pull request migrates testdata to coreplugin streaming capabilities, this is mostly a working concept of streaming plugins at the moment, the work will continue in the following pull requests.
44 lines
1.3 KiB
Go
44 lines
1.3 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),
|
|
StreamHandler: newTestStreamHandler(p.logger),
|
|
})
|
|
err := p.BackendPluginManager.Register("testdata", factory)
|
|
if err != nil {
|
|
p.logger.Error("Failed to register plugin", "error", err)
|
|
}
|
|
return nil
|
|
}
|