From 9291a5bafdc6855fc5bf3ad0305efdce170a5eb9 Mon Sep 17 00:00:00 2001 From: Chris Butler Date: Tue, 3 Nov 2026 01:39:16 +0000 Subject: [PATCH 1/2] fix(configmap): render gitops.applicationHealthCheckEnabled and customHealthChecks The patterns-operator supports these keys on the patterns-operator-config ConfigMap but the chart never rendered them, so app-of-apps sync-wave gating was silently inert on every install through this chart (the operator defaults the health check to off, and ArgoCD 1.8 dropped the Application health check). Render each key when it is set, using the same idiom as the existing additionalArgoAdmins/argoRBAC/customArgoYaml blocks. Empty-string defaults preserve current behaviour. applicationHealthCheckEnabled is quoted because the operator compares strings.EqualFold(v, "true") against ConfigMap string data. Fixes #52 --- Chart.yaml | 2 +- README.md | 2 ++ templates/pattern-operator-configmap.yaml | 7 +++++ tests/pattern_operator_configmap_test.yaml | 35 ++++++++++++++++++++++ values.yaml | 10 +++++++ 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/Chart.yaml b/Chart.yaml index 33380a0..8585ae1 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -3,7 +3,7 @@ description: A Helm chart to build and deploy a Cloud Pattern via the patterns o keywords: - pattern name: pattern-install -version: 0.0.18 +version: 0.0.19 home: https://github.com/validatedpatterns/pattern-install-chart maintainers: - name: Validated Patterns Team diff --git a/README.md b/README.md index 1e10e1a..a7a8f5e 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,11 @@ This chart is used by the Validated Patterns installation script that can be fou | main.gitea.helmRepoUrl | string | `"https://charts.validatedpatterns.io/"` | Helm Repository URL for the gitea chart | | main.gitops | object | depends on the individual settings | Settings related to the gitops operator | | main.gitops.additionalArgoAdmins | string | `""` | Comma-separated list of additional ArgoCD admin groups. Only used when argoRBAC is not set. | +| main.gitops.applicationHealthCheckEnabled | string | `""` | Set to "true" to have the patterns operator restore the ArgoCD Application resource health check (dropped in ArgoCD 1.8). Required for app-of-apps sync-wave ordering: without it the root Application treats child Applications as healthy and applies all waves at once. The operator defaults this to false, so it must be set explicitly. | | main.gitops.argoRBAC | string | `""` | Full ArgoCD RBAC spec as a YAML string. When set, it completely overrides the default RBAC policy and additionalArgoAdmins is ignored. | | main.gitops.channel | string | `"gitops-1.21"` | Default channel to install the gitops operator from | | main.gitops.customArgoYaml | string | `""` | Arbitrary ArgoCD .spec YAML to deep-merge into the operator-built ArgoCD CR. Allows customizing any part of the ArgoCD spec without requiring individual config keys. | +| main.gitops.customHealthChecks | string | `""` | Additional resource health checks for the ArgoCD CR, as a YAML list string. Appended to the operator's built-in checks (PVC, Subscription, and Application when applicationHealthCheckEnabled is true). | | main.gitops.operatorSource | string | `"redhat-operators"` | Source to be used to install the gitops operator from | | main.multiSourceConfig.clusterGroupChartVersion | string | `nil` | The clustergroup chart version to be used when deploying a pattern (defaults to 0.8.*) | | main.multiSourceConfig.enabled | bool | `false` | Enables a multisource configuration for the clustergroup chart | diff --git a/templates/pattern-operator-configmap.yaml b/templates/pattern-operator-configmap.yaml index 7147009..747d9c7 100644 --- a/templates/pattern-operator-configmap.yaml +++ b/templates/pattern-operator-configmap.yaml @@ -21,6 +21,13 @@ data: gitops.customArgoYaml: | {{ .Values.main.gitops.customArgoYaml | indent 4 }} {{- end }} + {{- if .Values.main.gitops.applicationHealthCheckEnabled }} + gitops.applicationHealthCheckEnabled: {{ .Values.main.gitops.applicationHealthCheckEnabled | quote }} + {{- end }} + {{- if .Values.main.gitops.customHealthChecks }} + gitops.customHealthChecks: | +{{ .Values.main.gitops.customHealthChecks | indent 4 }} + {{- end }} # gitops.sourceNamespace: GitOpsDefaultCatalogSourceNamespace # gitops.installApprovalPlan: GitOpsDefaultApprovalPlan diff --git a/tests/pattern_operator_configmap_test.yaml b/tests/pattern_operator_configmap_test.yaml index 47a581f..71e52c2 100644 --- a/tests/pattern_operator_configmap_test.yaml +++ b/tests/pattern_operator_configmap_test.yaml @@ -102,6 +102,41 @@ tests: - exists: path: data["gitops.customArgoYaml"] + - it: Should not include gitops.applicationHealthCheckEnabled by default + asserts: + - notExists: + path: data["gitops.applicationHealthCheckEnabled"] + + - it: Should set gitops.applicationHealthCheckEnabled as a string + set: + main: + gitops: + applicationHealthCheckEnabled: "true" + asserts: + - equal: + path: data["gitops.applicationHealthCheckEnabled"] + value: "true" + + - it: Should not include gitops.customHealthChecks by default + asserts: + - notExists: + path: data["gitops.customHealthChecks"] + + - it: Should set gitops.customHealthChecks + set: + main: + gitops: + customHealthChecks: | + - group: example.com + kind: MyKind + check: | + hs = {} + hs.status = "Healthy" + return hs + asserts: + - exists: + path: data["gitops.customHealthChecks"] + - it: Should set gitea parameters set: main: diff --git a/values.yaml b/values.yaml index 6db495f..3408806 100644 --- a/values.yaml +++ b/values.yaml @@ -34,6 +34,16 @@ main: # ArgoCD CR. Allows customizing any part of the ArgoCD spec without # requiring individual config keys. customArgoYaml: "" + # -- Set to "true" to have the patterns operator restore the ArgoCD + # Application resource health check (dropped in ArgoCD 1.8). Required for + # app-of-apps sync-wave ordering: without it the root Application treats + # child Applications as healthy and applies all waves at once. The operator + # defaults this to false, so it must be set explicitly. + applicationHealthCheckEnabled: "" + # -- Additional resource health checks for the ArgoCD CR, as a YAML list + # string. Appended to the operator's built-in checks (PVC, Subscription, + # and Application when applicationHealthCheckEnabled is true). + customHealthChecks: "" # -- Settings related to the in-cluster gitea installation gitea: From acb0e6464648cc0974ec54cbc48a46e138f33be9 Mon Sep 17 00:00:00 2001 From: Chris Butler Date: Tue, 3 Nov 2026 01:39:56 +0000 Subject: [PATCH 2/2] fix(configmap): render gitops.sourceNamespace, installApprovalPlan and csv These operator-consumed keys were listed as comments in the template but never rendered, so they could only be set by writing the ConfigMap out of band. Render each when set, empty-string defaults preserving current behaviour. --- README.md | 3 ++ templates/pattern-operator-configmap.yaml | 11 +++++- tests/pattern_operator_configmap_test.yaml | 45 ++++++++++++++++++++++ values.yaml | 9 +++++ 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a7a8f5e..9d45868 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,10 @@ This chart is used by the Validated Patterns installation script that can be fou | main.gitops.channel | string | `"gitops-1.21"` | Default channel to install the gitops operator from | | main.gitops.customArgoYaml | string | `""` | Arbitrary ArgoCD .spec YAML to deep-merge into the operator-built ArgoCD CR. Allows customizing any part of the ArgoCD spec without requiring individual config keys. | | main.gitops.customHealthChecks | string | `""` | Additional resource health checks for the ArgoCD CR, as a YAML list string. Appended to the operator's built-in checks (PVC, Subscription, and Application when applicationHealthCheckEnabled is true). | +| main.gitops.csv | string | `""` | Starting CSV for the gitops operator install. Defaults to the operator's own default. | +| main.gitops.installApprovalPlan | string | `""` | Install plan approval mode for the gitops operator subscription (Automatic or Manual). Defaults to the operator's own default. | | main.gitops.operatorSource | string | `"redhat-operators"` | Source to be used to install the gitops operator from | +| main.gitops.sourceNamespace | string | `""` | Namespace of the catalog source the gitops operator is installed from. Defaults to the operator's own default (openshift-marketplace). | | main.multiSourceConfig.clusterGroupChartVersion | string | `nil` | The clustergroup chart version to be used when deploying a pattern (defaults to 0.8.*) | | main.multiSourceConfig.enabled | bool | `false` | Enables a multisource configuration for the clustergroup chart | | main.multiSourceConfig.helmRepoUrl | string | `nil` | The URL of the VP helm charts repository (defaults to https://charts.validatedpatterns.io) | diff --git a/templates/pattern-operator-configmap.yaml b/templates/pattern-operator-configmap.yaml index 747d9c7..2358b9e 100644 --- a/templates/pattern-operator-configmap.yaml +++ b/templates/pattern-operator-configmap.yaml @@ -28,8 +28,15 @@ data: gitops.customHealthChecks: | {{ .Values.main.gitops.customHealthChecks | indent 4 }} {{- end }} + {{- if .Values.main.gitops.sourceNamespace }} + gitops.sourceNamespace: {{ .Values.main.gitops.sourceNamespace }} + {{- end }} + {{- if .Values.main.gitops.installApprovalPlan }} + gitops.installApprovalPlan: {{ .Values.main.gitops.installApprovalPlan }} + {{- end }} + {{- if .Values.main.gitops.csv }} + gitops.csv: {{ .Values.main.gitops.csv }} + {{- end }} - # gitops.sourceNamespace: GitOpsDefaultCatalogSourceNamespace - # gitops.installApprovalPlan: GitOpsDefaultApprovalPlan # gitops.ManualSync: GitOpsDefaultManualSync # gitops.name: GitOpsDefaultPackageName diff --git a/tests/pattern_operator_configmap_test.yaml b/tests/pattern_operator_configmap_test.yaml index 71e52c2..de92b62 100644 --- a/tests/pattern_operator_configmap_test.yaml +++ b/tests/pattern_operator_configmap_test.yaml @@ -137,6 +137,51 @@ tests: - exists: path: data["gitops.customHealthChecks"] + - it: Should not include gitops.sourceNamespace by default + asserts: + - notExists: + path: data["gitops.sourceNamespace"] + + - it: Should set gitops.sourceNamespace + set: + main: + gitops: + sourceNamespace: openshift-marketplace + asserts: + - equal: + path: data["gitops.sourceNamespace"] + value: openshift-marketplace + + - it: Should not include gitops.installApprovalPlan by default + asserts: + - notExists: + path: data["gitops.installApprovalPlan"] + + - it: Should set gitops.installApprovalPlan + set: + main: + gitops: + installApprovalPlan: Manual + asserts: + - equal: + path: data["gitops.installApprovalPlan"] + value: Manual + + - it: Should not include gitops.csv by default + asserts: + - notExists: + path: data["gitops.csv"] + + - it: Should set gitops.csv + set: + main: + gitops: + csv: openshift-gitops-operator.v1.22.0 + asserts: + - equal: + path: data["gitops.csv"] + value: openshift-gitops-operator.v1.22.0 + - it: Should set gitea parameters set: main: diff --git a/values.yaml b/values.yaml index 3408806..ca4a44a 100644 --- a/values.yaml +++ b/values.yaml @@ -44,6 +44,15 @@ main: # string. Appended to the operator's built-in checks (PVC, Subscription, # and Application when applicationHealthCheckEnabled is true). customHealthChecks: "" + # -- Namespace of the catalog source the gitops operator is installed + # from. Defaults to the operator's own default (openshift-marketplace). + sourceNamespace: "" + # -- Install plan approval mode for the gitops operator subscription + # (Automatic or Manual). Defaults to the operator's own default. + installApprovalPlan: "" + # -- Starting CSV for the gitops operator install. Defaults to the + # operator's own default. + csv: "" # -- Settings related to the in-cluster gitea installation gitea: