From dcf4ffc70289584af53ff157d22f0539c34bc493 Mon Sep 17 00:00:00 2001 From: Geoff Wilson Date: Tue, 4 Nov 2025 13:37:19 -0500 Subject: [PATCH 1/2] Add config for "external_repo_prefix" and rename internal_package_prefix -> "internal_repo_prefix" Signed-off-by: Geoff Wilson --- .devcontainer/test_config.ini | 3 +- README.md | 10 +++++-- demo/config.ini | 3 +- .../app/services/repo_config_register.py | 20 +++++++++---- .../services/test_repo_config_register.py | 28 +++++++++++++++---- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/.devcontainer/test_config.ini b/.devcontainer/test_config.ini index a96c2ac..360ac4a 100644 --- a/.devcontainer/test_config.ini +++ b/.devcontainer/test_config.ini @@ -23,7 +23,8 @@ internal_domains=pulp-primary,pulp-secondary git_repo_config=https://github.com/example/repo-config.git git_repo_config_dir=repo_config password=password -internal_package_prefix=int_ +internal_package_prefix=int- +external_package_prefix=ext- package_name_replacement_pattern= package_name_replacement_rule= remote_tls_validation=true diff --git a/README.md b/README.md index 0caac11..564067b 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,8 @@ internal_domains=example.com git_repo_config=https://git.example.com/Pulp-Repo-Config git_repo_config_dir=repo_config password=password -internal_package_prefix=corp_ +internal_repo_prefix=corp- +external_repo_prefix=ext- package_name_replacement_pattern= package_name_replacement_rule= remote_tls_validation=true @@ -248,8 +249,11 @@ Settings to apply to all pulp servers servers - `git_repo_config_dir`: Directory in `git_repo_config` which contains the pulp repo config -- `internal_package_prefix`: Prefix for indicating an internal package uploaded - directly to Pulp primary (no remote URL). +- `internal_repo_prefix`: Prefix applied to a repo name when + uploaded directly to Pulp primary (no remote URL). Leave blank or + omit to retain original name. +- `external_repo_prefix`: Prefix for applied to a repo name when it + has remote URL. Leave blank or omit to retain original name. - `package_name_replacement_pattern`: Regex for matching packages to be renamed. Use named matching groups for use in the format rule. - `package_name_replacement_rule`: The new name pattern assigned to packages diff --git a/demo/config.ini b/demo/config.ini index 4245e80..ccd0603 100644 --- a/demo/config.ini +++ b/demo/config.ini @@ -26,7 +26,8 @@ banned_package_regex=bannedexample|another internal_domains=pulp-primary,pulp-secondary git_repo_config_dir=repo_config password=password -internal_package_prefix=int_ +internal_repo_prefix=int- +external_repo_prefix=ext- package_name_replacement_pattern= package_name_replacement_rule= remote_tls_validation=false diff --git a/pulp_manager/app/services/repo_config_register.py b/pulp_manager/app/services/repo_config_register.py index 2ce1b11..685c689 100644 --- a/pulp_manager/app/services/repo_config_register.py +++ b/pulp_manager/app/services/repo_config_register.py @@ -167,13 +167,21 @@ def _apply_repo_name_prefix(self, name: str, root_path: str) -> str: :return: The repo name with appropriate prefix applied :rtype: str """ - if "remote" in root_path and not name.startswith("ext-"): - return f"ext-{name}" + + prefix_config_key = "" + if "remote" in root_path: + prefix_config_key = "external_repo_prefix" elif "internal" in root_path: - prefix = CONFIG["pulp"]["internal_package_prefix"] - if not name.startswith(prefix): - return f"{prefix}{name}" - return name + prefix_config_key = "internal_repo_prefix" + + try: + prefix = CONFIG["pulp"][prefix_config_key] + except KeyError: + prefix = "" + + if name.startswith(prefix): + return name + return f"{prefix}{name}" def _parse_repo_config_files(self, repo_config_dir: str, regex_include: str, regex_exclude: str): diff --git a/pulp_manager/tests/unit/services/test_repo_config_register.py b/pulp_manager/tests/unit/services/test_repo_config_register.py index df45e8c..8672f49 100644 --- a/pulp_manager/tests/unit/services/test_repo_config_register.py +++ b/pulp_manager/tests/unit/services/test_repo_config_register.py @@ -214,9 +214,9 @@ def open_side_effect(name, mode=None): assert parsed_repo_configs[0]["name"] == "ext-el8repo" def test_apply_repo_name_prefix_remote(self): - """Tests that _apply_repo_name_prefix adds 'ext-' prefix for remote repos + """Tests that _apply_repo_name_prefix adds external_repo_prefix for remote repos """ - CONFIG["pulp"]["internal_package_prefix"] = "int_" + CONFIG["pulp"]["external_repo_prefix"] = "ext-" # Remote repo without prefix result = self.repo_config_register._apply_repo_name_prefix("myrepo", "/path/remote/el7") @@ -226,10 +226,19 @@ def test_apply_repo_name_prefix_remote(self): result = self.repo_config_register._apply_repo_name_prefix("ext-myrepo", "/path/remote/el7") assert result == "ext-myrepo" + def test_apply_repo_name_prefix_remote_blank_prefix(self): + """Tests that _apply_repo_name_prefix returns original name when external_repo_prefix is blank + """ + CONFIG["pulp"]["external_repo_prefix"] = "" + + # Remote repo should not get any prefix when config is blank + result = self.repo_config_register._apply_repo_name_prefix("myrepo", "/path/remote/el7") + assert result == "myrepo" + def test_apply_repo_name_prefix_internal(self): - """Tests that _apply_repo_name_prefix adds internal_package_prefix for internal repos + """Tests that _apply_repo_name_prefix adds internal_repo_prefix for internal repos """ - CONFIG["pulp"]["internal_package_prefix"] = "int_" + CONFIG["pulp"]["internal_repo_prefix"] = "int_" # Internal repo without prefix result = self.repo_config_register._apply_repo_name_prefix("myrepo", "/path/internal/el7") @@ -239,10 +248,19 @@ def test_apply_repo_name_prefix_internal(self): result = self.repo_config_register._apply_repo_name_prefix("int_myrepo", "/path/internal/el7") assert result == "int_myrepo" + def test_apply_repo_name_prefix_internal_blank_prefix(self): + """Tests that _apply_repo_name_prefix returns original name when internal_repo_prefix is blank + """ + CONFIG["pulp"]["internal_repo_prefix"] = "" + + # Internal repo should not get any prefix when config is blank + result = self.repo_config_register._apply_repo_name_prefix("myrepo", "/path/internal/el7") + assert result == "myrepo" + def test_apply_repo_name_prefix_neither(self): """Tests that _apply_repo_name_prefix returns original name for repos not in remote or internal paths """ - CONFIG["pulp"]["internal_package_prefix"] = "int_" + CONFIG["pulp"]["internal_repo_prefix"] = "int_" result = self.repo_config_register._apply_repo_name_prefix("myrepo", "/path/other/el7") assert result == "myrepo" From 545167317de402fce93bc876ad1dfd8b73e4c5a6 Mon Sep 17 00:00:00 2001 From: Geoff Wilson Date: Tue, 4 Nov 2025 13:49:35 -0500 Subject: [PATCH 2/2] Name the test config attributes correctly Signed-off-by: Geoff Wilson --- .devcontainer/test_config.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/test_config.ini b/.devcontainer/test_config.ini index 360ac4a..a4ac838 100644 --- a/.devcontainer/test_config.ini +++ b/.devcontainer/test_config.ini @@ -23,8 +23,8 @@ internal_domains=pulp-primary,pulp-secondary git_repo_config=https://github.com/example/repo-config.git git_repo_config_dir=repo_config password=password -internal_package_prefix=int- -external_package_prefix=ext- +internal_repo_prefix=int- +external_repo_prefix=ext- package_name_replacement_pattern= package_name_replacement_rule= remote_tls_validation=true