From 90947b27421e5acdf491e2a7089c783c329c50f5 Mon Sep 17 00:00:00 2001 From: Simon Baeumer Date: Wed, 12 May 2021 11:29:14 +0200 Subject: [PATCH 1/3] Pass watched Custom Resource to values mapper --- pkg/client/actionclient.go | 1 - pkg/reconciler/reconciler.go | 2 +- pkg/values/values.go | 11 +++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/client/actionclient.go b/pkg/client/actionclient.go index e6315fe..c318a80 100644 --- a/pkg/client/actionclient.go +++ b/pkg/client/actionclient.go @@ -21,7 +21,6 @@ import ( "encoding/json" "errors" "fmt" - sdkhandler "github.com/operator-framework/operator-lib/handler" "gomodules.xyz/jsonpatch/v2" "helm.sh/helm/v3/pkg/action" diff --git a/pkg/reconciler/reconciler.go b/pkg/reconciler/reconciler.go index abecaa9..e2e08bd 100644 --- a/pkg/reconciler/reconciler.go +++ b/pkg/reconciler/reconciler.go @@ -529,7 +529,7 @@ func (r *Reconciler) getValues(obj *unstructured.Unstructured) (chartutil.Values if err := crVals.ApplyOverrides(r.overrideValues); err != nil { return chartutil.Values{}, err } - vals := r.valueMapper.Map(crVals.Map()) + vals := r.valueMapper.Map(obj, crVals.Map()) vals, err = chartutil.CoalesceValues(r.chrt, vals) if err != nil { return chartutil.Values{}, err diff --git a/pkg/values/values.go b/pkg/values/values.go index 46e1941..9672f0f 100644 --- a/pkg/values/values.go +++ b/pkg/values/values.go @@ -18,14 +18,17 @@ package values import ( "helm.sh/helm/v3/pkg/chartutil" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ) type Mapper interface { - Map(chartutil.Values) chartutil.Values + Map(*unstructured.Unstructured, chartutil.Values) chartutil.Values } -type MapperFunc func(chartutil.Values) chartutil.Values +// MapperFunc takes the original values and the watched custom resource to modify its contents, i.e. to map a custom +// resource or set new values based on cluster state. +type MapperFunc func(*unstructured.Unstructured, chartutil.Values) chartutil.Values -func (m MapperFunc) Map(v chartutil.Values) chartutil.Values { - return m(v) +func (m MapperFunc) Map(cr *unstructured.Unstructured, v chartutil.Values) chartutil.Values { + return m(cr, v) } From 1f73d094c80c9566b77150b592ab3c5988cda66f Mon Sep 17 00:00:00 2001 From: Simon Baeumer Date: Wed, 12 May 2021 11:33:40 +0200 Subject: [PATCH 2/3] Revert unnecessary changes --- pkg/client/actionclient.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/client/actionclient.go b/pkg/client/actionclient.go index c318a80..e6315fe 100644 --- a/pkg/client/actionclient.go +++ b/pkg/client/actionclient.go @@ -21,6 +21,7 @@ import ( "encoding/json" "errors" "fmt" + sdkhandler "github.com/operator-framework/operator-lib/handler" "gomodules.xyz/jsonpatch/v2" "helm.sh/helm/v3/pkg/action" From 4f4ffae89862b09c7d61a86294de73a2d4fd71c5 Mon Sep 17 00:00:00 2001 From: Simon Baeumer Date: Tue, 18 May 2021 10:42:07 +0200 Subject: [PATCH 3/3] TODO: remove --- pkg/reconciler/reconciler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/reconciler/reconciler.go b/pkg/reconciler/reconciler.go index e2e08bd..ddbffc2 100644 --- a/pkg/reconciler/reconciler.go +++ b/pkg/reconciler/reconciler.go @@ -529,7 +529,7 @@ func (r *Reconciler) getValues(obj *unstructured.Unstructured) (chartutil.Values if err := crVals.ApplyOverrides(r.overrideValues); err != nil { return chartutil.Values{}, err } - vals := r.valueMapper.Map(obj, crVals.Map()) + vals := r.valueMapper.Map(obj, crVals.Map()) //TODO: test action vals, err = chartutil.CoalesceValues(r.chrt, vals) if err != nil { return chartutil.Values{}, err