feat: add namespace info in syncRelease and diffRelease (#1609)

This commit is contained in:
yxxhero 2024-07-16 09:47:00 +08:00 committed by GitHub
parent 45e7681b1e
commit 56dad58180
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 47 additions and 43 deletions

View File

@ -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 {

View File

@ -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()
}

View File

@ -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)

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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$

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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