From 297259725a1cf9ad6f152c73e9ae03c0058463be Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Thu, 28 Feb 2013 14:12:36 +0100 Subject: [PATCH] Allow (local_)action: to be a dict Use the key module: to set which module to invoke. --- lib/ansible/playbook/task.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py index 7b0d5460af..a74971e673 100644 --- a/lib/ansible/playbook/task.py +++ b/lib/ansible/playbook/task.py @@ -115,6 +115,14 @@ class Task(object): self.delegate_to = ds.get('delegate_to', None) self.transport = ds.get('connection', ds.get('transport', play.transport)) + if isinstance(self.action, dict): + if 'module' not in self.action: + raise errors.AnsibleError("'module' attribute missing from action in task \"%s\"" % ds.get('name', '%s' % self.action)) + if self.args: + raise errors.AnsibleError("'args' cannot be combined with dict 'action' in task \"%s\"" % ds.get('name', '%s' % self.action)) + self.args = self.action + self.action = self.args.pop('module') + # delegate_to can use variables if not (self.delegate_to is None): # delegate_to: localhost should use local transport