1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Local actions, they're like aliases for actions with localhost

delegates.

Closes #905
This commit is contained in:
Tim Bielawa 2012-08-19 16:52:55 -04:00 committed by Michael DeHaan
parent 8b06c07bb7
commit 4121109665

View file

@ -18,20 +18,22 @@
from ansible import errors from ansible import errors
from ansible import utils from ansible import utils
class Task(object): class Task(object):
__slots__ = [ __slots__ = [
'name', 'action', 'only_if', 'async_seconds', 'async_poll_interval', 'name', 'action', 'only_if', 'async_seconds', 'async_poll_interval',
'notify', 'module_name', 'module_args', 'module_vars', 'notify', 'module_name', 'module_args', 'module_vars',
'play', 'notified_by', 'tags', 'register', 'with_items', 'play', 'notified_by', 'tags', 'register', 'with_items',
'delegate_to', 'first_available_file', 'ignore_errors' 'delegate_to', 'first_available_file', 'ignore_errors',
'local_action'
] ]
# to prevent typos and such # to prevent typos and such
VALID_KEYS = [ VALID_KEYS = [
'name', 'action', 'only_if', 'async', 'poll', 'notify', 'with_items', 'name', 'action', 'only_if', 'async', 'poll', 'notify', 'with_items',
'first_available_file', 'include', 'tags', 'register', 'ignore_errors', 'first_available_file', 'include', 'tags', 'register', 'ignore_errors',
'delegate_to' 'delegate_to', 'local_action'
] ]
def __init__(self, play, ds, module_vars=None): def __init__(self, play, ds, module_vars=None):
@ -46,10 +48,23 @@ class Task(object):
# load various attributes # load various attributes
self.name = ds.get('name', None) self.name = ds.get('name', None)
self.action = ds.get('action', '')
self.tags = [ 'all' ] self.tags = [ 'all' ]
self.register = ds.get('register', None) self.register = ds.get('register', None)
# Both are defined
if ('action' in ds) and ('local_action' in ds):
raise errors.AnsibleError("the 'action' and 'local_action' attributes can not be used together")
# Both are NOT defined
elif (not 'action' in ds) and (not 'local_action' in ds):
raise errors.AnsibleError("task missing an 'action' attribute")
# Only one of them is defined
elif 'local_action' in ds:
self.action = ds.get('local_action', '')
self.delegate_to = '127.0.0.1'
else:
self.action = ds.get('action', '')
self.delegate_to = ds.get('delegate_to', None)
# notified by is used by Playbook code to flag which hosts # notified by is used by Playbook code to flag which hosts
# need to run a notifier # need to run a notifier
self.notified_by = [] self.notified_by = []
@ -65,7 +80,6 @@ class Task(object):
self.notify = ds.get('notify', []) self.notify = ds.get('notify', [])
self.first_available_file = ds.get('first_available_file', None) self.first_available_file = ds.get('first_available_file', None)
self.with_items = ds.get('with_items', None) self.with_items = ds.get('with_items', None)
self.delegate_to = ds.get('delegate_to', None)
self.ignore_errors = ds.get('ignore_errors', False) self.ignore_errors = ds.get('ignore_errors', False)