Grafana Advisor: Plugin checks (#99502)

This commit is contained in:
Andres Martinez Gotor
2025-01-27 16:39:46 +01:00
committed by GitHub
parent 50b14c533c
commit b0e74cf737
9 changed files with 391 additions and 10 deletions
@@ -0,0 +1,36 @@
package plugininstaller
import "github.com/grafana/grafana/pkg/setting"
type Preinstall interface {
IsPreinstalled(pluginID string) bool
IsPinned(pluginID string) bool
}
func ProvidePreinstall(
cfg *setting.Cfg,
) *PreinstallImpl {
plugins := make(map[string]*setting.InstallPlugin)
for _, p := range cfg.PreinstallPlugins {
plugins[p.ID] = &p
}
return &PreinstallImpl{
plugins: plugins,
}
}
type PreinstallImpl struct {
plugins map[string]*setting.InstallPlugin
}
func (c *PreinstallImpl) IsPreinstalled(pluginID string) bool {
_, ok := c.plugins[pluginID]
return ok
}
func (c *PreinstallImpl) IsPinned(pluginID string) bool {
if p, ok := c.plugins[pluginID]; ok {
return p.Version != ""
}
return false
}
@@ -0,0 +1,36 @@
package plugininstaller
import (
"testing"
"github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/assert"
)
func TestIsPreinstalled(t *testing.T) {
cfg := &setting.Cfg{
PreinstallPlugins: []setting.InstallPlugin{
{ID: "plugin1"},
{ID: "plugin2"},
},
}
preinstall := ProvidePreinstall(cfg)
assert.True(t, preinstall.IsPreinstalled("plugin1"))
assert.True(t, preinstall.IsPreinstalled("plugin2"))
assert.False(t, preinstall.IsPreinstalled("plugin3"))
}
func TestIsPinned(t *testing.T) {
cfg := &setting.Cfg{
PreinstallPlugins: []setting.InstallPlugin{
{ID: "plugin1", Version: "1.0.0"},
{ID: "plugin2"},
},
}
preinstall := ProvidePreinstall(cfg)
assert.True(t, preinstall.IsPinned("plugin1"))
assert.False(t, preinstall.IsPinned("plugin2"))
assert.False(t, preinstall.IsPinned("plugin3"))
}