Skip to content

Conversation

@Fortune-Ndlovu
Copy link
Member

@Fortune-Ndlovu Fortune-Ndlovu commented Jan 8, 2026

Description

This PR adds catalog-index-support to rhdh local, by adding the CATALOG_INDEX_IMAGE env var within default.env we allow the install-dynamic-plugins service to use it when the container is being created so by the time we run the install-dynamic-plugins.py inside the container, it can be detected.

Which issue(s) does this PR fix or relate to

PR acceptance criteria

  • Tests updated and passing
  • Documentation updated
  • Built-in TechDocs updated if needed. Note that TechDocs changes may need to be reviewed by a Product Manager and/or Architect to ensure content accuracy, clarity, and alignment with user needs.

How to test changes / Special notes to the reviewer

Signed-off-by: Fortune Ndlovu <fndlovu@redhat.com>
Signed-off-by: Fortune Ndlovu <fndlovu@redhat.com>
@rhdh-qodo-merge
Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

RHIDP-9768 - Partially compliant

Compliant requirements:

  • Default catalog index in config.
  • Make use of the default.env file.

Non-compliant requirements:

  • Update the default compose.yaml file with the catalog index, for overriding the index.
  • Ensure it can consume dynamic-plugins.default.yaml from the index image.

Requires further human verification:

  • Should not break the override mechanism.
  • Custom catalog index override works.
  • Catalog index extraction successful.
  • Works with both podman compose and docker compose.
  • Ensure all tests passes.
⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🔒 No security concerns identified
⚡ Recommended focus areas for review

Disable behavior

The comment says to “comment out to disable catalog index entirely”, but the PR adds CATALOG_INDEX_IMAGE as an active (uncommented) default. This may make the catalog index feature always-on by default and remove the ability to “disable” without editing tracked files; confirm intended default behavior and how users should disable it via overrides.

# Default catalog index image. tag can be updated to use a different version or a mirrored image (comment out to disable catalog index entirely):
CATALOG_INDEX_IMAGE=quay.io/rhdh/plugin-catalog-index:1.9
Override guidance

The doc suggests overriding CATALOG_INDEX_IMAGE via a .env file while also referencing the dynamic plugin override mechanism; verify the documented .env approach matches the repo’s supported override flow and works consistently for both docker compose and podman compose (especially around env_file precedence).

## Catalog Index Configuration

RHDH Local supports loading default plugin configurations from an OCI container image called the **catalog index**. This feature allows you to use centralized plugin configurations that can be updated independently of the RHDH container image. For general information about how the catalog index works, see [Using a Catalog Index Image for Default Plugin Configurations](https://github.com/redhat-developer/rhdh/blob/main/docs/dynamic-plugins/installing-plugins.md#using-a-catalog-index-image-for-default-plugin-configurations).

### Default Configuration

The `CATALOG_INDEX_IMAGE` environment variable is defined in `default.env`. When `docker compose up` runs, the `env_file` directive in `compose.yaml` injects this variable into the `install-dynamic-plugins` container. The container's `install-dynamic-plugins.py` script detects the environment variable and uses `skopeo` to download the OCI image. To use a different catalog index version or a mirrored image, update the value in `default.env` or override it in a `.env` file:

```bash
CATALOG_INDEX_IMAGE=quay.io/rhdh/plugin-catalog-index:1.9

</details>

</td></tr>
<tr><td>

<details><summary>📄 References</summary><ol><li><a href="https://github.com/redhat-developer/rhdh-operator/blob/bfe3d48/docs/dynamic-plugins.md/#L46-L52">redhat-developer/rhdh-operator/docs/dynamic-plugins.md [46-52]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-chart/blob/353db4e/docs/catalog-index-configuration.md/#L1-L15">redhat-developer/rhdh-chart/docs/catalog-index-configuration.md [1-15]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-chart/blob/353db4e/charts/backstage/README.md/#L304-L309">redhat-developer/rhdh-chart/charts/backstage/README.md [304-309]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-operator/blob/e76f9e0/docs/configuration.md/#L530-L572">redhat-developer/rhdh-operator/docs/configuration.md [530-572]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-operator/blob/bfe3d48/docs/dynamic-plugins.md/#L1-L4">redhat-developer/rhdh-operator/docs/dynamic-plugins.md [1-4]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-operator/blob/bfe3d48/docs/dynamic-plugins.md/#L5-L41">redhat-developer/rhdh-operator/docs/dynamic-plugins.md [5-41]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-chart/blob/353db4e/docs/catalog-index-configuration.md/#L16-L21">redhat-developer/rhdh-chart/docs/catalog-index-configuration.md [16-21]</a></li>

<li><a href="https://github.com/redhat-developer/rhdh-operator/blob/bfe3d48/docs/dynamic-plugins.md/#L55-L57">redhat-developer/rhdh-operator/docs/dynamic-plugins.md [55-57]</a></li>

</ol></details>

</td></tr>
</table>

@rhdh-qodo-merge rhdh-qodo-merge bot added documentation Improvements or additions to documentation enhancement New feature or request labels Jan 8, 2026
@rhdh-qodo-merge
Copy link
Contributor

PR Type

Enhancement, Documentation


Description

  • Add CATALOG_INDEX_IMAGE environment variable to default.env for catalog index support

  • Enable install-dynamic-plugins service to use centralized plugin configurations from OCI images

  • Document catalog index configuration and usage in dynamic plugins guide


File Walkthrough

Relevant files
Configuration changes
default.env
Add catalog index image environment variable                         

default.env

  • Added CATALOG_INDEX_IMAGE environment variable with default value
    pointing to quay.io/rhdh/plugin-catalog-index:1.9
  • Added comment explaining the purpose and how to customize the catalog
    index image
  • Allows install-dynamic-plugins service to detect and use the catalog
    index during container creation
+3/-0     
Documentation
dynamic-plugins-management.md
Document catalog index configuration and usage                     

docs/rhdh-local-guide/dynamic-plugins-management.md

  • Added new "Catalog Index Configuration" section explaining the feature
    and its purpose
  • Documented how CATALOG_INDEX_IMAGE environment variable is injected
    into the install-dynamic-plugins container
  • Provided instructions for updating catalog index version or using
    mirrored images via default.env or .env file
  • Added reference to official RHDH documentation for catalog index
    details
+12/-0   

@rhdh-qodo-merge
Copy link
Contributor

rhdh-qodo-merge bot commented Jan 8, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
PR is missing the core implementation

The PR adds the CATALOG_INDEX_IMAGE environment variable and related
documentation but is missing the actual implementation in the
install-dynamic-plugins service to read this variable and fetch the catalog
index.

Examples:

default.env [14-15]
# Default catalog index image. tag can be updated to use a different version or a mirrored image (comment out to disable catalog index entirely):
CATALOG_INDEX_IMAGE=quay.io/rhdh/plugin-catalog-index:1.9
docs/rhdh-local-guide/dynamic-plugins-management.md [29]
The `CATALOG_INDEX_IMAGE` environment variable is defined in `default.env`. When `docker compose up` runs, the `env_file` directive in `compose.yaml` injects this variable into the `install-dynamic-plugins` container. The container's `install-dynamic-plugins.py` script detects the environment variable and uses `skopeo` to download the OCI image. To use a different catalog index version or a mirrored image, update the value in `default.env` or override it in a `.env` file:

Solution Walkthrough:

Before:

# default.env
...
# RHDH_IMAGE=quay.io/rhdh-community/rhdh:1.8

# GitHub auth...

# install-dynamic-plugins.py (not shown in PR)
# No logic exists to read or process a catalog index image.

After:

# install-dynamic-plugins.py (or similar service script)
import os
import subprocess

catalog_index_image = os.getenv('CATALOG_INDEX_IMAGE')
if catalog_index_image:
    print(f"Fetching catalog from {catalog_index_image}")
    # ... logic to pull image with skopeo/podman ...
    # ... logic to extract dynamic-plugins.yaml ...
else:
    # ... existing logic for handling plugins ...
    print("CATALOG_INDEX_IMAGE not set.")
Suggestion importance[1-10]: 10

__

Why: This suggestion correctly identifies a critical flaw: the PR adds configuration and documentation for a new feature but completely omits the core implementation, rendering it non-functional.

High
  • Update

@Fortune-Ndlovu Fortune-Ndlovu requested a review from rm3l January 12, 2026 10:08
Copy link
Member

@rm3l rm3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci bot added the lgtm label Jan 12, 2026
@rm3l rm3l merged commit d5ac817 into redhat-developer:main Jan 12, 2026
25 checks passed
@Fortune-Ndlovu Fortune-Ndlovu deleted the RHIDP-9768-catalog-index-support branch January 12, 2026 12:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request lgtm Review effort 2/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants