Repository navigation
chore: replace disabled with enabled in DP configs - #453
openshift-merge-bot[bot] merged 6 commits into
Conversation
Code Review by Qodo
Context used✅ Tickets:
RHIDP-14726 1.
|
PR Summary by QodoHelm: switch dynamic plugin flag from disabled to enabled Description
Diagram
High-Level Assessment
Files changed (6)
|
rm3l
left a comment
There was a problem hiding this comment.
A small comment below.
And it looks like there are still some occurrences to update:
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
73f842f to
47dda6f
Compare
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
Signed-off-by: Hope Hadfield <hhadfiel@redhat.com>
|
e81f938
into
redhat-developer:main
…[RHIDP-14726] Align the rhdh chart with the backstage chart change from PR redhat-developer#453: use `enabled: true` instead of `disabled: false` for dynamic plugin entries in values, schema, CI files, and documentation. Assisted-by: Claude
* feat: add standalone RHDH Helm chart without upstream subchart dependency Helm cannot merge lists, so when users set extraVolumes/extraEnvVars on the current chart, the entire default list is replaced — forcing them to copy-paste all system defaults just to add one item. This is a Day 2 maintenance burden that grows with every release. This new chart at charts/rhdh/ owns all Kubernetes templates directly and uses an "add, don't replace" pattern: system-required volumes, mounts, env vars, and init containers are hardcoded in the Deployment template, while user-provided values are always appended. Users can now add a volume without knowing or duplicating the system defaults. The values layout is flattened to match helm-create conventions (replicaCount, image, service at root level) — no more navigating global.*/upstream.backstage.* nesting to set basic options. Assisted-by: Claude * deprecate backstage chart in favor of the new standalone rhdh chart The new rhdh chart owns all Kubernetes templates directly and no longer depends on the upstream Backstage subchart, so the weekly sync workflow and its helper script are no longer needed. Assisted-by: Claude * run pre-commit hooks * clarify that backstage chart fixes target supported release-1.y branches Assisted-by: Claude * update Chart.yaml with data from downstream chart * add CI values files for the rhdh chart Port test scenarios from charts/backstage/ci/ with key paths adjusted for the flat values layout. The custom-dynamic-pvc-claim-spec scenario is dropped because the new chart hardcodes the dynamic-plugins-root volume (user volumes are appended, not replaced). Assisted-by: Claude * bump backstage chart version * fix issues reported by SonarQube * support bitnami global fields in the rhdh chart Add global.imageRegistry, global.imagePullSecrets, and global.defaultStorageClass so they flow through to both the postgresql subchart and the rhdh chart's own templates. Image helpers now delegate to bitnami common's common.images.image, and imagePullSecrets are merged from both global and root-level sources. Lightspeed container images converted from strings to structured registry/repository/tag maps so global.imageRegistry applies uniformly to all containers. Also pins the test pod image to curl/curl:8.9.1 instead of latest, adds automountServiceAccountToken: false and ephemeral-storage requests to the test pod (SonarCloud findings). Assisted-by: Claude * run pre-commit hooks * upgrade bitnami postgresql dependency to 18.7.5 The previous version (12.10.0) was far behind. The new version requires global.security.allowInsecureImages=true since we use a Fedora-based PostgreSQL image instead of the bitnami one. Assisted-by: Claude * add digest field to all image blocks and document catalogIndex examples Assisted-by: Claude * fix(ci): skip ct upgrade test for new charts not yet on the target branch chart-testing's --upgrade flag checks out the target branch and tries to build dependencies for the chart there. For brand-new charts like charts/rhdh/ that do not exist on main yet, this causes helm dependency build to fail. Make --upgrade conditional: when a specific chart is tested, check whether its Chart.yaml exists on the target branch first. If not, skip the upgrade test and only run a fresh install. Also rename the backstageChartChanged output to orchestratorCrdsNeeded and include charts/rhdh so that Knative and SonataFlow CRDs are installed for both charts' orchestrator CI scenarios. * fix(ci): set podSecurityContext for the rhdh chart on KinD On vanilla K8s (KinD), there is no SCC to assign a common UID to all containers in a pod. Set fsGroup so shared volumes (e.g. RAG data) are group-writable across init containers and sidecars that may run as different UIDs. Also disable the route, which is not available on KinD. * feat(rhdh): add default appConfig with base URLs, database, and auth Without a default appConfig, no app-config ConfigMap is created and the RHDH application lacks essential configuration (base URLs, CORS, database connection, backend auth), causing it to fail to start. Add a default appConfig matching the backstage chart, providing: - app.baseUrl and backend.baseUrl from rhdh.hostname - backend.cors.origin - backend.database.connection (postgres user, password from env var) - backend.auth.externalAccess (legacy service-to-service auth) * run pre-commit hooks * chore(rhdh): replace disabled with enabled in dynamic plugin configs [RHIDP-14726] Align the rhdh chart with the backstage chart change from PR #453: use `enabled: true` instead of `disabled: false` for dynamic plugin entries in values, schema, CI files, and documentation. Assisted-by: Claude * run pre-commit hooks * fix(rhdh): fix lightspeed RAG init permissions and bump lightspeed-stack to 0.5.2 Use --no-preserve=mode,ownership when copying RAG data so the sidecar (UID 1001) can access files written by the init container (UID 65532). Pre-create the notebooks subdirectory and chmod the copied data to prevent PermissionError on vanilla Kubernetes. Also bump lightspeed-stack sidecar from 0.5.1 to 0.5.2. Refs: - #460 - #461 Assisted-by: Claude * fix(ci): drop runAsUser/runAsGroup overrides for rhdh chart on KinD The RAG init container permission fix (--no-preserve=mode,ownership + chmod) makes a shared UID unnecessary. Only fsGroup is needed, matching the backstage chart CI setup. Assisted-by: Claude * refactor(rhdh): move CI-only overrides from values files to test action Move route.enabled=false and postgresql.primary.persistence.enabled=false from all 7 rhdh CI values files into the test-charts action as --set flags. These are KinD environment workarounds, not chart-specific test scenarios. Assisted-by: Claude * chore(rhdh): apply Helm best practices to values.yaml - Quote all string values consistently (Helm best practice: YAML type coercion is counterintuitive; wildcardPolicy: None is especially dangerous as YAML 1.1 treats it as null) - Add missing helm-docs comments for nodeSelector, tolerations, affinity - Remove duplicate catalogIndex comment - Remove dead networkPolicy configuration (no template references it) - Rename externalDBsecretRef to externalDBSecretRef (camelCase fix) - Regenerate values.schema.json and README.md Assisted-by: Claude * chore(rhdh): remove diagnosticMode from values and deployment template kubectl debug (stable since K8s 1.25, chart requires 1.27+) is the standard way to debug running pods without mutating the Deployment spec or requiring a Helm upgrade cycle. Assisted-by: Claude * chore(rhdh): downgrade postgresql subchart to 16.2.5 Starting with 16.3.0, the bitnami common library rejects non-bitnami images unless global.security.allowInsecureImages is set. Since this chart ships a Fedora-based PostgreSQL image, that setting was required and confusing for users. Pin to 16.2.5 (the last version without the check) and remove the allowInsecureImages workaround entirely. See bitnami/charts#30850 Assisted-by: Claude * refactor(rhdh): rename securityContext to containerSecurityContext The pod has multiple containers (main RHDH, lightspeed sidecar, init containers), so the bare name securityContext is ambiguous. Rename to containerSecurityContext to clarify it applies only to the main RHDH container, matching the podSecurityContext / containerSecurityContext naming convention from Kubernetes. Assisted-by: Claude * refactor(rhdh): reuse containerSecurityContext for install-dynamic-plugins The init container had the same security context hardcoded. Use the shared containerSecurityContext value so users can adjust it in one place for both the main container and the init container. Assisted-by: Claude * feat(rhdh): make dynamic-plugins-root volume configurable Expose dynamicPlugins.volume with a type selector (ephemeral, emptyDir, pvc) and raw Kubernetes volume specs for each type. Users can now customize the storage class, size, access mode, or switch to an emptyDir or pre-existing PVC without forking the template. Assisted-by: Claude * refactor(rhdh): rename extra resource fields for clarity Rename volumes → extraVolumes, volumeMounts → extraVolumeMounts, containers → extraContainers, initContainers → extraInitContainers. The "extra" prefix makes it explicit that these are appended to system defaults, not replacing them. Assisted-by: Claude * refactor(rhdh): rename env to extraEnv for consistency Follows the same naming convention as the other extra resource fields (extraVolumes, extraVolumeMounts, extraContainers, extraInitContainers). Assisted-by: Claude * feat(rhdh): add extraArgs and make args a full override args now fully overrides the container arguments, skipping the system --config flags. extraArgs appends additional arguments after the system --config flags for users who just need to pass extra options. Assisted-by: Claude * fix(rhdh): reorder --config args so extraAppConfig overrides appConfig Backstage uses last-wins for --config ordering. Move the inline appConfig before extraAppConfig so that external ConfigMaps can override the chart's built-in configuration. Assisted-by: Claude * refactor(rhdh): rename args to argsOverride for clarity The name argsOverride makes it explicit that setting this field replaces the default system --config arguments entirely, steering users toward extraArgs for the common append use case. Assisted-by: Claude * feat(rhdh): add envOverride for full env control Same pattern as argsOverride/extraArgs: envOverride replaces all system env vars (BACKEND_SECRET, DB credentials, etc.), while extraEnv appends after them. Assisted-by: Claude * run pre-commit hooks * refactor(rhdh): group OpenShift fields under openshift parent Move clusterRouterBase and route under openshift.clusterRouterBase and openshift.route respectively. This makes it clear which values are OCP-specific and which are platform-agnostic. Assisted-by: Claude * refactor(rhdh): reorganize values.yaml by functional category Group fields into labeled sections (Global, Image, App Config, Dynamic Plugins, Deployment/Pod, Networking, OpenShift, Database, Observability, Built-in Features, Testing) for easier navigation. Reorder only — no functional change. Assisted-by: Claude * refactor(rhdh): centralize labels and remove hardcoded namespace Move `app.kubernetes.io/component: backstage` into the `rhdh.selectorLabels` helper instead of repeating it inline in every template. Remove `namespace:` from all resource metadata — Helm injects it at install time per best practice. Also add standard labels to lightspeed, orchestrator, and test templates that previously lacked them, and move orchestrator templates into an `orchestrator/` subdirectory. Assisted-by: Claude * fix(rhdh): fix annotation ordering in route and add commonAnnotations support Fix route.yaml annotation rendering order to match all other templates: commonAnnotations first, then resource-specific annotations (so resource-specific wins on key conflicts). Add commonAnnotations support to templates that previously lacked it: lightspeed configmaps/secret, orchestrator network-policies/ sonataflows, and test-connection/test-secret pods. Assisted-by: Claude * fix(rhdh): lowercase and truncate DB creation Job name Replicate the fix from PR #466 (backstage chart) into the rhdh chart. Chart versions with uppercase characters (e.g. CI builds) produced Job names violating RFC 1123 subdomain rules. Add rhdh.orchestrator.dbJobName helper that lowercases the name and truncates to 63 chars while preserving the version suffix. Ref: #466 Assisted-by: Claude * chore(backstage): mark chart as deprecated and bump to 6.2.3 Assisted-by: Claude * docs: update root README with all charts and their status Assisted-by: Claude * fix(rhdh): respect global.imageRegistry for catalog index images Assisted-by: Claude * refactor(rhdh): simplify lightspeed configuration - Reduce helpers from 11 to 4 by inlining checksums, volume names, and file lookups at call sites - Replace configMaps array with named config map (stack, server, profile) using existingConfigMap.name/key override pattern - Rename initContainer/sidecar to ragInit/core; hardcode container names - Hardcode ragVolume as emptyDir (always rebuilt by init container) - Rename command/args to commandOverride/argsOverride with defaults baked into templates - Rename env to extraEnv; add extraVolumeMounts to ragInit and core - Add preInitContainers for running init containers before system ones - Replace secret creation with existingSecretRef; move bundled secret to secret.example.yaml as reference template - Add ConfigMap volume items for key validation at scheduling time Assisted-by: Claude * refactor(rhdh): restructure orchestrator configuration - Group external DB fields under externalDB (secretRef, name, host, port) - Group DB creation job fields under dbCreationJob (backoffLimit, ttlSecondsAfterFinished, activeDeadlineSeconds, image, initImage) - Convert all image references to structured registry/repository/tag/digest maps, honoring global.imageRegistry via common.images.image - DB job images default to postgresql subchart image via tpl expressions - Add dataIndex.image and jobService.image as structured image overrides - Add rhdh.orchestrator.image helper for tpl-aware image resolution - Add rhdh.image.hasOverride helper for checking non-empty image maps Assisted-by: Claude * test(rhdh): add CI test for lightspeed with existing ConfigMaps and Secret Add a ct values file that configures lightspeed with existingConfigMap references and existingSecretRef, exercising the external-resource code path. A Helm pre-install hook creates the required ConfigMaps (from bundled files) and a dummy Secret in the release namespace. Also fix the stale with-lightspeed-service-host CI values file which still used the old sidecar.env field name instead of core.extraEnv. Assisted-by: Claude * fix(rhdh): pin catalog index image to 1.10.1 The `next` catalog index image is currently unstable. Pin to 1.10.1 until it stabilizes. Assisted-by: Claude * feat(rhdh): add missing upstream features from backstage/charts - Add dual-stack service support (ipFamilyPolicy, ipFamilies) and NodePort configuration - Guard clusterIP and externalTrafficPolicy to appropriate service types - Switch user-extensible values (tolerations, affinity, nodeSelector, podAnnotations, podLabels, extraVolumes, extraVolumeMounts, strategy, topologySpreadConstraints, hostAliases) from toYaml to common.tplvalues.render so Go template expressions are evaluated - Add HTTPRoute labels, per-rule timeouts and name fields - Add ServiceAccount custom labels - Support postgresql.architecture=replication in hostname helper Assisted-by: Claude * fix(rhdh): pin catalog index image to 1.10.2 The `next` catalog index image is currently unstable. Pin to 1.10.2 until it stabilizes. Assisted-by: Claude * fix(rhdh): bump lightspeed-core image from 0.5.2 to 0.5.3 Reflects the same bump from #475 on the main branch. Assisted-by: Claude * refactor(rhdh): improve configurability of auth, envFrom, and init container - Replace auth.backend.existingSecret with auth.backend.existingSecretRef (name + key fields, key defaults to "backend-secret") - Split envFrom into envFromOverride (full replace) and extraEnvFrom (append), both accepting raw Kubernetes envFrom entries with tplvalues.render support - Make install-dynamic-plugins init container configurable: commandOverride, argsOverride, extraEnv, extraVolumeMounts, resources, and securityContext (falls back to containerSecurityContext when empty) Assisted-by: Claude * fix(rhdh): use POSTGRES_PASSWORD in default appConfig The default appConfig referenced ${POSTGRESQL_ADMIN_PASSWORD} but the deployment template injects POSTGRES_PASSWORD into the RHDH pod. POSTGRESQL_ADMIN_PASSWORD only exists on the postgresql subchart pod. Assisted-by: Claude * refactor(rhdh): use tplvalues.render consistently for user-facing values Replace toYaml with common.tplvalues.render for all user-facing values so that Go template expressions embedded in values.yaml are evaluated at render time. This enables patterns like: commonAnnotations: custom/sha: "{{ .Release.Name }}-{{ .Chart.Version }}" Changes across 14 template files: - _helpers.tpl: commonLabels in rhdh.labels - deployment.yaml: podSecurityContext, containerSecurityContext, resources, 3 probes, init container securityContext, 3 volume specs - commonAnnotations in all resource templates - ingress.yaml: ingress.annotations - servicemonitor.yaml: serviceMonitor.labels and .annotations - httproute.yaml: parentRefs and hostnames Kept toYaml for: deep-copy idiom (_helpers.tpl), internal helper output, service.yaml CIDR/ipFamilies, httproute matches/filters/timeouts, tests. Assisted-by: Claude * fix(rhdh): correct lightspeed schema and add missing sub-field definitions Change lightspeed type from ["boolean", "object"] to "object" and set additionalProperties to false for stricter validation. Add schema definitions for all lightspeed sub-fields: - config: stack/server/profile with existingConfigMap {name, key} - existingSecretRef: string for envFrom secret injection - ragInit: image, imagePullPolicy, commandOverride, argsOverride, extraEnv, extraVolumeMounts, resources, securityContext - core: same shape as ragInit Assisted-by: Claude * refactor(rhdh): rename command to commandOverride for main container All sub-containers (dynamicPlugins.initContainer, lightspeed.core, lightspeed.ragInit) already use commandOverride. Rename the main container's field for API consistency. Assisted-by: Claude * refactor(rhdh): standardize secret reference naming Convention: existingSecretRef: {name, key} for single-key references, existingSecret: "name" for whole-secret injection via envFrom. Renames: - lightspeed.existingSecretRef → lightspeed.existingSecret - orchestrator.sonataflowPlatform.externalDB.secretRef → orchestrator.sonataflowPlatform.externalDB.existingSecret auth.backend.existingSecretRef is unchanged (correctly uses {name, key} for single-key reference). Assisted-by: Claude * fix(rhdh): use rhdh.fullname for resource names to respect overrides Replace .Release.Name with rhdh.fullname in resource names so that nameOverride and fullnameOverride are respected consistently. Changes: - _helpers.tpl: rhdh.backend-secret-name, rhdh.lightspeed.configMapName, rhdh.orchestrator.dbJobName - orchestrator/network-policies.yaml: all 4 NetworkPolicy names PostgreSQL helpers intentionally kept using .Release.Name — the bitnami subchart names its resources that way. Assisted-by: Claude * feat(rhdh): add extraArgs to sub-containers Add extraArgs field to dynamicPlugins.initContainer, lightspeed.ragInit, and lightspeed.core. extraArgs appends arguments after defaults when argsOverride is not set; ignored when argsOverride provides full replacement. Assisted-by: Claude * feat(rhdh): add external database support Add externalDatabase section for connecting to an external PostgreSQL instance when the built-in subchart is disabled (postgresql.enabled: false). New values: externalDatabase: host: "" port: 5432 user: "postgres" existingSecretRef: name: "" key: "password" When postgresql.enabled is false and externalDatabase.host is set, the deployment injects POSTGRES_HOST, POSTGRES_PORT, POSTGRES_USER, and POSTGRES_PASSWORD env vars from the external config. When neither is set, no database env vars are injected (BYO via extraEnv). Also updates rhdh.postgresql.host helper to return externalDatabase.host when the built-in database is disabled. Adds CI test values: with-external-db-values.yaml and with-extra-app-config-values.yaml. Assisted-by: Claude * feat(rhdh): honor global.defaultStorageClass for dynamic plugins volume Wire the Bitnami common.storage.class helper into the ephemeral volume spec so that global.defaultStorageClass is applied automatically. Add dynamicPlugins.volume.storageClassName for direct overrides. When empty, the cluster default StorageClass is used. Set to "-" to explicitly disable dynamic provisioning (renders storageClassName: ""). An empty string is never rendered as storageClassName — only non-empty values or the explicit "-" opt-out produce the field, avoiding the Kubernetes semantic difference between omitted and empty-string. Assisted-by: Claude * refactor(rhdh): flatten ephemeral volume config in values Replace the nested ephemeral.volumeClaimTemplate.spec structure with flat fields under dynamicPlugins.volume.ephemeral (storageClassName, accessModes, resources). The deployment template builds the proper Kubernetes ephemeral volume spec from these fields. Move storageClassName into the ephemeral section since it only applies to that volume type. Assisted-by: Claude * chore(backstage): bump version to 6.2.10 Reserve version headroom for potential updates to the legacy chart before the rhdh chart is merged, making rebase conflicts explicit. Assisted-by: Claude * refactor(rhdh): use fixed namespace for CI tests and remove test injection flags Use a fixed `ct-charts` namespace for all `ct install` runs so that pre-created Kubernetes resources (Secrets, ConfigMaps) persist across ci/ values file tests. This replaces the per-chart test injection flags (`test.injectTestNpmrcSecret`, `test.injectTestLightspeedResources`) with resource creation in the CI action, keeping the chart API clean. Also sets up an external PostgreSQL instance for the `with-external-db` CI test, deployed via the same Bitnami chart version and image declared in the rhdh chart dependency. Assisted-by: Claude * chore(rhdh): remove redundant overrides from CI values files Remove openshift.route.enabled and test.enabled from ci/ values files since these are already set via --helm-extra-set-args in the CI action. Assisted-by: Claude * chore(rhdh): drop npmrc CI test and comment out its secret creation The dynamic-plugins-npmrc volume is optional in the deployment, so no dedicated ci/ values file is needed to exercise it. Comment out the corresponding secret creation in the CI action for future reference. Assisted-by: Claude * fix(rhdh): remove inaccurate storageClassName comment The Bitnami common.storage.class helper does not treat "-" as a special value to disable dynamic provisioning. Assisted-by: Claude * feat(rhdh): expose dynamicPlugins.maxEntrySize and fix external DB CI setup Add dynamicPlugins.maxEntrySize to values.yaml so users can configure the MAX_ENTRY_SIZE env var for the install-dynamic-plugins init container. Fix the external PostgreSQL CI setup to pass the Fedora/sclorg-specific env var (POSTGRESQL_ADMIN_PASSWORD) and data directory, which the image requires to start. Assisted-by: Claude * refactor(rhdh): consolidate CI values files and remove dbCreationJob.initImage Reduce ci/ values files from 9 to 4 by merging related test scenarios: - with-external-db now also tests orchestrator with external DB - with-custom-configuration merges extraAppConfig, lightspeed existing config, lightspeed service host, and orchestrator - Drop low-value files (custom test pod image, disabled test pod) Remove dbCreationJob.initImage — the wait-for-db init container now reuses dbCreationJob.image. Assisted-by: Claude * chore(rhdh): switch catalogIndex image tag to next Assisted-by: Claude * chore(rhdh): skip dynamic plugin downloads in CI values files Skip plugin installation in CI to speed up test cycles. The chart features under test (deployment, config, probes) don't depend on actual plugins. Assisted-by: Claude * feat(rhdh): add wait-for-db init container to deployment Prevents a race condition where Backstage starts before the bundled PostgreSQL is ready, causing built-in plugins to fail with ECONNREFUSED and the pod to get stuck (alive but not ready). The init container reuses the chart's PostgreSQL image, runs after the dynamic-plugins and lightspeed-rag-init init containers, and is conditionally included only when a database is configured (postgresql.enabled or externalDatabase.host). Assisted-by: Claude * fix(ci): increase PostgreSQL ephemeral-storage limit for rhdh tests With persistence disabled in CI, PostgreSQL writes to an emptyDir that counts against the 20Mi ephemeral-storage limit, causing the pod to be evicted during initdb. Raise to 200Mi. Assisted-by: Claude * chore(ci): exclude deprecated backstage chart from ct install tests Assisted-by: Claude * chore(ci): remove deprecated backstage chart references from test action Assisted-by: Claude * feat(rhdh): default ingress host to top-level host value and enable ingress in CI Assisted-by: Claude * chore(ci): exclude backstage from test matrix and adapt image overrides for rhdh Assisted-by: Claude * chore(ci): skip plugin downloads in rhdh CI and add full-plugins nightly override Empty the default, lightspeed and orchestrator plugin lists in rhdh CI values files instead of disabling lightspeed, matching the pattern used by the backstage chart. The nightly and PR test workflows now generate a full-plugins values override for the rhdh chart so that nightly runs exercise the real plugin lists and PR template sanity checks verify all CI scenarios render cleanly with them. Also remove all backstage-specific references from the test and nightly workflows since the deprecated backstage chart is excluded from CI. * chore(ci): per-branch chart discovery in nightly workflow Read each branch's ct.yaml via git show to determine which charts to test, producing a {branch, chart} matrix instead of a cross-product. This lets each branch's own exclusion list control what gets tested — backstage is included on release-1.* branches (where it is active) and excluded on main and future release-2.* branches (where ct.yaml marks it as deprecated). * docs(ci): clarify extra_helm_args vs helm_extra_args input descriptions Update input descriptions in the test-charts action and add inline comments at the nightly workflow call site to clarify the difference: extra_helm_args passes --set overrides via --helm-extra-set-args, while helm_extra_args passes general helm flags via --helm-extra-args. * chore: add rhdh chart lightspeed path to CODEOWNERS * fix(ci): consolidate upgrade skip logic to avoid duplicate --upgrade flag The two separate blocks that appended --upgrade to ct install args could both fire, passing the flag twice. Merge them into a single block that checks all skip conditions (new chart, unchanged version, major bump) before deciding once. * fix(rhdh): only render includes and plugins in dynamic-plugins ConfigMap deepCopy of the entire dynamicPlugins object leaked unrelated fields (initContainer, volume, maxEntrySize) into the ConfigMap. Build the output dict from just the includes key instead. * chore(ci): scan rhdh chart instead of deprecated backstage in Snyk and SonarCloud Switch the Snyk workflow matrix from backstage to rhdh and add a sonar-project.properties to exclude the deprecated backstage chart from SonarCloud analysis, fixing the duplication alert on rhdh-profile.py. * fix(ci): exclude deprecated backstage chart from SonarCloud duplication detection sonar.exclusions only covers bug/vulnerability analysis. Add sonar.cpd.exclusions to also exclude the backstage chart from the Copy-Paste Detector, fixing the duplication alert on rhdh-profile.py. * fix(ci): use .sonarcloud.properties for duplication exclusions SonarCloud auto-analysis ignores sonar-project.properties and reads .sonarcloud.properties instead. Move the exclusions there and add sonar.cpd.exclusions to exclude the deprecated backstage chart from duplication detection. Remove the unused sonar-project.properties. * feat(rhdh): expose imagePullSecrets, pullPolicy and securityContext for test pod Wire up global.imagePullSecrets via the rhdh.imagePullSecrets helper, make imagePullPolicy configurable via test.image.pullPolicy, and allow overriding the container securityContext via test.securityContext. * chore: remove deprecated backstage helm-dependency-update pre-commit hook * docs(rhdh): fix README to match current values structure - Update orchestrator externalDB examples to use nested keys (externalDB.existingSecret/name/host/port) instead of flat keys - Show proper dynamicPlugins.plugins YAML structure in notifications example - Fix argsOverride/extraArgs descriptions not rendering in values table - Update test pod section to mention pullPolicy and securityContext - Fix typo: recieve -> receive * docs(rhdh): clarify override fields, hostname derivation, and vanilla K8s example - Document *Override fields (envOverride, commandOverride, etc.) as escape hatches from the "add, don't replace" pattern - Replace inaccurate "automatic hostname discovery" note with actual hostname derivation logic - Remove runAsUser/runAsGroup from vanilla Kubernetes example * fix(ci): remove hardcoded --debug from ct-install helm-extra-args The RUNNER_DEBUG gate in the test-charts action already adds --debug to ct when needed; having it hardcoded in ct-install.yaml caused noisy helm debug logs on every CI run. * docs: update stale backstage chart references across docs and tooling Replace deprecated backstage chart paths and values structure with rhdh chart equivalents in docs, CONTRIBUTING.md, and orchestrator-software-templates. * fix(rhdh): wire database host/port/user into default appConfig The default appConfig.backend.database.connection now references ${POSTGRES_HOST}, ${POSTGRES_PORT}, and ${POSTGRES_USER} env vars that the chart already injects. This eliminates the need for users to duplicate externalDatabase connection info in appConfig overrides. Simplify docs/external-db.md accordingly: remove the redundant appConfig block, fix externalDatabase to use literal values instead of env var references, and split secrets (password vs TLS env vars). * fix: address review feedback on schema, validation, and docs - Remove dead name/mountPath properties from runtimeVolume schema (hardcoded in deployment.yaml, silently ignored with additionalProperties: false) - Fix stale catalogIndex.image.tag template default (1.10.2 -> next) - Align template defaults for extraPorts and lightspeed.plugins with values.yaml - Add required guard on externalDatabase.existingSecretRef.name to fail at template time instead of producing a confusing K8s API error - Add docs/external-db.md reference in values.yaml externalDatabase comment Co-authored-by: Tomas Kral <tomas.kral@gmail.com> Assisted-by: Claude --------- Co-authored-by: Tomas Kral <tomas.kral@gmail.com>



Description of the change
Replaces all instances of
disabledfield withenabledas a follow-up to redhat-developer/rhdh-plugins#3554Which issue(s) does this PR fix or relate to
How to test changes / Special notes to the reviewer
Checklist
Chart.yamlaccording to Semantic Versioning.values.yamland added to the corresponding README.md. The pre-commit utility can be used to generate the necessary content. Runpre-commit run --all-filesto run the hooks and then push any resulting changes. The pre-commit Workflow will enforce this and warn you if needed.pre-commithook.ct lintcommand.