mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugin: Accept backend plugin process command args (#76037)
accept args
This commit is contained in:
parent
68c25080e6
commit
8a33a6f958
@ -27,11 +27,11 @@ var handshake = goplugin.HandshakeConfig{
|
|||||||
MagicCookieValue: grpcplugin.MagicCookieValue,
|
MagicCookieValue: grpcplugin.MagicCookieValue,
|
||||||
}
|
}
|
||||||
|
|
||||||
func newClientConfig(executablePath string, env []string, logger log.Logger,
|
func newClientConfig(executablePath string, args []string, env []string, logger log.Logger,
|
||||||
versionedPlugins map[int]goplugin.PluginSet) *goplugin.ClientConfig {
|
versionedPlugins map[int]goplugin.PluginSet) *goplugin.ClientConfig {
|
||||||
// We can ignore gosec G201 here, since the dynamic part of executablePath comes from the plugin definition
|
// We can ignore gosec G201 here, since the dynamic part of executablePath comes from the plugin definition
|
||||||
// nolint:gosec
|
// nolint:gosec
|
||||||
cmd := exec.Command(executablePath)
|
cmd := exec.Command(executablePath, args...)
|
||||||
cmd.Env = env
|
cmd.Env = env
|
||||||
|
|
||||||
return &goplugin.ClientConfig{
|
return &goplugin.ClientConfig{
|
||||||
@ -63,6 +63,7 @@ type StartSecretsManagerFunc func(pluginID string, secretsmanager secretsmanager
|
|||||||
type PluginDescriptor struct {
|
type PluginDescriptor struct {
|
||||||
pluginID string
|
pluginID string
|
||||||
executablePath string
|
executablePath string
|
||||||
|
executableArgs []string
|
||||||
managed bool
|
managed bool
|
||||||
versionedPlugins map[int]goplugin.PluginSet
|
versionedPlugins map[int]goplugin.PluginSet
|
||||||
startRendererFn StartRendererFunc
|
startRendererFn StartRendererFunc
|
||||||
@ -82,20 +83,21 @@ func getV2PluginSet() goplugin.PluginSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewBackendPlugin creates a new backend plugin factory used for registering a backend plugin.
|
// NewBackendPlugin creates a new backend plugin factory used for registering a backend plugin.
|
||||||
func NewBackendPlugin(pluginID, executablePath string) backendplugin.PluginFactoryFunc {
|
func NewBackendPlugin(pluginID, executablePath string, executableArgs ...string) backendplugin.PluginFactoryFunc {
|
||||||
return newBackendPlugin(pluginID, executablePath, true)
|
return newBackendPlugin(pluginID, executablePath, true, executableArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewUnmanagedBackendPlugin creates a new backend plugin factory used for registering an unmanaged backend plugin.
|
// NewUnmanagedBackendPlugin creates a new backend plugin factory used for registering an unmanaged backend plugin.
|
||||||
func NewUnmanagedBackendPlugin(pluginID, executablePath string) backendplugin.PluginFactoryFunc {
|
func NewUnmanagedBackendPlugin(pluginID, executablePath string, executableArgs ...string) backendplugin.PluginFactoryFunc {
|
||||||
return newBackendPlugin(pluginID, executablePath, false)
|
return newBackendPlugin(pluginID, executablePath, false, executableArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBackendPlugin creates a new backend plugin factory used for registering a backend plugin.
|
// NewBackendPlugin creates a new backend plugin factory used for registering a backend plugin.
|
||||||
func newBackendPlugin(pluginID, executablePath string, managed bool) backendplugin.PluginFactoryFunc {
|
func newBackendPlugin(pluginID, executablePath string, managed bool, executableArgs ...string) backendplugin.PluginFactoryFunc {
|
||||||
return newPlugin(PluginDescriptor{
|
return newPlugin(PluginDescriptor{
|
||||||
pluginID: pluginID,
|
pluginID: pluginID,
|
||||||
executablePath: executablePath,
|
executablePath: executablePath,
|
||||||
|
executableArgs: executableArgs,
|
||||||
managed: managed,
|
managed: managed,
|
||||||
versionedPlugins: map[int]goplugin.PluginSet{
|
versionedPlugins: map[int]goplugin.PluginSet{
|
||||||
grpcplugin.ProtocolVersion: getV2PluginSet(),
|
grpcplugin.ProtocolVersion: getV2PluginSet(),
|
||||||
@ -116,7 +118,7 @@ func NewRendererPlugin(pluginID, executablePath string, startFn StartRendererFun
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSecetsManagerPlugin creates a new secrets manager plugin factory used for registering a backend secrets manager plugin.
|
// NewSecretsManagerPlugin creates a new secrets manager plugin factory used for registering a backend secrets manager plugin.
|
||||||
func NewSecretsManagerPlugin(pluginID, executablePath string, startFn StartSecretsManagerFunc) backendplugin.PluginFactoryFunc {
|
func NewSecretsManagerPlugin(pluginID, executablePath string, startFn StartSecretsManagerFunc) backendplugin.PluginFactoryFunc {
|
||||||
return newPlugin(PluginDescriptor{
|
return newPlugin(PluginDescriptor{
|
||||||
pluginID: pluginID,
|
pluginID: pluginID,
|
||||||
|
@ -39,7 +39,7 @@ func newPlugin(descriptor PluginDescriptor) backendplugin.PluginFactoryFunc {
|
|||||||
descriptor: descriptor,
|
descriptor: descriptor,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
clientFactory: func() *plugin.Client {
|
clientFactory: func() *plugin.Client {
|
||||||
return plugin.NewClient(newClientConfig(descriptor.executablePath, env(), logger, descriptor.versionedPlugins))
|
return plugin.NewClient(newClientConfig(descriptor.executablePath, descriptor.executableArgs, env(), logger, descriptor.versionedPlugins))
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user