@@ -6,15 +6,17 @@ import (
66 "context"
77 "fmt"
88 "net/http"
9+ "strings"
910 "time"
1011
11- "github.com/castai/cluster-controller/castai"
1212 "github.com/cenkalti/backoff/v4"
1313 "helm.sh/helm/v3/pkg/chart"
1414 "helm.sh/helm/v3/pkg/chart/loader"
1515 "helm.sh/helm/v3/pkg/cli"
1616 "helm.sh/helm/v3/pkg/getter"
1717 "helm.sh/helm/v3/pkg/repo"
18+
19+ "github.com/castai/cluster-controller/castai"
1820)
1921
2022type ChartLoader interface {
@@ -32,23 +34,21 @@ type remoteChartLoader struct {
3234func (cl * remoteChartLoader ) Load (ctx context.Context , c * castai.ChartSource ) (* chart.Chart , error ) {
3335 var res * chart.Chart
3436 err := backoff .Retry (func () error {
35- index , err := cl .downloadHelmIndex (c .RepoURL )
36- if err != nil {
37- return err
38- }
39-
40- urls , err := cl .chartURLs (index , c .Name , c .Version )
41- if err != nil {
42- return err
43- }
44-
45- var archiveResp * http.Response
46- for _ , u := range urls {
47- archiveResp , err = cl .fetchArchive (ctx , u )
48- if err == nil {
49- break
37+ var archiveURL string
38+ if strings .HasSuffix (c .RepoURL , ".tgz" ) {
39+ archiveURL = c .RepoURL
40+ } else {
41+ index , err := cl .downloadHelmIndex (c .RepoURL )
42+ if err != nil {
43+ return err
44+ }
45+ archiveURL , err = cl .chartURL (index , c .Name , c .Version )
46+ if err != nil {
47+ return err
5048 }
5149 }
50+
51+ archiveResp , err := cl .fetchArchive (ctx , archiveURL )
5252 if err != nil {
5353 return err
5454 }
@@ -109,12 +109,12 @@ func (cl *remoteChartLoader) downloadHelmIndex(repoURL string) (*repo.IndexFile,
109109 return index , nil
110110}
111111
112- func (cl * remoteChartLoader ) chartURLs (index * repo.IndexFile , name , version string ) ([] string , error ) {
112+ func (cl * remoteChartLoader ) chartURL (index * repo.IndexFile , name , version string ) (string , error ) {
113113 for _ , c := range index .Entries [name ] {
114114 if c .Version == version && len (c .URLs ) > 0 {
115- return c .URLs , nil
115+ return c .URLs [ 0 ] , nil
116116 }
117117 }
118118
119- return nil , fmt .Errorf ("finding chart %q version %q in helm repo index" , name , version )
119+ return "" , fmt .Errorf ("finding chart %q version %q in helm repo index" , name , version )
120120}
0 commit comments