Skip to content

Commit 5ca76f3

Browse files
authored
Aap 49452 - support CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX in awxkit (ansible#16085)
* fix: awxkit should honor CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX if defined * add unit tests * update tests
1 parent b730bfa commit 5ca76f3

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

awxkit/awxkit/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ def getvalue(self, name):
3232
config.client_connection_attempts = int(os.getenv('AWXKIT_CLIENT_CONNECTION_ATTEMPTS', 5))
3333
config.prevent_teardown = to_bool(os.getenv('AWXKIT_PREVENT_TEARDOWN', False))
3434
config.use_sessions = to_bool(os.getenv('AWXKIT_SESSIONS', False))
35-
config.api_base_path = os.getenv('AWXKIT_API_BASE_PATH', '/api/')
35+
config.api_base_path = os.getenv('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
36+
config.api_base_path = os.getenv('AWXKIT_API_BASE_PATH', config.api_base_path)
3637
config.gateway_base_path = os.getenv('AWXKIT_GATEWAY_BASE_PATH', '/api/gateway/')

awxkit/test/cli/test_config.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,42 @@ def test_config_file():
106106

107107
assert config.credentials.default.username == 'mary'
108108
assert config.credentials.default.password == 'secret'
109+
110+
111+
def test_controller_optional_api_urlpattern_prefix():
112+
"""Tests that CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX is honored when set."""
113+
cli = CLI()
114+
env = {'CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX': '/custom/api/'}
115+
cli.parse_args(['awx'], env=env)
116+
117+
# Update config with environment variable since config.py reads from os.getenv at import time
118+
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
119+
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
120+
121+
assert config.api_base_path == '/custom/api/'
122+
123+
124+
def test_awxkit_api_base_path_fallback():
125+
"""Tests that AWXKIT_API_BASE_PATH overrides CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX."""
126+
cli = CLI()
127+
env = {'CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX': '/custom/api/', 'AWXKIT_API_BASE_PATH': '/override/api/'}
128+
cli.parse_args(['awx'], env=env)
129+
130+
# Update config with environment variable since config.py reads from os.getenv at import time
131+
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
132+
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
133+
134+
assert config.api_base_path == '/override/api/'
135+
136+
137+
def test_api_base_path_default():
138+
"""Tests that api_base_path defaults to /api/ when no environment variables are set."""
139+
cli = CLI()
140+
env = {}
141+
cli.parse_args(['awx'], env=env)
142+
143+
# Reset config to default when no environment variables are set
144+
config.api_base_path = env.get('CONTROLLER_OPTIONAL_API_URLPATTERN_PREFIX', '/api/')
145+
config.api_base_path = env.get('AWXKIT_API_BASE_PATH', config.api_base_path)
146+
147+
assert config.api_base_path == '/api/'

0 commit comments

Comments
 (0)