From f12bf8c09a1e76cc474d96fcea9de181c6026d52 Mon Sep 17 00:00:00 2001 From: Michael Ploujnikov Date: Mon, 23 Nov 2015 18:23:41 -0500 Subject: [PATCH 1/3] Rename LatestGithubReleases -> FetchLatestReleases --- lib/upgrade/upgrade_supported.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/upgrade/upgrade_supported.go b/lib/upgrade/upgrade_supported.go index f4931486..35ff2f91 100644 --- a/lib/upgrade/upgrade_supported.go +++ b/lib/upgrade/upgrade_supported.go @@ -47,9 +47,9 @@ var insecureHTTP = &http.Client{ }, } -// LatestGithubReleases returns the latest releases, including prereleases or +// FetchLatestReleases returns the latest releases, including prereleases or // not depending on the argument -func LatestGithubReleases(releasesURL, version string) ([]Release, error) { +func FetchLatestReleases(releasesURL, version string) ([]Release, error) { resp, err := insecureHTTP.Get(releasesURL) if err != nil { return nil, err @@ -78,7 +78,7 @@ func (s SortByRelease) Less(i, j int) bool { } func LatestRelease(releasesURL, version string) (Release, error) { - rels, _ := LatestGithubReleases(releasesURL, version) + rels, _ := FetchLatestReleases(releasesURL, version) return SelectLatestRelease(version, rels) } From bd4a14519c453b39333c3218cfdca16eaaa0a450 Mon Sep 17 00:00:00 2001 From: Michael Ploujnikov Date: Mon, 23 Nov 2015 18:41:50 -0500 Subject: [PATCH 2/3] FetchLatestReleases: just log the error here Since the return value is being ignored by the caller. --- lib/upgrade/upgrade_supported.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/upgrade/upgrade_supported.go b/lib/upgrade/upgrade_supported.go index 35ff2f91..a8c640ea 100644 --- a/lib/upgrade/upgrade_supported.go +++ b/lib/upgrade/upgrade_supported.go @@ -49,20 +49,22 @@ var insecureHTTP = &http.Client{ // FetchLatestReleases returns the latest releases, including prereleases or // not depending on the argument -func FetchLatestReleases(releasesURL, version string) ([]Release, error) { +func FetchLatestReleases(releasesURL, version string) ([]Release) { resp, err := insecureHTTP.Get(releasesURL) if err != nil { - return nil, err + l.Infoln("Couldn't fetch release information:", err) + return nil } if resp.StatusCode > 299 { - return nil, fmt.Errorf("API call returned HTTP error: %s", resp.Status) + l.Infoln("API call returned HTTP error: %s", resp.Status) + return nil } var rels []Release json.NewDecoder(resp.Body).Decode(&rels) resp.Body.Close() - return rels, nil + return rels } type SortByRelease []Release @@ -78,7 +80,7 @@ func (s SortByRelease) Less(i, j int) bool { } func LatestRelease(releasesURL, version string) (Release, error) { - rels, _ := FetchLatestReleases(releasesURL, version) + rels := FetchLatestReleases(releasesURL, version) return SelectLatestRelease(version, rels) } From 9edf8233f7d1fd6f2e1128cbba8668815fe90b95 Mon Sep 17 00:00:00 2001 From: Michael Ploujnikov Date: Mon, 23 Nov 2015 19:37:42 -0500 Subject: [PATCH 3/3] Improve upgrade error messages --- lib/upgrade/upgrade_common.go | 3 ++- lib/upgrade/upgrade_supported.go | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/upgrade/upgrade_common.go b/lib/upgrade/upgrade_common.go index 99b8f03a..b224d1b6 100644 --- a/lib/upgrade/upgrade_common.go +++ b/lib/upgrade/upgrade_common.go @@ -30,7 +30,8 @@ type Asset struct { var ( ErrVersionUpToDate = errors.New("current version is up to date") - ErrVersionUnknown = errors.New("couldn't fetch release information") + ErrNoReleaseDownload = errors.New("couldn't find a release to download") + ErrNoVersionToSelect = errors.New("no version to select") ErrUpgradeUnsupported = errors.New("upgrade unsupported") ErrUpgradeInProgress = errors.New("upgrade already in progress") upgradeUnlocked = make(chan bool, 1) diff --git a/lib/upgrade/upgrade_supported.go b/lib/upgrade/upgrade_supported.go index a8c640ea..568d0994 100644 --- a/lib/upgrade/upgrade_supported.go +++ b/lib/upgrade/upgrade_supported.go @@ -49,7 +49,7 @@ var insecureHTTP = &http.Client{ // FetchLatestReleases returns the latest releases, including prereleases or // not depending on the argument -func FetchLatestReleases(releasesURL, version string) ([]Release) { +func FetchLatestReleases(releasesURL, version string) []Release { resp, err := insecureHTTP.Get(releasesURL) if err != nil { l.Infoln("Couldn't fetch release information:", err) @@ -86,7 +86,7 @@ func LatestRelease(releasesURL, version string) (Release, error) { func SelectLatestRelease(version string, rels []Release) (Release, error) { if len(rels) == 0 { - return Release{}, ErrVersionUnknown + return Release{}, ErrNoVersionToSelect } sort.Sort(SortByRelease(rels)) @@ -108,7 +108,7 @@ func SelectLatestRelease(version string, rels []Release) (Release, error) { } } } - return Release{}, ErrVersionUnknown + return Release{}, ErrNoReleaseDownload } // Upgrade to the given release, saving the previous binary with a ".old" extension. @@ -124,7 +124,7 @@ func upgradeTo(binary string, rel Release) error { } } - return ErrVersionUnknown + return ErrNoReleaseDownload } // Upgrade to the given release, saving the previous binary with a ".old" extension.