Plugins: Move alias support to plugin json (but still hardcoded) (#75129)

This commit is contained in:
Ryan McKinley
2023-09-29 08:20:37 -07:00
committed by GitHub
parent e45867c635
commit 010b2461b9
16 changed files with 90 additions and 53 deletions
@@ -29,7 +29,6 @@ func DefaultConstructFunc(signatureCalculator plugins.SignatureCalculator, asset
// DefaultDecorateFuncs are the default DecorateFuncs used for the Decorate step of the Bootstrap stage.
func DefaultDecorateFuncs(cfg *config.Cfg) []DecorateFunc {
return []DecorateFunc{
AliasDecorateFunc,
AppDefaultNavURLDecorateFunc,
AppChildDecorateFunc(cfg),
}
@@ -79,19 +78,6 @@ func (c *DefaultConstructor) Construct(ctx context.Context, src plugins.PluginSo
return res, nil
}
// AliasDecorateFunc is a DecorateFunc that sets the alias for the plugin.
func AliasDecorateFunc(_ context.Context, p *plugins.Plugin) (*plugins.Plugin, error) {
switch p.ID {
case "grafana-pyroscope-datasource": // rebranding
p.Alias = "phlare"
case "grafana-testdata-datasource":
p.Alias = "testdata"
case "debug": // panel plugin used for testing
p.Alias = "debugX"
}
return p, nil
}
// AppDefaultNavURLDecorateFunc is a DecorateFunc that sets the default nav URL for app plugins.
func AppDefaultNavURLDecorateFunc(_ context.Context, p *plugins.Plugin) (*plugins.Plugin, error) {
if p.IsApp() {
+6 -4
View File
@@ -48,8 +48,8 @@ func (i *InMemory) Add(_ context.Context, p *plugins.Plugin) error {
i.mu.Lock()
i.store[p.ID] = p
if p.Alias != "" {
i.alias[p.Alias] = p
for _, a := range p.AliasIDs {
i.alias[a] = p
}
i.mu.Unlock()
@@ -64,8 +64,10 @@ func (i *InMemory) Remove(_ context.Context, pluginID string) error {
i.mu.Lock()
delete(i.store, pluginID)
if p != nil && p.Alias != "" {
delete(i.alias, p.Alias)
if p != nil {
for _, a := range p.AliasIDs {
delete(i.alias, a)
}
}
i.mu.Unlock()
@@ -278,6 +278,7 @@ func TestAliasSupport(t *testing.T) {
pluginIdNew := "plugin-new"
pluginIdOld := "plugin-old"
pluginIdOld2 := "plugin-old2"
p, exists := i.Plugin(ctx, pluginIdNew)
require.False(t, exists)
@@ -285,9 +286,9 @@ func TestAliasSupport(t *testing.T) {
pluginNew := &plugins.Plugin{
JSONData: plugins.JSONData{
ID: pluginIdNew,
ID: pluginIdNew,
AliasIDs: []string{pluginIdOld, pluginIdOld2},
},
Alias: pluginIdOld, // TODO: move to JSONData
}
err := i.Add(ctx, pluginNew)
require.NoError(t, err)
@@ -302,6 +303,11 @@ func TestAliasSupport(t *testing.T) {
require.True(t, exists)
require.Equal(t, pluginNew, found)
// Can lookup by the other old ID
found, exists = i.Plugin(ctx, pluginIdOld2)
require.True(t, exists)
require.Equal(t, pluginNew, found)
// Register the old plugin and look it up
pluginOld := &plugins.Plugin{JSONData: plugins.JSONData{
ID: pluginIdOld,