feat(repo manager) - Add catalog management operations to repo_manager - #5083
Merged
Venu-p1 merged 4 commits intoAug 28, 2026
Merged
Conversation
Implement catalog operations (generate, add, delete, validate) with: - Python backend: parser, I/O, mutator, validator, CLI dispatcher - Ansible role with operation-specific tasks - JSON schema for validation - INI-like input format with [defaults] section - Upsert semantics and automatic orphan cleanup - Multi-layer validation and logging - Comprehensive documentation Signed-off-by: venu <236371043+Venu-p1@users.noreply.github.com>
…H integration - Add functional layer parsing to catalog parser - Support type=functional_layer sections in input files - Implement functional layer validation rules: * Catalog must have at least one functional layer * Each functional layer must have components * Each functional layer must have exactly one base_os group * All group references must exist - Update catalog_io to store functional layers in catalog JSON - Enhance mutator to merge functional layers on add/delete operations - Integrate CATALOG_FILE_PATH environment variable: * Prioritize CATALOG_FILE_PATH as default for all catalog operations * Support command-line overrides (-i, -o, -c flags) * Update role defaults and tasks to use CATALOG_FILE_PATH - All validation tests pass successfully Generated with Devin Signed-off-by: venu <236371043+Venu-p1@users.noreply.github.com>
Signed-off-by: venu <236371043+Venu-p1@users.noreply.github.com>
- Change 'repo_manager' tag to 'repomanager' (no underscores allowed) - Complies with ansible-lint meta-no-tags rule - Tags must contain lowercase letters and digits only Signed-off-by: venu <236371043+Venu-p1@users.noreply.github.com>
Venu-p1
marked this pull request as ready for review
August 28, 2026 07:32
priti-parate
approved these changes
Aug 28, 2026
snarthan
approved these changes
Aug 28, 2026
Venu-p1
merged commit Aug 28, 2026
0843cc3
into
dell:issue-4849-omnia-modernization
14 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Description
Title: feat: Add catalog management operations to repo_manager
Description:
Introduces catalog generation and editing capabilities within the
repo_managerGalaxy collection, enabling users to generate, modify, and validate software catalog JSON files via Ansible playbook tags.What this PR adds
catalog_generate— Creates a new catalog JSON from a simplified text input file. Fails if the output file already exists unlessforce=trueis specified.catalog_add— Adds or updates (upserts) packages into an existing catalog from an input text file. Auto-creates groups if they don't exist. If a package already exists, it is updated in place — no duplicates are allowed.catalog_delete— Removes packages listed in an input text file from an existing catalog. Auto-removes groups that become empty and cleans up unreferenced packages from the catalog.catalog_validate— Validates a catalog against a JSON Schema and additional business rules (referential integrity, required fields per package type, no orphans, etc.).Catalog structure supported
The operations target the existing catalog format comprising
functionallayer,groups, andpackageswith support for all four package types:rpm,rpm_repo,tarball, andimage[1].Invocation
All operations are file-driven and invoked via
--tagsonrepo_manager.yml:Optional
-eoverrides:catalog_file,output_file,force,catalog_name.Changes
roles/catalog/plugins/module_utils/catalog/schemas/catalog_schema.jsonplaybooks/repo_manager.ymlcatalogroledocs/catalog_operations.mdInput file format
A minimal text format with optional
[defaults]header to avoid repetition ofarch,os, andos_versionacross package lines. Group metadata (type, description) is specified inline on the group header.Key behaviours