fix: clean up temp files in FindChartInAuthAndTLSAndPassRepoURL (#11171)

Signed-off-by: CI <ci@argoproj.com>
pull/11172/head
CI 2 years ago
parent 9377988685
commit 24fa3d910d

@ -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)
}

@ -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 {

@ -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) {

@ -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")
@ -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
@ -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.
@ -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)

Loading…
Cancel
Save