Plays and tasks now yell when they see parameters they do not understand, so that typos like 'var' for 'vars'
don't result in people having to ask questions about what is wrong with their playbook
This commit is contained in:
parent
e4a546e8bb
commit
3c2cbae68e
3 changed files with 23 additions and 0 deletions
|
@ -30,6 +30,7 @@ Ansible Changes By Release
|
||||||
* ec2 inventory script
|
* ec2 inventory script
|
||||||
* mount module
|
* mount module
|
||||||
* apt module now passes DEBIAN_FRONTEND=noninteractive
|
* apt module now passes DEBIAN_FRONTEND=noninteractive
|
||||||
|
* to catch typos, like 'var' for 'vars', playbooks and tasks now yell on invalid parameters
|
||||||
|
|
||||||
0.5 "Amsterdam" ------- July 04, 2012
|
0.5 "Amsterdam" ------- July 04, 2012
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,23 @@ class Play(object):
|
||||||
'tags', 'gather_facts', '_ds', '_handlers', '_tasks'
|
'tags', 'gather_facts', '_ds', '_handlers', '_tasks'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# to catch typos and so forth -- these are userland names
|
||||||
|
# and don't line up 1:1 with how they are stored
|
||||||
|
VALID_KEYS = [
|
||||||
|
'hosts', 'name', 'vars', 'vars_prompt', 'vars_files',
|
||||||
|
'tasks', 'handlers', 'user', 'port', 'include',
|
||||||
|
'sudo', 'sudo_user', 'connection', 'tags', 'gather_facts'
|
||||||
|
]
|
||||||
|
|
||||||
# *************************************************
|
# *************************************************
|
||||||
|
|
||||||
def __init__(self, playbook, ds):
|
def __init__(self, playbook, ds):
|
||||||
''' constructor loads from a play datastructure '''
|
''' constructor loads from a play datastructure '''
|
||||||
|
|
||||||
|
for x in ds.keys():
|
||||||
|
if not x in Play.VALID_KEYS:
|
||||||
|
raise errors.AnsibleError("%s is not a legal parameter in an Ansible Playbook" % x)
|
||||||
|
|
||||||
# TODO: more error handling
|
# TODO: more error handling
|
||||||
|
|
||||||
hosts = ds.get('hosts')
|
hosts = ds.get('hosts')
|
||||||
|
|
|
@ -26,9 +26,19 @@ class Task(object):
|
||||||
'play', 'notified_by', 'tags', 'with_items', 'first_available_file'
|
'play', 'notified_by', 'tags', 'with_items', 'first_available_file'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# to prevent typos and such
|
||||||
|
VALID_KEYS = [
|
||||||
|
'name', 'action', 'only_if', 'async', 'poll', 'notify', 'with_items', 'first_available_file',
|
||||||
|
'include', 'tags'
|
||||||
|
]
|
||||||
|
|
||||||
def __init__(self, play, ds, module_vars=None):
|
def __init__(self, play, ds, module_vars=None):
|
||||||
''' constructor loads from a task or handler datastructure '''
|
''' constructor loads from a task or handler datastructure '''
|
||||||
|
|
||||||
|
for x in ds.keys():
|
||||||
|
if not x in Task.VALID_KEYS:
|
||||||
|
raise errors.AnsibleError("%s is not a legal parameter in an Ansible task or handler" % x)
|
||||||
|
|
||||||
self.module_vars = module_vars
|
self.module_vars = module_vars
|
||||||
self.play = play
|
self.play = play
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue