Skip to content

Commit

Permalink
fix: clean up temp files in FindChartInAuthAndTLSAndPassRepoURL (#11171)
Browse files Browse the repository at this point in the history
Signed-off-by: CI <ci@argoproj.com>
(cherry picked from commit 24fa3d9)
  • Loading branch information
CI authored and mattfarina committed Oct 12, 2022
1 parent 9140924 commit f6830f7
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 10 deletions.
2 changes: 1 addition & 1 deletion cmd/helm/repo_add.go
Expand Up @@ -207,7 +207,7 @@ func (o *repoAddOptions) run(out io.Writer) error {
if o.repoCache != "" {
r.CachePath = o.repoCache
}
if _, err := r.DownloadIndexFile(); err != nil {
if _, _, err := r.DownloadIndexFile(); err != nil {
return errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", o.url)
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/helm/repo_update.go
Expand Up @@ -122,7 +122,7 @@ func updateCharts(repos []*repo.ChartRepository, out io.Writer, failOnRepoUpdate
wg.Add(1)
go func(re *repo.ChartRepository) {
defer wg.Done()
if _, err := re.DownloadIndexFile(); err != nil {
if _, _, err := re.DownloadIndexFile(); err != nil {
fmt.Fprintf(out, "...Unable to get an update from the %q chart repository (%s):\n\t%s\n", re.Config.Name, re.Config.URL, err)
repoFailList = append(repoFailList, re.Config.URL)
} else {
Expand Down
2 changes: 1 addition & 1 deletion pkg/downloader/manager.go
Expand Up @@ -670,7 +670,7 @@ func (m *Manager) parallelRepoUpdate(repos []*repo.Entry) error {
}
wg.Add(1)
go func(r *repo.ChartRepository) {
if _, err := r.DownloadIndexFile(); err != nil {
if _, _, err := r.DownloadIndexFile(); err != nil {
// For those dependencies that are not known to helm and using a
// generated key name we display the repo url.
if strings.HasPrefix(r.Config.Name, managerKeyPrefix) {
Expand Down
17 changes: 10 additions & 7 deletions pkg/repo/chartrepo.go
Expand Up @@ -115,10 +115,10 @@ func (r *ChartRepository) Load() error {
}

// DownloadIndexFile fetches the index from a repository.
func (r *ChartRepository) DownloadIndexFile() (string, error) {
func (r *ChartRepository) DownloadIndexFile() (string, string, error) {
parsedURL, err := url.Parse(r.Config.URL)
if err != nil {
return "", err
return "", "", err
}
parsedURL.RawPath = path.Join(parsedURL.RawPath, "index.yaml")
parsedURL.Path = path.Join(parsedURL.Path, "index.yaml")
Expand All @@ -133,17 +133,17 @@ func (r *ChartRepository) DownloadIndexFile() (string, error) {
getter.WithPassCredentialsAll(r.Config.PassCredentialsAll),
)
if err != nil {
return "", err
return "", "", err
}

index, err := ioutil.ReadAll(resp)
if err != nil {
return "", err
return "", "", err
}

indexFile, err := loadIndex(index, r.Config.URL)
if err != nil {
return "", err
return "", "", err
}

// Create the chart list file in the cache directory
Expand All @@ -158,7 +158,7 @@ func (r *ChartRepository) DownloadIndexFile() (string, error) {
// Create the index file in the cache directory
fname := filepath.Join(r.CachePath, helmpath.CacheIndexFile(r.Config.Name))
os.MkdirAll(filepath.Dir(fname), 0755)
return fname, ioutil.WriteFile(fname, index, 0644)
return fname, chartsFile, ioutil.WriteFile(fname, index, 0644)
}

// Index generates an index for the chart repository and writes an index.yaml file.
Expand Down Expand Up @@ -249,10 +249,13 @@ func FindChartInAuthAndTLSAndPassRepoURL(repoURL, username, password, chartName,
if err != nil {
return "", err
}
idx, err := r.DownloadIndexFile()
idx, chart, err := r.DownloadIndexFile()
if err != nil {
return "", errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", repoURL)
}
// Clean up temp files.
defer os.RemoveAll(idx)
defer os.RemoveAll(chart)

// Read the index file for the repository to get chart information and return chart URL
repoIndex, err := LoadIndexFile(idx)
Expand Down

0 comments on commit f6830f7

Please sign in to comment.