From fd28c8490f5cf51c5f2c8085af6d7602c90ce419 Mon Sep 17 00:00:00 2001 From: Will Browne Date: Thu, 4 May 2023 10:52:09 +0200 Subject: [PATCH] Plugins: Tidy up CLI code (#67723) * remove dead code and use pkg/plugins for uninstall process * fix linter * remove unnecessary cruft --- pkg/cmd/grafana-cli/commands/commands.go | 24 ++++--------- .../commands/commandstest/fake_api_client.go | 36 ------------------- .../grafana-cli/commands/install_command.go | 2 +- .../commands/listremote_command.go | 5 +-- .../commands/listversions_command.go | 5 +-- pkg/cmd/grafana-cli/commands/ls_command.go | 2 +- .../grafana-cli/commands/ls_command_test.go | 9 ++--- .../grafana-cli/commands/remove_command.go | 2 +- .../commands/upgrade_all_command.go | 4 +-- .../grafana-cli/commands/upgrade_command.go | 4 +-- pkg/cmd/grafana-cli/services/api_client.go | 6 ++-- 11 files changed, 25 insertions(+), 74 deletions(-) delete mode 100644 pkg/cmd/grafana-cli/commands/commandstest/fake_api_client.go diff --git a/pkg/cmd/grafana-cli/commands/commands.go b/pkg/cmd/grafana-cli/commands/commands.go index a59b209986b..c1459f89361 100644 --- a/pkg/cmd/grafana-cli/commands/commands.go +++ b/pkg/cmd/grafana-cli/commands/commands.go @@ -10,7 +10,6 @@ import ( "github.com/grafana/grafana/pkg/cmd/grafana-cli/commands/datamigrations" "github.com/grafana/grafana/pkg/cmd/grafana-cli/commands/secretsmigrations" "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" - "github.com/grafana/grafana/pkg/cmd/grafana-cli/services" "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/tracing" @@ -91,47 +90,38 @@ func runPluginCommand(command func(commandLine utils.CommandLine) error) func(co } } -// Command contains command state. -type Command struct { - Client utils.ApiClient -} - -var cmd Command = Command{ - Client: &services.GrafanaComClient{}, -} - var pluginCommands = []*cli.Command{ { Name: "install", Usage: "install ", - Action: runPluginCommand(cmd.installCommand), + Action: runPluginCommand(installCommand), }, { Name: "list-remote", Usage: "list remote available plugins", - Action: runPluginCommand(cmd.listRemoteCommand), + Action: runPluginCommand(listRemoteCommand), }, { Name: "list-versions", Usage: "list-versions ", - Action: runPluginCommand(cmd.listVersionsCommand), + Action: runPluginCommand(listVersionsCommand), }, { Name: "update", Usage: "update ", Aliases: []string{"upgrade"}, - Action: runPluginCommand(cmd.upgradeCommand), + Action: runPluginCommand(upgradeCommand), }, { Name: "update-all", Aliases: []string{"upgrade-all"}, Usage: "update all your installed plugins", - Action: runPluginCommand(cmd.upgradeAllCommand), + Action: runPluginCommand(upgradeAllCommand), }, { Name: "ls", Usage: "list installed plugins (excludes core plugins)", - Action: runPluginCommand(cmd.lsCommand), + Action: runPluginCommand(lsCommand), }, { Name: "uninstall", Aliases: []string{"remove"}, Usage: "uninstall ", - Action: runPluginCommand(cmd.removeCommand), + Action: runPluginCommand(removeCommand), }, } diff --git a/pkg/cmd/grafana-cli/commands/commandstest/fake_api_client.go b/pkg/cmd/grafana-cli/commands/commandstest/fake_api_client.go deleted file mode 100644 index 9bba38eb61b..00000000000 --- a/pkg/cmd/grafana-cli/commands/commandstest/fake_api_client.go +++ /dev/null @@ -1,36 +0,0 @@ -package commandstest - -import ( - "os" - - "github.com/grafana/grafana/pkg/cmd/grafana-cli/models" -) - -type FakeGrafanaComClient struct { - GetPluginFunc func(pluginId, repoUrl string) (models.Plugin, error) - DownloadFileFunc func(pluginName string, tmpFile *os.File, url string, checksum string) (err error) - ListAllPluginsFunc func(repoUrl string) (models.PluginRepo, error) -} - -func (client *FakeGrafanaComClient) GetPlugin(pluginID, repoUrl string) (models.Plugin, error) { - if client.GetPluginFunc != nil { - return client.GetPluginFunc(pluginID, repoUrl) - } - - return models.Plugin{}, nil -} - -func (client *FakeGrafanaComClient) DownloadFile(pluginName string, tmpFile *os.File, url string, checksum string) (err error) { - if client.DownloadFileFunc != nil { - return client.DownloadFileFunc(pluginName, tmpFile, url, checksum) - } - - return nil -} - -func (client *FakeGrafanaComClient) ListAllPlugins(repoURL string) (models.PluginRepo, error) { - if client.ListAllPluginsFunc != nil { - return client.ListAllPluginsFunc(repoURL) - } - return models.PluginRepo{}, nil -} diff --git a/pkg/cmd/grafana-cli/commands/install_command.go b/pkg/cmd/grafana-cli/commands/install_command.go index f799a847088..994da69c0af 100644 --- a/pkg/cmd/grafana-cli/commands/install_command.go +++ b/pkg/cmd/grafana-cli/commands/install_command.go @@ -49,7 +49,7 @@ func logRestartNotice() { logger.Info(color.GreenString("Please restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.\n\n")) } -func (cmd Command) installCommand(c utils.CommandLine) error { +func installCommand(c utils.CommandLine) error { pluginFolder := c.PluginDirectory() if err := validateInput(c, pluginFolder); err != nil { return err diff --git a/pkg/cmd/grafana-cli/commands/listremote_command.go b/pkg/cmd/grafana-cli/commands/listremote_command.go index 2ecf847d13b..79b11c939b1 100644 --- a/pkg/cmd/grafana-cli/commands/listremote_command.go +++ b/pkg/cmd/grafana-cli/commands/listremote_command.go @@ -2,13 +2,14 @@ package commands import ( "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" + "github.com/grafana/grafana/pkg/cmd/grafana-cli/services" "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" ) // listRemoteCommand prints out all plugins in the remote repo with latest version supported on current platform. // If there are no supported versions for plugin it is skipped. -func (cmd Command) listRemoteCommand(c utils.CommandLine) error { - plugin, err := cmd.Client.ListAllPlugins(c.PluginRepoURL()) +func listRemoteCommand(c utils.CommandLine) error { + plugin, err := services.ListAllPlugins(c.PluginRepoURL()) if err != nil { return err } diff --git a/pkg/cmd/grafana-cli/commands/listversions_command.go b/pkg/cmd/grafana-cli/commands/listversions_command.go index 73f567dcb3f..89ca4ffaa6f 100644 --- a/pkg/cmd/grafana-cli/commands/listversions_command.go +++ b/pkg/cmd/grafana-cli/commands/listversions_command.go @@ -4,6 +4,7 @@ import ( "errors" "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" + "github.com/grafana/grafana/pkg/cmd/grafana-cli/services" "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" ) @@ -16,14 +17,14 @@ func validateVersionInput(c utils.CommandLine) error { return nil } -func (cmd Command) listVersionsCommand(c utils.CommandLine) error { +func listVersionsCommand(c utils.CommandLine) error { if err := validateVersionInput(c); err != nil { return err } pluginToList := c.Args().First() - plugin, err := cmd.Client.GetPlugin(pluginToList, c.String("repo")) + plugin, err := services.GetPlugin(pluginToList, c.String("repo")) if err != nil { return err } diff --git a/pkg/cmd/grafana-cli/commands/ls_command.go b/pkg/cmd/grafana-cli/commands/ls_command.go index aa3b94d0214..8eb06bb2925 100644 --- a/pkg/cmd/grafana-cli/commands/ls_command.go +++ b/pkg/cmd/grafana-cli/commands/ls_command.go @@ -35,7 +35,7 @@ var validateLsCommand = func(pluginDir string) error { return nil } -func (cmd Command) lsCommand(c utils.CommandLine) error { +func lsCommand(c utils.CommandLine) error { pluginDir := c.PluginDirectory() if err := validateLsCommand(pluginDir); err != nil { return err diff --git a/pkg/cmd/grafana-cli/commands/ls_command_test.go b/pkg/cmd/grafana-cli/commands/ls_command_test.go index c2454568e2a..a22963a49a2 100644 --- a/pkg/cmd/grafana-cli/commands/ls_command_test.go +++ b/pkg/cmd/grafana-cli/commands/ls_command_test.go @@ -43,8 +43,7 @@ func TestMissingPath(t *testing.T) { c, err := commandstest.NewCliContext(tc.cliContext) require.NoError(t, err) - cmd := Command{} - err = cmd.lsCommand(c) + err = lsCommand(c) assert.Equal(t, tc.error, err) }) } @@ -66,8 +65,7 @@ func TestValidateLsCommand_override(t *testing.T) { return expected } - cmd := Command{} - err = cmd.lsCommand(c) + err = lsCommand(c) assert.Error(t, err) assert.Equal(t, expected, err, "can override validateLsCommand") }) @@ -77,8 +75,7 @@ func TestValidateLsCommand_override(t *testing.T) { c, err := commandstest.NewCliContext(map[string]string{"path": "/var/lib/grafana/plugins"}) require.NoError(t, err) - cmd := Command{} - err = cmd.lsCommand(c) + err = lsCommand(c) assert.NotEqual(t, err, expected, "validateLsCommand is reset") }) } diff --git a/pkg/cmd/grafana-cli/commands/remove_command.go b/pkg/cmd/grafana-cli/commands/remove_command.go index 2c29dfd709f..066160143b9 100644 --- a/pkg/cmd/grafana-cli/commands/remove_command.go +++ b/pkg/cmd/grafana-cli/commands/remove_command.go @@ -9,7 +9,7 @@ import ( "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" ) -func (cmd Command) removeCommand(c utils.CommandLine) error { +func removeCommand(c utils.CommandLine) error { pluginID := c.Args().First() if pluginID == "" { return errors.New("missing plugin parameter") diff --git a/pkg/cmd/grafana-cli/commands/upgrade_all_command.go b/pkg/cmd/grafana-cli/commands/upgrade_all_command.go index e3333073775..b13ddea45f7 100644 --- a/pkg/cmd/grafana-cli/commands/upgrade_all_command.go +++ b/pkg/cmd/grafana-cli/commands/upgrade_all_command.go @@ -25,12 +25,12 @@ func shouldUpgrade(installed string, remote *models.Plugin) bool { return installedVersion.LessThan(latestVersion) } -func (cmd Command) upgradeAllCommand(c utils.CommandLine) error { +func upgradeAllCommand(c utils.CommandLine) error { pluginsDir := c.PluginDirectory() localPlugins := services.GetLocalPlugins(pluginsDir) - remotePlugins, err := cmd.Client.ListAllPlugins(c.String("repo")) + remotePlugins, err := services.ListAllPlugins(c.String("repo")) if err != nil { return err } diff --git a/pkg/cmd/grafana-cli/commands/upgrade_command.go b/pkg/cmd/grafana-cli/commands/upgrade_command.go index d80a6beb908..cf7d47ec9d2 100644 --- a/pkg/cmd/grafana-cli/commands/upgrade_command.go +++ b/pkg/cmd/grafana-cli/commands/upgrade_command.go @@ -11,7 +11,7 @@ import ( "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" ) -func (cmd Command) upgradeCommand(c utils.CommandLine) error { +func upgradeCommand(c utils.CommandLine) error { ctx := context.Background() pluginsDir := c.PluginDirectory() pluginID := c.Args().First() @@ -21,7 +21,7 @@ func (cmd Command) upgradeCommand(c utils.CommandLine) error { return err } - plugin, err := cmd.Client.GetPlugin(pluginID, c.PluginRepoURL()) + plugin, err := services.GetPlugin(pluginID, c.PluginRepoURL()) if err != nil { return err } diff --git a/pkg/cmd/grafana-cli/services/api_client.go b/pkg/cmd/grafana-cli/services/api_client.go index c9f8e9a506a..99d3c9b7f93 100644 --- a/pkg/cmd/grafana-cli/services/api_client.go +++ b/pkg/cmd/grafana-cli/services/api_client.go @@ -14,9 +14,7 @@ import ( "github.com/grafana/grafana/pkg/cmd/grafana-cli/models" ) -type GrafanaComClient struct{} - -func (client *GrafanaComClient) GetPlugin(pluginId, repoUrl string) (models.Plugin, error) { +func GetPlugin(pluginId, repoUrl string) (models.Plugin, error) { logger.Debugf("getting plugin metadata from: %v pluginId: %v \n", repoUrl, pluginId) body, err := sendRequestGetBytes(HttpClient, repoUrl, "repo", pluginId) if err != nil { @@ -37,7 +35,7 @@ func (client *GrafanaComClient) GetPlugin(pluginId, repoUrl string) (models.Plug return data, nil } -func (client *GrafanaComClient) ListAllPlugins(repoUrl string) (models.PluginRepo, error) { +func ListAllPlugins(repoUrl string) (models.PluginRepo, error) { body, err := sendRequestGetBytes(HttpClient, repoUrl, "repo") if err != nil {