[stable-2.12] ansible-test - Fix delegation inventory path.

(cherry picked from commit e8afdac06e)

Co-authored-by: Matt Clay <matt@mystile.com>
pull/77311/head
Matt Clay 4 years ago
parent a90ef30282
commit 2d98b94f6c

@ -0,0 +1,2 @@
bugfixes:
- ansible-test - Fix ``windows-integration`` and ``network-integration`` when used with the ``--docker`` option and user-provided inventory.

@ -92,6 +92,7 @@ from ...data import (
) )
from ...host_configs import ( from ...host_configs import (
InventoryConfig,
OriginConfig, OriginConfig,
) )
@ -183,6 +184,18 @@ def check_inventory(args, inventory_path): # type: (IntegrationConfig, str) ->
display.warning('Use of "ansible_ssh_private_key_file" in inventory with the --docker or --remote option is unsupported and will likely fail.') display.warning('Use of "ansible_ssh_private_key_file" in inventory with the --docker or --remote option is unsupported and will likely fail.')
def get_inventory_absolute_path(args: IntegrationConfig, target: InventoryConfig) -> str:
"""Return the absolute inventory path used for the given integration configuration or target inventory config (if provided)."""
path = target.path or os.path.basename(get_inventory_relative_path(args))
if args.host_path:
path = os.path.join(data_context().content.root, path) # post-delegation, path is relative to the content root
else:
path = os.path.join(data_context().content.root, data_context().content.integration_path, path)
return path
def get_inventory_relative_path(args): # type: (IntegrationConfig) -> str def get_inventory_relative_path(args): # type: (IntegrationConfig) -> str
"""Return the inventory path used for the given integration configuration relative to the content root.""" """Return the inventory path used for the given integration configuration relative to the content root."""
inventory_names = { inventory_names = {

@ -23,6 +23,7 @@ from ...config import (
from . import ( from . import (
command_integration_filter, command_integration_filter,
command_integration_filtered, command_integration_filtered,
get_inventory_absolute_path,
get_inventory_relative_path, get_inventory_relative_path,
check_inventory, check_inventory,
delegate_inventory, delegate_inventory,
@ -46,8 +47,11 @@ def command_network_integration(args): # type: (NetworkIntegrationConfig) -> No
template_path = os.path.join(ANSIBLE_TEST_CONFIG_ROOT, os.path.basename(inventory_relative_path)) + '.template' template_path = os.path.join(ANSIBLE_TEST_CONFIG_ROOT, os.path.basename(inventory_relative_path)) + '.template'
if issubclass(args.target_type, NetworkInventoryConfig): if issubclass(args.target_type, NetworkInventoryConfig):
inventory_path = os.path.join(data_context().content.root, data_context().content.integration_path, target = args.only_target(NetworkInventoryConfig)
args.only_target(NetworkInventoryConfig).path or os.path.basename(inventory_relative_path)) inventory_path = get_inventory_absolute_path(args, target)
if args.delegate or not target.path:
target.path = inventory_relative_path
else: else:
inventory_path = os.path.join(data_context().content.root, inventory_relative_path) inventory_path = os.path.join(data_context().content.root, inventory_relative_path)

@ -34,6 +34,7 @@ from ...host_configs import (
from . import ( from . import (
command_integration_filter, command_integration_filter,
command_integration_filtered, command_integration_filtered,
get_inventory_absolute_path,
get_inventory_relative_path, get_inventory_relative_path,
check_inventory, check_inventory,
delegate_inventory, delegate_inventory,
@ -52,8 +53,11 @@ def command_windows_integration(args): # type: (WindowsIntegrationConfig) -> No
template_path = os.path.join(ANSIBLE_TEST_CONFIG_ROOT, os.path.basename(inventory_relative_path)) + '.template' template_path = os.path.join(ANSIBLE_TEST_CONFIG_ROOT, os.path.basename(inventory_relative_path)) + '.template'
if issubclass(args.target_type, WindowsInventoryConfig): if issubclass(args.target_type, WindowsInventoryConfig):
inventory_path = os.path.join(data_context().content.root, data_context().content.integration_path, target = args.only_target(WindowsInventoryConfig)
args.only_target(WindowsInventoryConfig).path or os.path.basename(inventory_relative_path)) inventory_path = get_inventory_absolute_path(args, target)
if args.delegate or not target.path:
target.path = inventory_relative_path
else: else:
inventory_path = os.path.join(data_context().content.root, inventory_relative_path) inventory_path = os.path.join(data_context().content.root, inventory_relative_path)

Loading…
Cancel
Save