diff --git a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml index b6a2ca9a8..52ccc3786 100644 --- a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml +++ b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml @@ -39,7 +39,7 @@ metadata: categories: Developer Tools certified: "true" containerImage: registry.redhat.io/rhdh/rhdh-rhel9-operator:1.9 - createdAt: "2026-01-08T11:05:00Z" + createdAt: "2026-01-09T20:08:15Z" description: Red Hat Developer Hub is a Red Hat supported version of Backstage. It comes with pre-built plug-ins and configuration settings, supports use of an external database, and can help streamline the process of setting up a self-managed diff --git a/bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml b/bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml index 78278fe0f..c8a60d879 100644 --- a/bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml +++ b/bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml @@ -216,6 +216,8 @@ data: defaultMode: 416 optional: true secretName: dynamic-plugins-registry-auth + - name: extensions-catalog + emptyDir: {} - emptyDir: {} name: npmcacache - name: temp @@ -245,9 +247,13 @@ data: # CATALOG_INDEX_IMAGE will be replaced by the value of the `RELATED_IMAGE_catalog_index` env var, if set - name: CATALOG_INDEX_IMAGE value: "quay.io/rhdh/plugin-catalog-index:1.9" + - name: CATALOG_ENTITIES_EXTRACT_DIR + value: '/extensions' volumeMounts: - mountPath: /dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions # TODO Configuring dynamic plugins registry auth this way is deprecated and supported only for documentation backward compatibility. - mountPath: /opt/app-root/src/.config/containers name: dynamic-plugins-registry-auth @@ -331,6 +337,12 @@ data: volumeMounts: - mountPath: /opt/app-root/src/dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions + - name: extensions-catalog + # TODO(asoro): legacy path for backward compatibility. Will be removed in a near future. + mountPath: /marketplace + readOnly: true - mountPath: /tmp name: temp resources: diff --git a/config/profile/rhdh/default-config/deployment.yaml b/config/profile/rhdh/default-config/deployment.yaml index 483716140..be07f452b 100644 --- a/config/profile/rhdh/default-config/deployment.yaml +++ b/config/profile/rhdh/default-config/deployment.yaml @@ -40,6 +40,8 @@ spec: defaultMode: 416 optional: true secretName: dynamic-plugins-registry-auth + - name: extensions-catalog + emptyDir: {} - emptyDir: {} name: npmcacache - name: temp @@ -69,9 +71,13 @@ spec: # CATALOG_INDEX_IMAGE will be replaced by the value of the `RELATED_IMAGE_catalog_index` env var, if set - name: CATALOG_INDEX_IMAGE value: "quay.io/rhdh/plugin-catalog-index:1.9" + - name: CATALOG_ENTITIES_EXTRACT_DIR + value: '/extensions' volumeMounts: - mountPath: /dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions # TODO Configuring dynamic plugins registry auth this way is deprecated and supported only for documentation backward compatibility. - mountPath: /opt/app-root/src/.config/containers name: dynamic-plugins-registry-auth @@ -155,6 +161,12 @@ spec: volumeMounts: - mountPath: /opt/app-root/src/dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions + - name: extensions-catalog + # TODO(asoro): legacy path for backward compatibility. Will be removed in a near future. + mountPath: /marketplace + readOnly: true - mountPath: /tmp name: temp resources: diff --git a/dist/rhdh/install.yaml b/dist/rhdh/install.yaml index 9dd1a6b59..a6354bcb2 100644 --- a/dist/rhdh/install.yaml +++ b/dist/rhdh/install.yaml @@ -2068,6 +2068,8 @@ data: defaultMode: 416 optional: true secretName: dynamic-plugins-registry-auth + - name: extensions-catalog + emptyDir: {} - emptyDir: {} name: npmcacache - name: temp @@ -2097,9 +2099,13 @@ data: # CATALOG_INDEX_IMAGE will be replaced by the value of the `RELATED_IMAGE_catalog_index` env var, if set - name: CATALOG_INDEX_IMAGE value: "quay.io/rhdh/plugin-catalog-index:1.9" + - name: CATALOG_ENTITIES_EXTRACT_DIR + value: '/extensions' volumeMounts: - mountPath: /dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions # TODO Configuring dynamic plugins registry auth this way is deprecated and supported only for documentation backward compatibility. - mountPath: /opt/app-root/src/.config/containers name: dynamic-plugins-registry-auth @@ -2183,6 +2189,12 @@ data: volumeMounts: - mountPath: /opt/app-root/src/dynamic-plugins-root name: dynamic-plugins-root + - name: extensions-catalog + mountPath: /extensions + - name: extensions-catalog + # TODO(asoro): legacy path for backward compatibility. Will be removed in a near future. + mountPath: /marketplace + readOnly: true - mountPath: /tmp name: temp resources: diff --git a/integration_tests/rhdh-config_test.go b/integration_tests/rhdh-config_test.go index 7e56a3e68..3051830be 100644 --- a/integration_tests/rhdh-config_test.go +++ b/integration_tests/rhdh-config_test.go @@ -82,6 +82,10 @@ var _ = When("create default rhdh", func() { MountPath: "/opt/app-root/src/dynamic-plugins.yaml", SubPath: "dynamic-plugins.yaml", }, + { + Name: "extensions-catalog", + MountPath: "/extensions", + }, { Name: "temp", MountPath: "/tmp", @@ -106,7 +110,7 @@ var _ = When("create default rhdh", func() { g.Expect(initCont.Env[0].Name).To(Equal("NPM_CONFIG_USERCONFIG")) g.Expect(initCont.Env[0].Value).To(Equal("/opt/app-root/src/.npmrc.dynamic-plugins/.npmrc")) - g.Expect(deploy.PodSpec().Volumes).To(HaveLen(7)) + g.Expect(deploy.PodSpec().Volumes).To(HaveLen(8)) g.Expect(deploy.PodSpec().Containers).To(HaveLen(1)) mainCont := backstageContainer(*deploy.PodSpec()) g.Expect(mainCont.Args).To(HaveLen(4)) @@ -124,6 +128,13 @@ var _ = When("create default rhdh", func() { MountPath: "/opt/app-root/src/default.app-config.yaml", SubPath: "default.app-config.yaml", }, + { + MountPath: "/extensions", + }, + { + MountPath: "/marketplace", + ReadOnly: true, + }, { MountPath: "/tmp", SubPath: "", diff --git a/pkg/model/dynamic-plugins_test.go b/pkg/model/dynamic-plugins_test.go index be770b9d2..f4f55acd8 100644 --- a/pkg/model/dynamic-plugins_test.go +++ b/pkg/model/dynamic-plugins_test.go @@ -248,7 +248,6 @@ func initContainer(model *BackstageModel) *corev1.Container { return nil } - // TestCatalogIndexImageFromDefaultConfig verifies that the operator sets CATALOG_INDEX_IMAGE // on the install-dynamic-plugins init container from the default config by default func TestCatalogIndexImageFromDefaultConfig(t *testing.T) {