From b7b833262638fea7bdb57d229d31019a78ddfcac Mon Sep 17 00:00:00 2001 From: Wenkai Yin Date: Wed, 31 Jul 2019 17:14:00 +0800 Subject: [PATCH] replication helm hub adapter bug fix Signed-off-by: Wenkai Yin --- src/replication/adapter/harbor/chart_registry.go | 7 +++++++ src/replication/adapter/harbor/chart_registry_test.go | 2 +- src/replication/adapter/helmhub/chart_registry.go | 10 +++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/replication/adapter/harbor/chart_registry.go b/src/replication/adapter/harbor/chart_registry.go index 81856ced3..a93cc3feb 100644 --- a/src/replication/adapter/harbor/chart_registry.go +++ b/src/replication/adapter/harbor/chart_registry.go @@ -164,6 +164,13 @@ func (a *adapter) DownloadChart(name, version string) (io.ReadCloser, error) { if err != nil { return nil, err } + if resp.StatusCode != http.StatusOK { + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return nil, fmt.Errorf("failed to download the chart %s: %d %s", req.URL.String(), resp.StatusCode, string(body)) + } return resp.Body, nil } diff --git a/src/replication/adapter/harbor/chart_registry_test.go b/src/replication/adapter/harbor/chart_registry_test.go index a2830666d..5231c0940 100644 --- a/src/replication/adapter/harbor/chart_registry_test.go +++ b/src/replication/adapter/harbor/chart_registry_test.go @@ -137,7 +137,7 @@ func TestDownloadChart(t *testing.T) { }, { Method: http.MethodGet, - Pattern: "/api/chartrepo/library/charts/harbor-1.0.tgz", + Pattern: "/chartrepo/library/charts/harbor-1.0.tgz", Handler: func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }, diff --git a/src/replication/adapter/helmhub/chart_registry.go b/src/replication/adapter/helmhub/chart_registry.go index daba32952..d59cf73ad 100644 --- a/src/replication/adapter/helmhub/chart_registry.go +++ b/src/replication/adapter/helmhub/chart_registry.go @@ -17,6 +17,7 @@ package helmhub import ( "fmt" "io" + "io/ioutil" "net/http" "strings" @@ -123,7 +124,7 @@ func (a *adapter) download(version *chartVersion) (io.ReadCloser, error) { url := strings.ToLower(version.Attributes.URLs[0]) if !(strings.HasPrefix(url, "http://") || strings.HasPrefix(url, "https://")) { - url = fmt.Sprintf("%s/charts/%s", version.Relationships.Chart.Data.Repo.URL, url) + url = fmt.Sprintf("%s/%s", version.Relationships.Chart.Data.Repo.URL, url) } req, err := http.NewRequest(http.MethodGet, url, nil) @@ -134,6 +135,13 @@ func (a *adapter) download(version *chartVersion) (io.ReadCloser, error) { if err != nil { return nil, err } + if resp.StatusCode != http.StatusOK { + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return nil, fmt.Errorf("failed to download the chart %s: %d %s", req.URL.String(), resp.StatusCode, string(body)) + } return resp.Body, nil }