mirror of https://github.com/helm/helm.git
Error when failed repo update.
In Helm v3 we did not change exit codes for existing commands to maintain compat. A flag was introduced so a failure would result in a non-0 exit code. A note was left to make this the default in Helm v4. That's what this change does. Closes #10016 Signed-off-by: Matt Farina <matt.farina@suse.com>
This commit is contained in:
parent
7000db1ec0
commit
e4e602e13c
|
|
@ -42,11 +42,10 @@ To update all the repositories, use 'helm repo update'.
|
|||
var errNoRepositories = errors.New("no repositories found. You must add one before updating")
|
||||
|
||||
type repoUpdateOptions struct {
|
||||
update func([]*repo.ChartRepository, io.Writer, bool) error
|
||||
repoFile string
|
||||
repoCache string
|
||||
names []string
|
||||
failOnRepoUpdateFail bool
|
||||
update func([]*repo.ChartRepository, io.Writer) error
|
||||
repoFile string
|
||||
repoCache string
|
||||
names []string
|
||||
}
|
||||
|
||||
func newRepoUpdateCmd(out io.Writer) *cobra.Command {
|
||||
|
|
@ -69,12 +68,6 @@ func newRepoUpdateCmd(out io.Writer) *cobra.Command {
|
|||
},
|
||||
}
|
||||
|
||||
f := cmd.Flags()
|
||||
|
||||
// Adding this flag for Helm 3 as stop gap functionality for https://github.com/helm/helm/issues/10016.
|
||||
// This should be deprecated in Helm 4 by update to the behaviour of `helm repo update` command.
|
||||
f.BoolVar(&o.failOnRepoUpdateFail, "fail-on-repo-update-fail", false, "update fails if any of the repository updates fail")
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
|
|
@ -112,10 +105,10 @@ func (o *repoUpdateOptions) run(out io.Writer) error {
|
|||
}
|
||||
}
|
||||
|
||||
return o.update(repos, out, o.failOnRepoUpdateFail)
|
||||
return o.update(repos, out)
|
||||
}
|
||||
|
||||
func updateCharts(repos []*repo.ChartRepository, out io.Writer, failOnRepoUpdateFail bool) error {
|
||||
func updateCharts(repos []*repo.ChartRepository, out io.Writer) error {
|
||||
fmt.Fprintln(out, "Hang tight while we grab the latest from your chart repositories...")
|
||||
var wg sync.WaitGroup
|
||||
var repoFailList []string
|
||||
|
|
@ -133,7 +126,7 @@ func updateCharts(repos []*repo.ChartRepository, out io.Writer, failOnRepoUpdate
|
|||
}
|
||||
wg.Wait()
|
||||
|
||||
if len(repoFailList) > 0 && failOnRepoUpdateFail {
|
||||
if len(repoFailList) > 0 {
|
||||
return fmt.Errorf("Failed to update the following repositories: %s",
|
||||
repoFailList)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ func TestUpdateCmd(t *testing.T) {
|
|||
var out bytes.Buffer
|
||||
// Instead of using the HTTP updater, we provide our own for this test.
|
||||
// The TestUpdateCharts test verifies the HTTP behavior independently.
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer, _ bool) error {
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer) error {
|
||||
for _, re := range repos {
|
||||
fmt.Fprintln(out, re.Config.Name)
|
||||
}
|
||||
|
|
@ -59,7 +59,7 @@ func TestUpdateCmdMultiple(t *testing.T) {
|
|||
var out bytes.Buffer
|
||||
// Instead of using the HTTP updater, we provide our own for this test.
|
||||
// The TestUpdateCharts test verifies the HTTP behavior independently.
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer, _ bool) error {
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer) error {
|
||||
for _, re := range repos {
|
||||
fmt.Fprintln(out, re.Config.Name)
|
||||
}
|
||||
|
|
@ -85,7 +85,7 @@ func TestUpdateCmdInvalid(t *testing.T) {
|
|||
var out bytes.Buffer
|
||||
// Instead of using the HTTP updater, we provide our own for this test.
|
||||
// The TestUpdateCharts test verifies the HTTP behavior independently.
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer, _ bool) error {
|
||||
updater := func(repos []*repo.ChartRepository, out io.Writer) error {
|
||||
for _, re := range repos {
|
||||
fmt.Fprintln(out, re.Config.Name)
|
||||
}
|
||||
|
|
@ -145,7 +145,7 @@ func TestUpdateCharts(t *testing.T) {
|
|||
}
|
||||
|
||||
b := bytes.NewBuffer(nil)
|
||||
updateCharts([]*repo.ChartRepository{r}, b, false)
|
||||
updateCharts([]*repo.ChartRepository{r}, b)
|
||||
|
||||
got := b.String()
|
||||
if strings.Contains(got, "Unable to get an update") {
|
||||
|
|
@ -161,39 +161,6 @@ func TestRepoUpdateFileCompletion(t *testing.T) {
|
|||
checkFileCompletion(t, "repo update repo1", false)
|
||||
}
|
||||
|
||||
func TestUpdateChartsFail(t *testing.T) {
|
||||
defer resetEnv()()
|
||||
ensure.HelmHome(t)
|
||||
|
||||
ts := repotest.NewTempServer(
|
||||
t,
|
||||
repotest.WithChartSourceGlob("testdata/testserver/*.*"),
|
||||
)
|
||||
defer ts.Stop()
|
||||
|
||||
var invalidURL = ts.URL() + "55"
|
||||
r, err := repo.NewChartRepository(&repo.Entry{
|
||||
Name: "charts",
|
||||
URL: invalidURL,
|
||||
}, getter.All(settings))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
b := bytes.NewBuffer(nil)
|
||||
if err := updateCharts([]*repo.ChartRepository{r}, b, false); err != nil {
|
||||
t.Error("Repo update should not return error if update of repository fails")
|
||||
}
|
||||
|
||||
got := b.String()
|
||||
if !strings.Contains(got, "Unable to get an update") {
|
||||
t.Errorf("Repo should have failed update but instead got: %q", got)
|
||||
}
|
||||
if !strings.Contains(got, "Update Complete.") {
|
||||
t.Error("Update was not successful")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateChartsFailWithError(t *testing.T) {
|
||||
defer resetEnv()()
|
||||
ensure.HelmHome(t)
|
||||
|
|
@ -214,7 +181,7 @@ func TestUpdateChartsFailWithError(t *testing.T) {
|
|||
}
|
||||
|
||||
b := bytes.NewBuffer(nil)
|
||||
err = updateCharts([]*repo.ChartRepository{r}, b, true)
|
||||
err = updateCharts([]*repo.ChartRepository{r}, b)
|
||||
if err == nil {
|
||||
t.Error("Repo update should return error because update of repository fails and 'fail-on-repo-update-fail' flag set")
|
||||
return
|
||||
|
|
|
|||
Loading…
Reference in New Issue