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

(cherry picked from commit dcc08eec35)

Co-authored-by: Matt Clay <matt@mystile.com>
pull/79597/head
Matt Clay 3 years ago
parent 000f3244a4
commit 7783c9b1ee

@ -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.

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

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

Loading…
Cancel
Save