Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions cmd/hauler/cli/store/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,21 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags.
}
}

values, err := commonutil.ToRenderValues(c, userValues, common.ReleaseOptions{Namespace: "hauler"}, caps)
// Reload a fresh chart for rendering so ProcessDependencies can safely
// rename aliased deps / drop disabled ones without mutating the chart
// used later by --add-dependencies.
renderChart, err := loader.Load(chrt.Path())
if err != nil {
return fmt.Errorf("failed to reload chart for image discovery: %w", err)
}

// Match helm install/template: coalesce parent values into subcharts
// (including dependency aliases) and honor conditions before rendering.
if err := util.ProcessDependencies(renderChart, userValues); err != nil {
return fmt.Errorf("failed to process chart dependencies for image discovery: %w", err)
}

values, err := commonutil.ToRenderValues(renderChart, userValues, common.ReleaseOptions{Namespace: "hauler"}, caps)
if err != nil {
return err
}
Expand All @@ -699,7 +713,7 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags.
)

// parse helm chart templates and values for images
rendered, err := engine.Render(c, values)
rendered, err := engine.Render(renderChart, values)
if err != nil {
// charts may fail due to values so still try helm chart annotations and lock
l.Warnf("%sfailed to render chart [%s]: %v", prefix, c.Name(), err)
Expand Down Expand Up @@ -785,7 +799,10 @@ func storeChart(ctx context.Context, s *store.Layout, cfg v1.Chart, opts *flags.

depOpts := *opts
depOpts.AddDependencies = true
depOpts.AddImages = true
// Do not rediscover images on dependency charts in isolation.
// Parent --add-images already renders the full tree (with alias
// overrides and conditions) after ProcessDependencies.
depOpts.AddImages = false
subCtx := context.WithValue(ctx, isSubchartKey{}, true)

var depCfg v1.Chart
Expand Down