Plugins: Move plugin installing + uninstalling logic from CLI to plugins package (#33274)

* move guts from cli to server

* renaming + refactoring

* add pluginsDir arg

* arg fixes

* add support for repo URL override

* add funcs to interface

* use pluginID consistently

* swap args

* pass mandatory grafanaVersion field

* introduce logger interface

* create central logger for CLI

* add infra log wrapper

* re-add log initer step

* remove unused logger

* add checks for uninstalling

* improve debug blue

* make sure to close file

* fix linter issues

* remove space

* improve newline usage

* refactor packaging

* improve logger API

* fix interface func names

* close file and reformat zipslip catch

* handle G305 linter warning

* add helpful debug log
This commit is contained in:
Will Browne
2021-04-26 16:13:40 +02:00
committed by GitHub
parent d0239ac958
commit 8e6205c107
13 changed files with 874 additions and 16 deletions
+24
View File
@@ -2,6 +2,7 @@ package plugins
import (
"context"
"os"
"github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/models"
@@ -70,3 +71,26 @@ type DataRequestHandler interface {
// HandleRequest handles a data request.
HandleRequest(context.Context, *models.DataSource, DataQuery) (DataResponse, error)
}
type PluginInstaller interface {
// Install finds the plugin given the provided information
// and installs in the provided plugins directory.
Install(pluginID, version, pluginsDirectory, pluginZipURL, pluginRepoURL string) error
// Uninstall removes the specified plugin from the provided plugins directory.
Uninstall(pluginID, pluginPath string) error
DownloadFile(pluginID string, tmpFile *os.File, url string, checksum string) error
}
type PluginInstallerLogger interface {
Successf(format string, args ...interface{})
Failuref(format string, args ...interface{})
Info(args ...interface{})
Infof(format string, args ...interface{})
Debug(args ...interface{})
Debugf(format string, args ...interface{})
Warn(args ...interface{})
Warnf(format string, args ...interface{})
Error(args ...interface{})
Errorf(format string, args ...interface{})
}