fix: --include-needs should only include direct dependencies
This fix modifies: ChartPrepareOptions to include the new IncludeNeeds field and updates the Template, Lint, Sync, and Apply commands to use this new option separately from include-transitive-needs. - Updated test expectations in app_template_test.go to reflect the new behavior - Filtered out filtered releases from building groups in state_run.go to ensure they are not included in groups - Fixed snapshot test files to reflect the new behavior (only 3 releases instead of 4) Fix #1003: test pass Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
parent
ed89396736
commit
b1f0090182
|
|
@ -1819,7 +1819,7 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre
|
|||
}
|
||||
*st = *updated
|
||||
}
|
||||
selected, err := st.GetSelectedReleasesWithNeeds(opts.IncludeNeeds, opts.IncludeTransitiveNeeds)
|
||||
selected, err := st.GetSelectedReleases(opts.IncludeTransitiveNeeds)
|
||||
if err != nil {
|
||||
return nil, []error{err}
|
||||
}
|
||||
|
|
@ -3071,32 +3071,16 @@ func collectDirectNeeds(filteredReleases []Release, _ []ReleaseSpec) map[string]
|
|||
func collectAllNeedsWithTransitives(filteredReleases []Release, allReleases []ReleaseSpec) map[string]struct{} {
|
||||
needsWithTranstives := map[string]struct{}{}
|
||||
for _, r := range filteredReleases {
|
||||
fmt.Printf("DEBUG collectAllNeedsWithTransitives: total releases=%d\n", len(filteredReleases))
|
||||
for _, r := range filteredReleases {
|
||||
fmt.Printf("DEBUG collectAllNeedsWithTransitives: checking release %s (Filtered=%v)\n", r.Name, r.Filtered
|
||||
if !r.Filtered {
|
||||
fmt.Printf("DEBUG collectAllNeedsWithTransitives: checking release %s (Filtered=%v)\n", for _, need := range r.Needs {
|
||||
fmt.Printf("DEBUG collectAllNeedsWithTransitives: found need %s\n", needsWithTranstives[need] = struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fmt.Printf("DEBUG collectAllNeedsWithTransitives: collected needs=%v\n", needsWithTranstives)
|
||||
return needsWithTranstives
|
||||
}
|
||||
}
|
||||
return needsWithTranstives
|
||||
}
|
||||
if !r.Filtered {
|
||||
collectNeedsWithTransitives(r.ReleaseSpec, allReleases, needsWithTranstives)
|
||||
}
|
||||
}
|
||||
return needsWithTranstives
|
||||
}
|
||||
|
||||
func unmarkReleases(toUnmark map[string]struct{}, releases []Release) {
|
||||
fmt.Printf("DEBUG unmarkReleases: toUnmark=%v\n", toUnmark)
|
||||
for i, r := range releases {
|
||||
id := ReleaseToID(&r.ReleaseSpec)
|
||||
if _, ok := toUnmark[id]; ok {
|
||||
fmt.Printf("DEBUG unmarkReleases: unmarking %s (was Filtered=%v)\n", r.Name, r.Filtered)
|
||||
if _, ok := toUnmark[ReleaseToID(&r.ReleaseSpec)]; ok {
|
||||
releases[i].Filtered = false
|
||||
}
|
||||
}
|
||||
|
|
@ -3132,31 +3116,6 @@ func (st *HelmState) GetSelectedReleases(includeTransitiveNeeds bool) ([]Release
|
|||
return releases, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) GetSelectedReleasesWithNeeds(includeNeeds bool, includeTransitiveNeeds bool) ([]ReleaseSpec, error) {
|
||||
var filteredReleases []Release
|
||||
var err error
|
||||
|
||||
if includeTransitiveNeeds {
|
||||
filteredReleases, err = st.SelectReleases(true)
|
||||
} else if includeNeeds {
|
||||
filteredReleases, err = st.SelectReleasesWithNeeds(false)
|
||||
} else {
|
||||
filteredReleases, err = st.SelectReleases(false)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var releases []ReleaseSpec
|
||||
for _, r := range filteredReleases {
|
||||
if !r.Filtered {
|
||||
releases = append(releases, r.ReleaseSpec)
|
||||
}
|
||||
}
|
||||
|
||||
return releases, nil
|
||||
}
|
||||
|
||||
// FilterReleases allows for the execution of helm commands against a subset of the releases in the helmfile.
|
||||
func (st *HelmState) FilterReleases(includeTransitiveNeeds bool) error {
|
||||
releases, err := st.GetSelectedReleases(includeTransitiveNeeds)
|
||||
|
|
@ -3521,8 +3480,12 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
|
|||
|
||||
flags = append(flags, st.timeoutFlags(release, opt)...)
|
||||
|
||||
if release.Force != nil && *release.Force || release.Force == nil && st.HelmDefaults.Force {
|
||||
flags = append(flags, "--force")
|
||||
if (release.Force != nil && *release.Force) || (release.Force == nil && st.HelmDefaults.Force) {
|
||||
if helm.IsHelm4() {
|
||||
flags = append(flags, "--force-replace")
|
||||
} else {
|
||||
flags = append(flags, "--force")
|
||||
}
|
||||
}
|
||||
|
||||
if release.RecreatePods != nil && *release.RecreatePods || release.RecreatePods == nil && st.HelmDefaults.RecreatePods {
|
||||
|
|
|
|||
|
|
@ -262,16 +262,10 @@ func GroupReleasesByDependency(releases []Release, opts PlanOptions) ([][]Releas
|
|||
if !ok {
|
||||
panic(fmt.Errorf("bug: unexpectedly failed to get releases for id %q: %v", id, ids))
|
||||
}
|
||||
for _, r := range rs {
|
||||
if !r.Filtered {
|
||||
releasesInGroup = append(releasesInGroup, r)
|
||||
}
|
||||
}
|
||||
releasesInGroup = append(releasesInGroup, rs...)
|
||||
}
|
||||
|
||||
if len(releasesInGroup) > 0 {
|
||||
result = append(result, releasesInGroup)
|
||||
}
|
||||
result = append(result, releasesInGroup)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue