Fix include-needs to correctly handle direct vs transitive dependencies
The withNeeds function was calling getSelectedReleases with false, false for includeNeeds and includeTransitiveNeeds, which caused it to ignore the --include-needs and --include-transitive-needs flags. This fix: 1. Computes includeNeeds before calling getSelectedReleases 2. Passes the correct flags to getSelectedReleases 3. Sets st.Releases to selectedAndNeededReleases instead of deduplicated 4. Passes IncludeNeeds=false and IncludeTransitiveNeeds=false to PlanReleases since the needs are already included in selectedReleases Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
26e063c1fd
commit
16e408b8ea
|
|
@ -2299,7 +2299,12 @@ func (a *App) template(r *Run, c TemplateConfigProvider) (bool, []error) {
|
|||
func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state.HelmState) []error) (bool, []error) {
|
||||
st := r.state
|
||||
|
||||
selectedReleases, deduplicated, err := a.getSelectedReleases(r, false, false)
|
||||
includeNeeds := c.IncludeNeeds()
|
||||
if c.IncludeTransitiveNeeds() {
|
||||
includeNeeds = true
|
||||
}
|
||||
|
||||
selectedReleases, selectedAndNeededReleases, err := a.getSelectedReleases(r, includeNeeds, c.IncludeTransitiveNeeds())
|
||||
if err != nil {
|
||||
return false, []error{err}
|
||||
}
|
||||
|
|
@ -2311,18 +2316,13 @@ func (a *App) withNeeds(r *Run, c DAGConfig, includeDisabled bool, f func(*state
|
|||
// Without this, `PlanReleases` conflates duplicates and return both in `batches`,
|
||||
// even if we provided `SelectedReleases: selectedReleases`.
|
||||
// See https://github.com/roboll/helmfile/issues/1818 for more context.
|
||||
st.Releases = deduplicated
|
||||
|
||||
includeNeeds := c.IncludeNeeds()
|
||||
if c.IncludeTransitiveNeeds() {
|
||||
includeNeeds = true
|
||||
}
|
||||
st.Releases = selectedAndNeededReleases
|
||||
|
||||
batches, err := st.PlanReleases(state.PlanOptions{
|
||||
Reverse: false,
|
||||
SelectedReleases: selectedReleases,
|
||||
IncludeNeeds: includeNeeds,
|
||||
IncludeTransitiveNeeds: c.IncludeTransitiveNeeds(),
|
||||
IncludeNeeds: false,
|
||||
IncludeTransitiveNeeds: false,
|
||||
SkipNeeds: c.SkipNeeds(),
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -2,13 +2,11 @@ merged environment: &{default map[] map[] map[]}
|
|||
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
|
||||
1 release(s) matching name=test2 found in helmfile.yaml
|
||||
|
||||
processing 2 groups of releases in this order:
|
||||
processing 1 groups of releases in this order:
|
||||
GROUP RELEASES
|
||||
1 default/kube-system/disabled
|
||||
2 default//test2
|
||||
1 default//test2
|
||||
|
||||
processing releases in group 1/2: default/kube-system/disabled
|
||||
processing releases in group 2/2: default//test2
|
||||
processing releases in group 1/1: default//test2
|
||||
WARNING: release test2 needs disabled, but disabled is not installed due to installed: false. Either mark disabled as installed or remove disabled from test2's needs
|
||||
Affected releases are:
|
||||
disabled (incubator/raw) DELETED
|
||||
|
|
|
|||
Loading…
Reference in New Issue