Aap 49452 - support CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX in awxkit (#16085)

* fix: awxkit should honor CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX if defined

* add unit tests

* update tests
This commit is contained in:
Peter Braun 2025-09-02 14:47:32 +02:00 committed by GitHub
parent b730bfa193
commit 5ca76f3d64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 1 deletions

View File

@ -32,5 +32,6 @@ config.assume_untrusted = config.get('assume_untrusted', True)
config.client_connection_attempts = int(os.getenv('AWXKIT_CLIENT_CONNECTION_ATTEMPTS', 5))
config.prevent_teardown = to_bool(os.getenv('AWXKIT_PREVENT_TEARDOWN', False))
config.use_sessions = to_bool(os.getenv('AWXKIT_SESSIONS', False))
config.api_base_path = os.getenv('AWXKIT_API_BASE_PATH', '/api/')
config.api_base_path = os.getenv('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
config.api_base_path = os.getenv('AWXKIT_API_BASE_PATH', config.api_base_path)
config.gateway_base_path = os.getenv('AWXKIT_GATEWAY_BASE_PATH', '/api/gateway/')

View File

@ -106,3 +106,42 @@ def test_config_file():
assert config.credentials.default.username == 'mary'
assert config.credentials.default.password == 'secret'
def test_controller_optional_api_urlpattern_prefix():
"""Tests that CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX is honored when set."""
cli = CLI()
env = {'CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX': '/custom/api/'}
cli.parse_args(['awx'], env=env)
# Update config with environment variable since config.py reads from os.getenv at import time
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
assert config.api_base_path == '/custom/api/'
def test_awxkit_api_base_path_fallback():
"""Tests that AWXKIT_API_BASE_PATH overrides CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX."""
cli = CLI()
env = {'CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX': '/custom/api/', 'AWXKIT_API_BASE_PATH': '/override/api/'}
cli.parse_args(['awx'], env=env)
# Update config with environment variable since config.py reads from os.getenv at import time
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
assert config.api_base_path == '/override/api/'
def test_api_base_path_default():
"""Tests that api_base_path defaults to /api/ when no environment variables are set."""
cli = CLI()
env = {}
cli.parse_args(['awx'], env=env)
# Reset config to default when no environment variables are set
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
assert config.api_base_path == '/api/'