mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 18:44:54 +08:00
Plugins: Use grafana-plugin-sdk-go v0.5.0 (#21116)
* fix dispense * plugin loading refactor Moves common functionality of registering, starting, stopping and restarting backend plugins to backendplugin package. * simplify plugin descriptors * target sdk v0.5.0 Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
This commit is contained in:

committed by
Kyle Brandt

parent
5321e7536f
commit
baba1634b8
@ -7,9 +7,8 @@ import (
|
||||
|
||||
datasourceV1 "github.com/grafana/grafana-plugin-model/go/datasource"
|
||||
rendererV1 "github.com/grafana/grafana-plugin-model/go/renderer"
|
||||
backend "github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
sdk "github.com/grafana/grafana-plugin-sdk-go/common"
|
||||
datasourceV2 "github.com/grafana/grafana-plugin-sdk-go/datasource"
|
||||
transformV2 "github.com/grafana/grafana-plugin-sdk-go/transform"
|
||||
"github.com/hashicorp/go-plugin"
|
||||
)
|
||||
|
||||
@ -32,9 +31,7 @@ var handshake = plugin.HandshakeConfig{
|
||||
MagicCookieValue: sdk.MagicCookieValue,
|
||||
}
|
||||
|
||||
// NewClientConfig returns a configuration object that can be used to instantiate
|
||||
// a client for the plugin described by the given metadata.
|
||||
func NewClientConfig(executablePath string, logger log.Logger, versionedPlugins map[int]plugin.PluginSet) *plugin.ClientConfig {
|
||||
func newClientConfig(executablePath string, logger log.Logger, versionedPlugins map[int]plugin.PluginSet) *plugin.ClientConfig {
|
||||
return &plugin.ClientConfig{
|
||||
Cmd: exec.Command(executablePath),
|
||||
HandshakeConfig: handshake,
|
||||
@ -44,38 +41,44 @@ func NewClientConfig(executablePath string, logger log.Logger, versionedPlugins
|
||||
}
|
||||
}
|
||||
|
||||
// NewDatasourceClient returns a datasource plugin client.
|
||||
func NewDatasourceClient(pluginID, executablePath string, logger log.Logger) *plugin.Client {
|
||||
versionedPlugins := map[int]plugin.PluginSet{
|
||||
1: {
|
||||
pluginID: &datasourceV1.DatasourcePluginImpl{},
|
||||
},
|
||||
2: {
|
||||
pluginID: &datasourceV2.DatasourcePluginImpl{},
|
||||
},
|
||||
}
|
||||
|
||||
return plugin.NewClient(NewClientConfig(executablePath, logger, versionedPlugins))
|
||||
// PluginDescriptor descriptor used for registering backend plugins.
|
||||
type PluginDescriptor struct {
|
||||
pluginID string
|
||||
executablePath string
|
||||
managed bool
|
||||
versionedPlugins map[int]plugin.PluginSet
|
||||
}
|
||||
|
||||
// NewRendererClient returns a renderer plugin client.
|
||||
func NewRendererClient(pluginID, executablePath string, logger log.Logger) *plugin.Client {
|
||||
versionedPlugins := map[int]plugin.PluginSet{
|
||||
1: {
|
||||
pluginID: &rendererV1.RendererPluginImpl{},
|
||||
// NewBackendPluginDescriptor creates a new backend plugin descriptor
|
||||
// used for registering a backend datasource plugin.
|
||||
func NewBackendPluginDescriptor(pluginID, executablePath string) PluginDescriptor {
|
||||
return PluginDescriptor{
|
||||
pluginID: pluginID,
|
||||
executablePath: executablePath,
|
||||
managed: true,
|
||||
versionedPlugins: map[int]plugin.PluginSet{
|
||||
DefaultProtocolVersion: {
|
||||
pluginID: &datasourceV1.DatasourcePluginImpl{},
|
||||
},
|
||||
sdk.ProtocolVersion: {
|
||||
"backend": &backend.CoreGRPCPlugin{},
|
||||
"transform": &backend.TransformGRPCPlugin{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return plugin.NewClient(NewClientConfig(executablePath, logger, versionedPlugins))
|
||||
}
|
||||
|
||||
// NewTransformClient returns a transform plugin client.
|
||||
func NewTransformClient(pluginID, executablePath string, logger log.Logger) *plugin.Client {
|
||||
versionedPlugins := map[int]plugin.PluginSet{
|
||||
2: {
|
||||
pluginID: &transformV2.TransformPluginImpl{},
|
||||
// NewRendererPluginDescriptor creates a new renderer plugin descriptor
|
||||
// used for registering a backend renderer plugin.
|
||||
func NewRendererPluginDescriptor(pluginID, executablePath string) PluginDescriptor {
|
||||
return PluginDescriptor{
|
||||
pluginID: pluginID,
|
||||
executablePath: executablePath,
|
||||
managed: false,
|
||||
versionedPlugins: map[int]plugin.PluginSet{
|
||||
DefaultProtocolVersion: {
|
||||
pluginID: &rendererV1.RendererPluginImpl{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return plugin.NewClient(NewClientConfig(executablePath, logger, versionedPlugins))
|
||||
}
|
||||
|
Reference in New Issue
Block a user