Skip to content

Commit

Permalink
Validate settings before running Pulp instance
Browse files Browse the repository at this point in the history
When token authentization is enabled, 4 additional variables have to be
set. The state of these variables is now checked, while properly
informing the user, instead of relying on exceptions raised later during
the instance's run.

closes #1550
  • Loading branch information
MichalPysik committed Jun 25, 2024
1 parent 05c2f1c commit 4ac1d9c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGES/1550.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Pulp Container specific settings are now properly validated at startup of a Pulp instance.
32 changes: 32 additions & 0 deletions pulp_container/app/dynaconf_hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from dynaconf import Validator
import sys


token_auth_disabled_validator = Validator("TOKEN_AUTH_DISABLED", eq=True)
token_server_validator = Validator("TOKEN_SERVER", must_exist=True)
token_signature_algorithm_validator = Validator("TOKEN_SIGNATURE_ALGORITHM", must_exist=True)
public_key_path_validator = Validator("PUBLIC_KEY_PATH", must_exist=True)
private_key_path_validator = Validator("PRIVATE_KEY_PATH", must_exist=True)


def post(settings) -> dict:
"""
Post load hook for Pulp settings to validate Container-specific variables.
"""
if "collectstatic" in sys.argv:
return {}

container_settings_validator = token_auth_disabled_validator | (
token_server_validator
& token_signature_algorithm_validator
& public_key_path_validator
& private_key_path_validator
)
container_settings_validator.messages["combined"] = (
"When token authentification is enabled ('TOKEN_AUTH_DISABLED=False'), all of the "
"following settings variables must be set: 'TOKEN_SERVER', 'TOKEN_SIGNATURE_ALGORITHM', "
"'PUBLIC_KEY_PATH', 'PRIVATE_KEY_PATH'. Please check your Pulp config file."
)
container_settings_validator.validate(settings)

return {}

0 comments on commit 4ac1d9c

Please sign in to comment.