Implement UpdateDependencies function

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
pull/9399/head
Oliver Bähler 5 years ago
parent f3ba6a7339
commit 419771c8de
No known key found for this signature in database
GPG Key ID: 7AE0B2618ECDC1B6

@ -31,7 +31,6 @@ import (
"helm.sh/helm/v3/pkg/chart/loader"
"helm.sh/helm/v3/pkg/cli/output"
"helm.sh/helm/v3/pkg/cli/values"
"helm.sh/helm/v3/pkg/downloader"
"helm.sh/helm/v3/pkg/getter"
"helm.sh/helm/v3/pkg/release"
)
@ -215,23 +214,9 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options
// https://github.com/helm/helm/issues/2209
if err := action.CheckDependencies(chartRequested, req); err != nil {
if client.DependencyUpdate {
man := &downloader.Manager{
Out: out,
ChartPath: cp,
Keyring: client.ChartPathOptions.Keyring,
SkipUpdate: false,
Getters: p,
RepositoryConfig: settings.RepositoryConfig,
RepositoryCache: settings.RepositoryCache,
Debug: settings.Debug,
}
if err := man.Update(); err != nil {
if chartRequested, err = action.UpdateDependencies(cp, client.ChartPathOptions.Keyring, settings, out, p); err != nil {
return nil, err
}
// Reload the chart with the updated Chart.lock file.
if chartRequested, err = loader.Load(cp); err != nil {
return nil, errors.Wrap(err, "failed reloading chart after repo update")
}
} else {
return nil, err
}

@ -0,0 +1,6 @@
dependencies:
- name: subchart-with-notes
repository: ""
version: 0.0.1
digest: sha256:eb038c91a8a689391fdbedd7a1016b2512bc3daee2a11afb7f359ba1341f03c6
generated: "2021-02-25T14:22:08.359847407+01:00"

@ -30,7 +30,6 @@ import (
"helm.sh/helm/v3/pkg/chart/loader"
"helm.sh/helm/v3/pkg/cli/output"
"helm.sh/helm/v3/pkg/cli/values"
"helm.sh/helm/v3/pkg/downloader"
"helm.sh/helm/v3/pkg/getter"
"helm.sh/helm/v3/pkg/storage/driver"
)
@ -148,28 +147,11 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
// Only check dependencies if there are any
if req := ch.Metadata.Dependencies; req != nil {
// Update all dependencies if DependencyUpdate is true
if client.DependencyUpdate {
man := &downloader.Manager{
Out: out,
ChartPath: chartPath,
Keyring: client.ChartPathOptions.Keyring,
SkipUpdate: false,
Getters: p,
RepositoryConfig: settings.RepositoryConfig,
RepositoryCache: settings.RepositoryCache,
Debug: settings.Debug,
}
// reload chart dependencies
if err := man.Update(); err != nil {
// Update all dependencies if DependencyUpdate is true
if ch, err = action.UpdateDependencies(chartPath, client.ChartPathOptions.Keyring, settings, out, p); err != nil {
return err
}
// Reload the chart with the updated Chart.lock file.
if ch, err = loader.Load(chartPath); err != nil {
return errors.Wrap(err, "failed reloading chart after repo update")
}
}
// If CheckDependencies returns an error, we have unfulfilled dependencies.

@ -25,9 +25,13 @@ import (
"github.com/Masterminds/semver/v3"
"github.com/gosuri/uitable"
"github.com/pkg/errors"
"helm.sh/helm/v3/pkg/chart"
"helm.sh/helm/v3/pkg/chart/loader"
"helm.sh/helm/v3/pkg/cli"
"helm.sh/helm/v3/pkg/downloader"
"helm.sh/helm/v3/pkg/getter"
)
// Dependency is the action for building a given chart's dependency tree.
@ -225,3 +229,28 @@ func (d *Dependency) printMissing(chartpath string, out io.Writer, reqs []*chart
}
}
}
// UpdateDependencies update dependency charts.
func UpdateDependencies(chartPath string, keyRing string, settings *cli.EnvSettings, out io.Writer, p getter.Providers) (*chart.Chart, error) {
// Update all dependencies if DependencyUpdate is true
man := &downloader.Manager{
Out: out,
ChartPath: chartPath,
Keyring: keyRing,
SkipUpdate: false,
Getters: p,
RepositoryConfig: settings.RepositoryConfig,
RepositoryCache: settings.RepositoryCache,
Debug: settings.Debug,
}
// Reload chart dependencies
if err := man.Update(); err != nil {
return nil, err
}
// Reload the chart with the updated Chart.lock file.
ch, err := loader.Load(chartPath)
if err != nil {
return nil, errors.Wrap(err, "failed reloading chart after repo update")
}
return ch, nil
}

Loading…
Cancel
Save