Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .devcontainer/test_config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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_repo_prefix=int-
external_repo_prefix=ext-
package_name_replacement_pattern=
package_name_replacement_rule=
remote_tls_validation=true
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion demo/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 14 additions & 6 deletions pulp_manager/app/services/repo_config_register.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
28 changes: 23 additions & 5 deletions pulp_manager/tests/unit/services/test_repo_config_register.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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")
Expand All @@ -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"
Expand Down