chore(state): Append Api Versions flags to helm-diff (#107)

* chore(state): Append Api Versions flags to helm-diff

Signed-off-by: Sergio Morales <sergio@cornershopapp.com>

* chore(state): Added unit test to state.flagsForDiff

Signed-off-by: Sergio Morales <sergio@cornershopapp.com>

* chore(state): Check Helmstate values if ReleaseSpec values aren't set

Signed-off-by: Sergio Morales <sergio@cornershopapp.com>
This commit is contained in:
Sergio Morales 2022-06-05 02:18:54 -04:00 committed by GitHub
parent 577f54af7a
commit 414db47428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 60 additions and 2 deletions

View File

@ -2536,6 +2536,8 @@ func (st *HelmState) flagsForDiff(helm helmexec.Interface, release *ReleaseSpec,
flags = append(flags, "--disable-validation")
}
flags = st.appendApiVersionsFlags(flags, release)
flags = st.appendConnectionFlags(flags, helm, release)
var err error
@ -2566,11 +2568,20 @@ func (st *HelmState) chartVersionFlags(release *ReleaseSpec) []string {
}
func (st *HelmState) appendApiVersionsFlags(flags []string, r *ReleaseSpec) []string {
for _, a := range r.ApiVersions {
flags = append(flags, "--api-versions", a)
if len(r.ApiVersions) != 0 {
for _, a := range r.ApiVersions {
flags = append(flags, "--api-versions", a)
}
} else {
for _, a := range st.ApiVersions {
flags = append(flags, "--api-versions", a)
}
}
if r.KubeVersion != "" {
flags = append(flags, "--kube-version", r.KubeVersion)
} else if st.KubeVersion != "" {
flags = append(flags, "--kube-version", st.KubeVersion)
}

View File

@ -1614,6 +1614,53 @@ func TestHelmState_DiffReleases(t *testing.T) {
}
}
func TestHelmState_DiffFlags(t *testing.T) {
tests := []struct {
name string
releases []ReleaseSpec
helm *exectest.Helm
wantDiffFlags []string
}{
{
name: "release with api version and kubeversion",
releases: []ReleaseSpec{
{
Name: "releaseName",
Chart: "foo",
KubeVersion: "1.21",
ApiVersions: []string{"helmfile.test/v1", "helmfile.test/v2"},
},
},
helm: &exectest.Helm{},
wantDiffFlags: []string{"--api-versions", "helmfile.test/v1", "--api-versions", "helmfile.test/v2", "--kube-version", "1.21"},
},
}
for i := range tests {
tt := tests[i]
t.Run(tt.name, func(t *testing.T) {
state := &HelmState{
ReleaseSetSpec: ReleaseSetSpec{
Releases: tt.releases,
},
logger: logger,
valsRuntime: valsRuntime,
RenderedValues: map[string]interface{}{},
}
for j := range tt.releases {
flags, _, errs := state.flagsForDiff(tt.helm, &tt.releases[j], false, 1)
if errs != nil {
t.Errorf("unexpected error: %v", errs)
}
if !reflect.DeepEqual(flags, tt.wantDiffFlags) {
t.Errorf("HelmState.flagsForDiff() for [%s][%s] = %v, want %v", tt.name, tt.releases[j].Name, flags, tt.wantDiffFlags)
}
}
})
}
}
func TestHelmState_SyncReleasesCleanup(t *testing.T) {
tests := []struct {
name string