Plugins: Make it possible to support multiple plugin versions (#82116)

* first pass

* use version in more places

* add comment

* update installer

* fix wire

* fix tests

* tidy

* simplify changes

* fix in mem

* remove unused step

* fix step dupe logic for child plugins + add tests
This commit is contained in:
Will Browne
2024-02-12 12:47:49 +01:00
committed by GitHub
parent 730e1d2485
commit 788b9afda3
24 changed files with 292 additions and 131 deletions

View File

@ -17,7 +17,6 @@ import (
"github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/plugins"
"github.com/grafana/grafana/pkg/plugins/backendplugin/coreplugin"
"github.com/grafana/grafana/pkg/plugins/manager/registry"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/services/pluginsintegration/pluginstore"
"github.com/grafana/grafana/pkg/services/searchV2"
@ -100,7 +99,7 @@ func TestIntegrationPluginManager(t *testing.T) {
ctx := context.Background()
verifyCorePluginCatalogue(t, ctx, testCtx.PluginStore)
verifyBundledPlugins(t, ctx, testCtx.PluginStore)
verifyPluginStaticRoutes(t, ctx, testCtx.PluginStore, testCtx.PluginRegistry)
verifyPluginStaticRoutes(t, ctx, testCtx.PluginStore, testCtx.PluginStore)
verifyBackendProcesses(t, testCtx.PluginRegistry.Plugins(ctx))
verifyPluginQuery(t, ctx, testCtx.PluginClient)
}
@ -253,7 +252,7 @@ func verifyBundledPlugins(t *testing.T, ctx context.Context, ps *pluginstore.Ser
}
}
func verifyPluginStaticRoutes(t *testing.T, ctx context.Context, rr plugins.StaticRouteResolver, reg registry.Service) {
func verifyPluginStaticRoutes(t *testing.T, ctx context.Context, rr plugins.StaticRouteResolver, ps *pluginstore.Service) {
routes := make(map[string]*plugins.StaticRoute)
for _, route := range rr.Routes(ctx) {
routes[route.PluginID] = route
@ -261,13 +260,13 @@ func verifyPluginStaticRoutes(t *testing.T, ctx context.Context, rr plugins.Stat
require.Len(t, routes, 2)
inputPlugin, _ := reg.Plugin(ctx, "input")
inputPlugin, _ := ps.Plugin(ctx, "input")
require.NotNil(t, routes["input"])
require.Equal(t, routes["input"].Directory, inputPlugin.FS.Base())
require.Equal(t, routes["input"].Directory, inputPlugin.Base())
testAppPlugin, _ := reg.Plugin(ctx, "test-app")
testAppPlugin, _ := ps.Plugin(ctx, "test-app")
require.Contains(t, routes, "test-app")
require.Equal(t, routes["test-app"].Directory, testAppPlugin.FS.Base())
require.Equal(t, routes["test-app"].Directory, testAppPlugin.Base())
}
func verifyBackendProcesses(t *testing.T, ps []*plugins.Plugin) {