Allow ansible-playbook to determine if an invalid limit is specified
This commit is contained in:
parent
cf6f05e71d
commit
2e0472e03b
2 changed files with 34 additions and 4 deletions
|
@ -166,9 +166,23 @@ def main(args):
|
||||||
raise errors.AnsibleError("the playbook: %s does not appear to be a file" % playbook)
|
raise errors.AnsibleError("the playbook: %s does not appear to be a file" % playbook)
|
||||||
|
|
||||||
inventory = ansible.inventory.Inventory(options.inventory, vault_password=vault_pass)
|
inventory = ansible.inventory.Inventory(options.inventory, vault_password=vault_pass)
|
||||||
inventory.subset(options.subset)
|
|
||||||
|
# Note: slightly wrong, this is written so that implicit localhost
|
||||||
|
# (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 in v2
|
||||||
|
no_hosts = False
|
||||||
if len(inventory.list_hosts()) == 0:
|
if len(inventory.list_hosts()) == 0:
|
||||||
utils.warning("provided hosts list is empty")
|
# Empty inventory
|
||||||
|
utils.warning("provided hosts list is empty, only localhost is available")
|
||||||
|
no_hosts = True
|
||||||
|
inventory.subset(options.subset)
|
||||||
|
if len(inventory.list_hosts()) == 0 and no_hosts is False:
|
||||||
|
# Invalid limit
|
||||||
|
raise errors.AnsibleError("Specified --limit does not match any hosts")
|
||||||
|
|
||||||
# run all playbooks specified on the command line
|
# run all playbooks specified on the command line
|
||||||
for playbook in args:
|
for playbook in args:
|
||||||
|
|
|
@ -15,7 +15,9 @@ from ansible.playbook.task import Task
|
||||||
from ansible.utils.cli import base_parser
|
from ansible.utils.cli import base_parser
|
||||||
from ansible.utils.vars import combine_vars
|
from ansible.utils.vars import combine_vars
|
||||||
from ansible.vars import VariableManager
|
from ansible.vars import VariableManager
|
||||||
from ansible.utils import warning
|
|
||||||
|
# Implement an ansible.utils.warning() function later
|
||||||
|
warning = print
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -137,9 +139,23 @@ def main(args):
|
||||||
|
|
||||||
# create the inventory, and filter it based on the subset specified (if any)
|
# create the inventory, and filter it based on the subset specified (if any)
|
||||||
inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=options.inventory)
|
inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=options.inventory)
|
||||||
inventory.subset(options.subset)
|
|
||||||
|
# Note: slightly wrong, this is written so that implicit localhost
|
||||||
|
# (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())
|
||||||
|
no_hosts = False
|
||||||
if len(inventory.list_hosts()) == 0:
|
if len(inventory.list_hosts()) == 0:
|
||||||
|
# Empty inventory
|
||||||
warning("provided hosts list is empty, only localhost is available")
|
warning("provided hosts list is empty, only localhost is available")
|
||||||
|
no_hosts = True
|
||||||
|
inventory.subset(options.subset)
|
||||||
|
if len(inventory.list_hosts()) == 0 and no_hosts is False:
|
||||||
|
# Invalid limit
|
||||||
|
raise errors.AnsibleError("Specified --limit does not match any hosts")
|
||||||
|
|
||||||
# create the playbook executor, which manages running the plays
|
# create the playbook executor, which manages running the plays
|
||||||
# via a task queue manager
|
# via a task queue manager
|
||||||
|
|
Loading…
Reference in a new issue