Plugins: Move alias support to plugin json (but still hardcoded) (#75129)
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user