Commit 9f9f4e7f by Dan Cech Committed by Torkel Ödegaard

use new plugin-specific repo route when installing or updating a single plugin (#4992)

parent 2f6b00b6
package commands package commands
import ( import (
"github.com/fatih/color"
"github.com/grafana/grafana/pkg/cmd/grafana-cli/log"
s "github.com/grafana/grafana/pkg/cmd/grafana-cli/services" s "github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
) )
...@@ -14,20 +16,17 @@ func upgradeCommand(c CommandLine) error { ...@@ -14,20 +16,17 @@ func upgradeCommand(c CommandLine) error {
return err return err
} }
remotePlugins, err2 := s.ListAllPlugins(c.GlobalString("repo")) v, err2 := s.GetPlugin(localPlugin.Id, c.GlobalString("repo"))
if err2 != nil { if err2 != nil {
return err2 return err2
} }
for _, v := range remotePlugins.Plugins {
if localPlugin.Id == v.Id {
if ShouldUpgrade(localPlugin.Info.Version, v) { if ShouldUpgrade(localPlugin.Info.Version, v) {
s.RemoveInstalledPlugin(pluginsDir, pluginName) s.RemoveInstalledPlugin(pluginsDir, pluginName)
return InstallPlugin(localPlugin.Id, "", c) return InstallPlugin(localPlugin.Id, "", c)
} }
}
}
log.Infof("%s %s is up to date \n", color.GreenString("✔"), localPlugin.Id)
return nil return nil
} }
...@@ -44,7 +44,7 @@ func ReadPlugin(pluginDir, pluginName string) (m.InstalledPlugin, error) { ...@@ -44,7 +44,7 @@ func ReadPlugin(pluginDir, pluginName string) (m.InstalledPlugin, error) {
} }
if res.Id == "" { if res.Id == "" {
return m.InstalledPlugin{}, errors.New("could not read find plugin " + pluginName) return m.InstalledPlugin{}, errors.New("could not find plugin " + pluginName + " in " + pluginDir)
} }
return res, nil return res, nil
...@@ -69,13 +69,21 @@ func RemoveInstalledPlugin(pluginPath, id string) error { ...@@ -69,13 +69,21 @@ func RemoveInstalledPlugin(pluginPath, id string) error {
} }
func GetPlugin(pluginId, repoUrl string) (m.Plugin, error) { func GetPlugin(pluginId, repoUrl string) (m.Plugin, error) {
resp, _ := ListAllPlugins(repoUrl) fullUrl := repoUrl + "/repo/" + pluginId
for _, i := range resp.Plugins { res, err := goreq.Request{Uri: fullUrl, MaxRedirects: 3}.Do()
if i.Id == pluginId { if err != nil {
return i, nil return m.Plugin{}, err
}
if res.StatusCode != 200 {
return m.Plugin{}, fmt.Errorf("Could not access %s statuscode %v", fullUrl, res.StatusCode)
} }
var resp m.Plugin
err = res.Body.FromJsonTo(&resp)
if err != nil {
return m.Plugin{}, errors.New("Could not load plugin data")
} }
return m.Plugin{}, errors.New("could not find plugin named \"" + pluginId + "\"") return resp, nil
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment