* Restore behavior for detecting only localhost, and no limit match. Fixes #52152 * Add test for non-matching limit
This commit is contained in:
parent
847d089d6b
commit
cdb53ff1a4
5 changed files with 27 additions and 4 deletions
|
@ -477,9 +477,6 @@ class CLI(with_metaclass(ABCMeta, object)):
|
|||
|
||||
# create the inventory, and filter it based on the subset specified (if any)
|
||||
inventory = InventoryManager(loader=loader, sources=options['inventory'])
|
||||
subset = options.get('subset', False)
|
||||
if subset:
|
||||
inventory.subset(subset)
|
||||
|
||||
# create the variable manager, which will be shared throughout
|
||||
# the code, ensuring a consistent view of global variables
|
||||
|
@ -497,8 +494,10 @@ class CLI(with_metaclass(ABCMeta, object)):
|
|||
display.warning("provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'")
|
||||
no_hosts = True
|
||||
|
||||
inventory.subset(subset)
|
||||
|
||||
hosts = inventory.list_hosts(pattern)
|
||||
if len(hosts) == 0 and no_hosts is False:
|
||||
if not hosts and no_hosts is False:
|
||||
raise AnsibleError("Specified hosts and/or --limit does not match any hosts")
|
||||
|
||||
return hosts
|
||||
|
|
|
@ -99,6 +99,14 @@ class PlaybookCLI(CLI):
|
|||
# create base objects
|
||||
loader, inventory, variable_manager = self._play_prereqs()
|
||||
|
||||
# (which is not returned in list_hosts()) is taken into account for
|
||||
# warning if inventory is empty. But it can't be taken into account for
|
||||
# checking if limit doesn't match any hosts. Instead we don't worry about
|
||||
# limit if only implicit localhost was in inventory to start with.
|
||||
#
|
||||
# Fix this when we rewrite inventory by making localhost a real host (and thus show up in list_hosts())
|
||||
CLI.get_host_list(inventory, context.CLIARGS['subset'])
|
||||
|
||||
# flush fact cache if requested
|
||||
if context.CLIARGS['flush_cache']:
|
||||
self._flush_cache(inventory, variable_manager)
|
||||
|
|
1
test/integration/targets/inventory/aliases
Normal file
1
test/integration/targets/inventory/aliases
Normal file
|
@ -0,0 +1 @@
|
|||
shippable/posix/group3
|
4
test/integration/targets/inventory/playbook.yml
Normal file
4
test/integration/targets/inventory/playbook.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ping:
|
11
test/integration/targets/inventory/runme.sh
Executable file
11
test/integration/targets/inventory/runme.sh
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
|
||||
# https://github.com/ansible/ansible/issues/52152
|
||||
# Ensure that non-matching limit causes failure with rc 1
|
||||
ansible-playbook -i ../../inventory --limit foo playbook.yml
|
||||
if [ "$?" != "1" ]; then
|
||||
echo "Non-matching limit should cause failure"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in a new issue