[stable-2.14] ansible-test - Fix target PyPI proxy config.

(cherry picked from commit dcc08eec35)

Co-authored-by: Matt Clay <matt@mystile.com>
pull/79605/head
Matt Clay 2 years ago
parent 5685f06189
commit 578c96b854

@ -0,0 +1,4 @@
bugfixes:
- ansible-test - Perform PyPI proxy configuration after instances are ready and bootstrapping has been completed.
Only target instances are affected, as controller instances were already handled this way.
This avoids proxy configuration errors when target instances are not yet ready for use.

@ -99,6 +99,7 @@ from ...host_configs import (
from ...host_profiles import (
ControllerProfile,
ControllerHostProfile,
HostProfile,
PosixProfile,
SshTargetHostProfile,
@ -961,13 +962,10 @@ def command_integration_filter(args: TIntegrationConfig,
return host_state, internal_targets
def requirements(args: IntegrationConfig, host_state: HostState) -> None:
"""Install requirements."""
target_profile = host_state.target_profiles[0]
configure_pypi_proxy(args, host_state.controller_profile) # integration, windows-integration, network-integration
if isinstance(target_profile, PosixProfile) and not isinstance(target_profile, ControllerProfile):
configure_pypi_proxy(args, target_profile) # integration
install_requirements(args, host_state.controller_profile.python, ansible=True, command=True) # integration, windows-integration, network-integration
def requirements(host_profile: HostProfile) -> None:
"""Install requirements after bootstrapping and delegation."""
if isinstance(host_profile, ControllerHostProfile) and host_profile.controller:
configure_pypi_proxy(host_profile.args, host_profile) # integration, windows-integration, network-integration
install_requirements(host_profile.args, host_profile.python, ansible=True, command=True) # integration, windows-integration, network-integration
elif isinstance(host_profile, PosixProfile) and not isinstance(host_profile, ControllerProfile):
configure_pypi_proxy(host_profile.args, host_profile) # integration

@ -100,7 +100,7 @@ def prepare_profiles(
args: TEnvironmentConfig,
targets_use_pypi: bool = False,
skip_setup: bool = False,
requirements: t.Optional[c.Callable[[TEnvironmentConfig, HostState], None]] = None,
requirements: t.Optional[c.Callable[[HostProfile], None]] = None,
) -> HostState:
"""
Create new profiles, or load existing ones, and return them.
@ -140,7 +140,7 @@ def prepare_profiles(
check_controller_python(args, host_state)
if requirements:
requirements(args, host_state)
requirements(host_state.controller_profile)
def configure(profile: HostProfile) -> None:
"""Configure the given profile."""
@ -149,6 +149,9 @@ def prepare_profiles(
if not skip_setup:
profile.configure()
if requirements:
requirements(profile)
dispatch_jobs([(profile, WrappedThread(functools.partial(configure, profile))) for profile in host_state.target_profiles])
return host_state

Loading…
Cancel
Save