mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
fall through file source list: first_available_file support
add first_available_file look up to _execute_template and _execute_copy to runner. add this data to playbook handler so it can be included into module_vars
This commit is contained in:
parent
40f5469869
commit
72fd971822
2 changed files with 32 additions and 2 deletions
|
@ -390,8 +390,10 @@ class PlayBook(object):
|
|||
module_args = tokens[1]
|
||||
|
||||
# include task specific vars
|
||||
module_vars = task.get('vars')
|
||||
|
||||
module_vars = task.get('vars', {})
|
||||
if 'first_available_file' in task:
|
||||
module_vars['first_available_file'] = task.get('first_available_file')
|
||||
|
||||
# tasks can be direct (run on all nodes matching
|
||||
# the pattern) or conditional, where they ran
|
||||
# as the result of a change handler on a subset
|
||||
|
|
|
@ -390,6 +390,20 @@ class Runner(object):
|
|||
|
||||
# apply templating to source argument
|
||||
inject = self.setup_cache.get(conn.host,{})
|
||||
|
||||
# if we have first_available_file in our vars
|
||||
# look up the files and use the first one we find as src
|
||||
if 'first_available_file' in self.module_vars:
|
||||
found = False
|
||||
for fn in self.module_vars.get('first_available_file'):
|
||||
fn = utils.template(fn, inject, self.setup_cache)
|
||||
if os.path.exists(fn):
|
||||
source = fn
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
return (host, True, dict(failed=True, msg="could not find src"), '')
|
||||
|
||||
source = utils.template(source, inject, self.setup_cache)
|
||||
|
||||
# transfer the file to a remote tmp location
|
||||
|
@ -480,6 +494,20 @@ class Runner(object):
|
|||
|
||||
# apply templating to source argument so vars can be used in the path
|
||||
inject = self.setup_cache.get(conn.host,{})
|
||||
|
||||
# if we have first_available_file in our vars
|
||||
# look up the files and use the first one we find as src
|
||||
if 'first_available_file' in self.module_vars:
|
||||
found = False
|
||||
for fn in self.module_vars.get('first_available_file'):
|
||||
fn = utils.template(fn, inject, self.setup_cache)
|
||||
if os.path.exists(fn):
|
||||
source = fn
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
return (host, True, dict(failed=True, msg="could not find src"), '')
|
||||
|
||||
source = utils.template(source, inject, self.setup_cache)
|
||||
|
||||
(host, ok, data, err) = (None, None, None, None)
|
||||
|
|
Loading…
Reference in a new issue