diff --git a/pkg/app/app_test.go b/pkg/app/app_test.go index ab157567..54d05b9c 100644 --- a/pkg/app/app_test.go +++ b/pkg/app/app_test.go @@ -2513,10 +2513,10 @@ func (helm *mockHelmExec) UpdateRepo() error { func (helm *mockHelmExec) RegistryLogin(name, username, password, caFile, certFile, keyFile string, skipTLSVerify bool) error { return nil } -func (helm *mockHelmExec) SyncRelease(context helmexec.HelmContext, name, chart string, flags ...string) error { +func (helm *mockHelmExec) SyncRelease(context helmexec.HelmContext, name, chart, namespace string, flags ...string) error { return nil } -func (helm *mockHelmExec) DiffRelease(context helmexec.HelmContext, name, chart string, suppressDiff bool, flags ...string) error { +func (helm *mockHelmExec) DiffRelease(context helmexec.HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string) error { return nil } func (helm *mockHelmExec) ReleaseStatus(context helmexec.HelmContext, release string, flags ...string) error { diff --git a/pkg/exectest/helm.go b/pkg/exectest/helm.go index 8dec332c..a805c9ce 100644 --- a/pkg/exectest/helm.go +++ b/pkg/exectest/helm.go @@ -104,7 +104,7 @@ func (helm *Helm) UpdateRepo() error { func (helm *Helm) RegistryLogin(name, username, password, caFile, certFile, keyFile string, skipTLSVerify bool) error { return nil } -func (helm *Helm) SyncRelease(context helmexec.HelmContext, name, chart string, flags ...string) error { +func (helm *Helm) SyncRelease(context helmexec.HelmContext, name, chart, namespace string, flags ...string) error { if strings.Contains(name, "error") { return errors.New("error") } @@ -117,7 +117,7 @@ func (helm *Helm) SyncRelease(context helmexec.HelmContext, name, chart string, return nil } -func (helm *Helm) DiffRelease(context helmexec.HelmContext, name, chart string, suppressDiff bool, flags ...string) error { +func (helm *Helm) DiffRelease(context helmexec.HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string) error { if helm.DiffMutex != nil { helm.DiffMutex.Lock() } diff --git a/pkg/helmexec/exec.go b/pkg/helmexec/exec.go index ee88246b..aeb80cc3 100644 --- a/pkg/helmexec/exec.go +++ b/pkg/helmexec/exec.go @@ -271,8 +271,8 @@ func (helm *execer) UpdateDeps(chart string) error { return err } -func (helm *execer) SyncRelease(context HelmContext, name, chart string, flags ...string) error { - helm.logger.Infof("Upgrading release=%v, chart=%v", name, redactedURL(chart)) +func (helm *execer) SyncRelease(context HelmContext, name, chart, namespace string, flags ...string) error { + helm.logger.Infof("Upgrading release=%v, chart=%v, namespace=%v", name, redactedURL(chart), namespace) preArgs := make([]string, 0) env := make(map[string]string) @@ -450,11 +450,12 @@ func (helm *execer) TemplateRelease(name string, chart string, flags ...string) return err } -func (helm *execer) DiffRelease(context HelmContext, name, chart string, suppressDiff bool, flags ...string) error { +func (helm *execer) DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string) error { + diffMsg := fmt.Sprintf("Comparing release=%v, chart=%v, namespace=%v\n", name, redactedURL(chart), namespace) if context.Writer != nil && !suppressDiff { - fmt.Fprintf(context.Writer, "Comparing release=%v, chart=%v\n", name, redactedURL(chart)) + fmt.Fprint(context.Writer, diffMsg) } else { - helm.logger.Infof("Comparing release=%v, chart=%v", name, redactedURL(chart)) + helm.logger.Info(diffMsg) } preArgs := make([]string, 0) env := make(map[string]string) diff --git a/pkg/helmexec/exec_test.go b/pkg/helmexec/exec_test.go index b4ffb2f1..31bcff91 100644 --- a/pkg/helmexec/exec_test.go +++ b/pkg/helmexec/exec_test.go @@ -327,8 +327,8 @@ func Test_SyncRelease(t *testing.T) { var buffer bytes.Buffer logger := NewLogger(&buffer, "debug") helm := MockExecer(logger, "config", "dev") - err := helm.SyncRelease(HelmContext{}, "release", "chart", "--timeout 10", "--wait", "--wait-for-jobs") - expected := `Upgrading release=release, chart=chart + err := helm.SyncRelease(HelmContext{}, "release", "chart", "default", "--timeout 10", "--wait", "--wait-for-jobs") + expected := `Upgrading release=release, chart=chart, namespace=default exec: helm --kubeconfig config --kube-context dev upgrade --install release chart --timeout 10 --wait --wait-for-jobs --history-max 0 ` if err != nil { @@ -339,8 +339,8 @@ exec: helm --kubeconfig config --kube-context dev upgrade --install release char } buffer.Reset() - err = helm.SyncRelease(HelmContext{}, "release", "chart") - expected = `Upgrading release=release, chart=chart + err = helm.SyncRelease(HelmContext{}, "release", "chart", "default") + expected = `Upgrading release=release, chart=chart, namespace=default exec: helm --kubeconfig config --kube-context dev upgrade --install release chart --history-max 0 ` if err != nil { @@ -351,8 +351,8 @@ exec: helm --kubeconfig config --kube-context dev upgrade --install release char } buffer.Reset() - err = helm.SyncRelease(HelmContext{}, "release", "https://example_user:example_password@repo.example.com/chart.tgz") - expected = `Upgrading release=release, chart=https://example_user:xxxxx@repo.example.com/chart.tgz + err = helm.SyncRelease(HelmContext{}, "release", "https://example_user:example_password@repo.example.com/chart.tgz", "default") + expected = `Upgrading release=release, chart=https://example_user:xxxxx@repo.example.com/chart.tgz, namespace=default exec: helm --kubeconfig config --kube-context dev upgrade --install release https://example_user:example_password@repo.example.com/chart.tgz --history-max 0 ` if err != nil { @@ -547,8 +547,9 @@ func Test_DiffRelease(t *testing.T) { var buffer bytes.Buffer logger := NewLogger(&buffer, "debug") helm := MockExecer(logger, "config", "dev") - err := helm.DiffRelease(HelmContext{}, "release", "chart", false, "--timeout 10", "--wait", "--wait-for-jobs") - expected := `Comparing release=release, chart=chart + err := helm.DiffRelease(HelmContext{}, "release", "chart", "default", false, "--timeout 10", "--wait", "--wait-for-jobs") + expected := `Comparing release=release, chart=chart, namespace=default + exec: helm --kubeconfig config --kube-context dev diff upgrade --allow-unreleased release chart --timeout 10 --wait --wait-for-jobs ` if err != nil { @@ -559,8 +560,9 @@ exec: helm --kubeconfig config --kube-context dev diff upgrade --allow-unrelease } buffer.Reset() - err = helm.DiffRelease(HelmContext{}, "release", "chart", false) - expected = `Comparing release=release, chart=chart + err = helm.DiffRelease(HelmContext{}, "release", "chart", "default", false) + expected = `Comparing release=release, chart=chart, namespace=default + exec: helm --kubeconfig config --kube-context dev diff upgrade --allow-unreleased release chart ` if err != nil { @@ -571,8 +573,9 @@ exec: helm --kubeconfig config --kube-context dev diff upgrade --allow-unrelease } buffer.Reset() - err = helm.DiffRelease(HelmContext{}, "release", "https://example_user:example_password@repo.example.com/chart.tgz", false) - expected = `Comparing release=release, chart=https://example_user:xxxxx@repo.example.com/chart.tgz + err = helm.DiffRelease(HelmContext{}, "release", "https://example_user:example_password@repo.example.com/chart.tgz", "default", false) + expected = `Comparing release=release, chart=https://example_user:xxxxx@repo.example.com/chart.tgz, namespace=default + exec: helm --kubeconfig config --kube-context dev diff upgrade --allow-unreleased release https://example_user:example_password@repo.example.com/chart.tgz ` if err != nil { diff --git a/pkg/helmexec/helmexec.go b/pkg/helmexec/helmexec.go index dcd66902..62cc2aa1 100644 --- a/pkg/helmexec/helmexec.go +++ b/pkg/helmexec/helmexec.go @@ -21,8 +21,8 @@ type Interface interface { RegistryLogin(name, username, password, caFile, certFile, keyFile string, skipTLSVerify bool) error BuildDeps(name, chart string, flags ...string) error UpdateDeps(chart string) error - SyncRelease(context HelmContext, name, chart string, flags ...string) error - DiffRelease(context HelmContext, name, chart string, suppressDiff bool, flags ...string) error + SyncRelease(context HelmContext, name, chart, namespace string, flags ...string) error + DiffRelease(context HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string) error TemplateRelease(name, chart string, flags ...string) error Fetch(chart string, flags ...string) error ChartPull(chart string, path string, flags ...string) error diff --git a/pkg/state/state.go b/pkg/state/state.go index 40895d0a..9c8d2b90 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -972,7 +972,7 @@ func (st *HelmState) SyncReleases(affectedReleases *AffectedReleases, helm helme } m.Unlock() } - } else if err := helm.SyncRelease(context, release.Name, chart, flags...); err != nil { + } else if err := helm.SyncRelease(context, release.Name, chart, release.Namespace, flags...); err != nil { m.Lock() affectedReleases.Failed = append(affectedReleases.Failed, release) m.Unlock() @@ -2036,7 +2036,7 @@ func (st *HelmState) DiffReleases(helm helmexec.Interface, additionalValues []st if prep.upgradeDueToSkippedDiff { results <- diffResult{release, &ReleaseError{ReleaseSpec: release, err: nil, Code: HelmDiffExitCodeChanged}, buf} - } else if err := helm.DiffRelease(st.createHelmContextWithWriter(release, buf), release.Name, normalizeChart(st.basePath, release.ChartPathOrName()), releaseSuppressDiff, flags...); err != nil { + } else if err := helm.DiffRelease(st.createHelmContextWithWriter(release, buf), release.Name, normalizeChart(st.basePath, release.ChartPathOrName()), release.Namespace, releaseSuppressDiff, flags...); err != nil { switch e := err.(type) { case helmexec.ExitError: // Propagate any non-zero exit status from the external command like `helm` that is failed under the hood diff --git a/pkg/testutil/mocks.go b/pkg/testutil/mocks.go index dd796175..507dd8d4 100644 --- a/pkg/testutil/mocks.go +++ b/pkg/testutil/mocks.go @@ -89,11 +89,11 @@ func (helm *noCallHelmExec) RegistryLogin(name, username, password, caFile, cert helm.doPanic() return nil } -func (helm *noCallHelmExec) SyncRelease(context helmexec.HelmContext, name, chart string, flags ...string) error { +func (helm *noCallHelmExec) SyncRelease(context helmexec.HelmContext, name, chart, namespace string, flags ...string) error { helm.doPanic() return nil } -func (helm *noCallHelmExec) DiffRelease(context helmexec.HelmContext, name, chart string, suppressDiff bool, flags ...string) error { +func (helm *noCallHelmExec) DiffRelease(context helmexec.HelmContext, name, chart, namespace string, suppressDiff bool, flags ...string) error { helm.doPanic() return nil } diff --git a/test/integration/test-cases/chart-needs/output/diff b/test/integration/test-cases/chart-needs/output/diff index fcf787ac..eee980cf 100644 --- a/test/integration/test-cases/chart-needs/output/diff +++ b/test/integration/test-cases/chart-needs/output/diff @@ -19,7 +19,7 @@ helmfile-tests, managed-csi, StorageClass (storage.k8s.io) has been added: + volumeBindingMode: Immediate + allowVolumeExpansion: true -Comparing release=azuredisk-csi-driver, chart=azuredisk-csi-driver/azuredisk-csi-driver +Comparing release=azuredisk-csi-driver, chart=azuredisk-csi-driver/azuredisk-csi-driver, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. diff --git a/test/integration/test-cases/chart-needs/output/diff-live b/test/integration/test-cases/chart-needs/output/diff-live index edce0ab6..17a91c52 100644 --- a/test/integration/test-cases/chart-needs/output/diff-live +++ b/test/integration/test-cases/chart-needs/output/diff-live @@ -958,4 +958,4 @@ helmfile-tests, disk.csi.azure.com, CSIDriver (storage.k8s.io) has been added: + attachRequired: true + podInfoOnMount: false + fsGroupPolicy: File -Comparing release=azuredisk-csi-driver, chart=azuredisk-csi-driver/azuredisk-csi-driver +Comparing release=azuredisk-csi-driver, chart=azuredisk-csi-driver/azuredisk-csi-driver, namespace=helmfile-tests diff --git a/test/integration/test-cases/diff-args/output/apply b/test/integration/test-cases/diff-args/output/apply index 8c296ce4..ad082025 100644 --- a/test/integration/test-cases/diff-args/output/apply +++ b/test/integration/test-cases/diff-args/output/apply @@ -1,4 +1,4 @@ -Comparing release=installed, chart=../../../charts/httpbin +Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. diff --git a/test/integration/test-cases/diff-args/output/apply-live b/test/integration/test-cases/diff-args/output/apply-live index 97d0ca93..14e1c5c4 100644 --- a/test/integration/test-cases/diff-args/output/apply-live +++ b/test/integration/test-cases/diff-args/output/apply-live @@ -67,7 +67,7 @@ helmfile-tests, installed-httpbin, Service (v1) has been added: + type: LoadBalancer Error: identified at least one change, exiting with non-zero exit code (detailed-exitcode parameter enabled) Error: plugin "diff" exited with error -Comparing release=installed, chart=../../../charts/httpbin +Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests Release "installed" does not exist. Installing it now. NAME: installed NAMESPACE: helmfile-tests diff --git a/test/integration/test-cases/diff-args/output/apply-live-stderr b/test/integration/test-cases/diff-args/output/apply-live-stderr index 11fc5d65..7f789424 100644 --- a/test/integration/test-cases/diff-args/output/apply-live-stderr +++ b/test/integration/test-cases/diff-args/output/apply-live-stderr @@ -1,7 +1,7 @@ Live output is enabled Building dependency release=installed, chart=../../../charts/httpbin Listing releases matching ^uninstalled$ -Upgrading release=installed, chart=../../../charts/httpbin +Upgrading release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests Listing releases matching ^installed$ diff --git a/test/integration/test-cases/diff-args/output/apply-stderr b/test/integration/test-cases/diff-args/output/apply-stderr index c770713a..6a5025e3 100644 --- a/test/integration/test-cases/diff-args/output/apply-stderr +++ b/test/integration/test-cases/diff-args/output/apply-stderr @@ -1,6 +1,6 @@ Building dependency release=installed, chart=../../../charts/httpbin Listing releases matching ^uninstalled$ -Upgrading release=installed, chart=../../../charts/httpbin +Upgrading release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests Release "installed" does not exist. Installing it now. NAME: installed NAMESPACE: helmfile-tests diff --git a/test/integration/test-cases/diff-args/output/diff b/test/integration/test-cases/diff-args/output/diff index 8c296ce4..ad082025 100644 --- a/test/integration/test-cases/diff-args/output/diff +++ b/test/integration/test-cases/diff-args/output/diff @@ -1,4 +1,4 @@ -Comparing release=installed, chart=../../../charts/httpbin +Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. diff --git a/test/integration/test-cases/diff-args/output/diff-live b/test/integration/test-cases/diff-args/output/diff-live index 3922f515..9e029b1a 100644 --- a/test/integration/test-cases/diff-args/output/diff-live +++ b/test/integration/test-cases/diff-args/output/diff-live @@ -65,4 +65,4 @@ helmfile-tests, installed-httpbin, Service (v1) has been added: + app: httpbin + release: installed + type: LoadBalancer -Comparing release=installed, chart=../../../charts/httpbin +Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests diff --git a/test/integration/test-cases/postrender/output/diff-result b/test/integration/test-cases/postrender/output/diff-result index 016af72c..590434ba 100644 --- a/test/integration/test-cases/postrender/output/diff-result +++ b/test/integration/test-cases/postrender/output/diff-result @@ -1,6 +1,6 @@ Building dependency release=foo, chart=../../../charts/raw Building dependency release=baz, chart=../../../charts/raw -Comparing release=foo, chart=../../../charts/raw +Comparing release=foo, chart=../../../charts/raw, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. @@ -25,7 +25,7 @@ helmfile-tests, foo-1, ConfigMap (v1) has been added: + data: + foo: FOO -Comparing release=baz, chart=../../../charts/raw +Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. diff --git a/test/integration/test-cases/postrender/output/diff-result-live b/test/integration/test-cases/postrender/output/diff-result-live index f968a384..c3997cd9 100644 --- a/test/integration/test-cases/postrender/output/diff-result-live +++ b/test/integration/test-cases/postrender/output/diff-result-live @@ -47,5 +47,5 @@ helmfile-tests, cm1, ConfigMap (v1) has been added: + name: cm1 + metadata: + name: cm1 -Comparing release=foo, chart=../../../charts/raw -Comparing release=baz, chart=../../../charts/raw +Comparing release=foo, chart=../../../charts/raw, namespace=helmfile-tests +Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests diff --git a/test/integration/test-cases/skip-diff-output/output/diff-result b/test/integration/test-cases/skip-diff-output/output/diff-result index 202978a2..e245ea80 100644 --- a/test/integration/test-cases/skip-diff-output/output/diff-result +++ b/test/integration/test-cases/skip-diff-output/output/diff-result @@ -1,4 +1,4 @@ -Comparing release=baz, chart=../../../charts/raw +Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests ******************** Release was not present in Helm. Diff will show entire contents as new. diff --git a/test/integration/test-cases/skip-diff-output/output/diff-result-live b/test/integration/test-cases/skip-diff-output/output/diff-result-live index b7c7a942..1497e030 100644 --- a/test/integration/test-cases/skip-diff-output/output/diff-result-live +++ b/test/integration/test-cases/skip-diff-output/output/diff-result-live @@ -13,4 +13,4 @@ helmfile-tests, baz-2, ConfigMap (v1) has been added: + namespace: helmfile-tests + data: + baz: BAZ -Comparing release=baz, chart=../../../charts/raw +Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests diff --git a/test/integration/test-cases/suppress-output-line-regex/output/diff b/test/integration/test-cases/suppress-output-line-regex/output/diff index a9cdfdb6..944faa16 100644 --- a/test/integration/test-cases/suppress-output-line-regex/output/diff +++ b/test/integration/test-cases/suppress-output-line-regex/output/diff @@ -1,4 +1,4 @@ -Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx +Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx, namespace=helmfile-tests helmfile-tests, ingress-nginx, ClusterRole (rbac.authorization.k8s.io) has changed: helmfile-tests, ingress-nginx, ClusterRoleBinding (rbac.authorization.k8s.io) has changed: # Source: ingress-nginx/templates/clusterrolebinding.yaml diff --git a/test/integration/test-cases/suppress-output-line-regex/output/diff-live b/test/integration/test-cases/suppress-output-line-regex/output/diff-live index d072ee39..ea8640e1 100644 --- a/test/integration/test-cases/suppress-output-line-regex/output/diff-live +++ b/test/integration/test-cases/suppress-output-line-regex/output/diff-live @@ -527,4 +527,4 @@ helmfile-tests, ingress-nginx-admission, NetworkPolicy (networking.k8s.io) has b - egress: - - {} + -Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx +Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx, namespace=helmfile-tests