Implement default omit correctly
This commit is contained in:
parent
0b4d7f1574
commit
bce6642ab6
2 changed files with 11 additions and 9 deletions
|
@ -870,10 +870,6 @@ class Runner(object):
|
||||||
if type(module_args) == dict:
|
if type(module_args) == dict:
|
||||||
new_args = []
|
new_args = []
|
||||||
for (k, v) in module_args.iteritems():
|
for (k, v) in module_args.iteritems():
|
||||||
# see if the value is OMIT_PLACE_HOLDER, if it is, skip it
|
|
||||||
arg_value = template.template(self.basedir, v, inject, fail_on_undefined=self.error_on_undefined_vars)
|
|
||||||
if arg_value.strip() == OMIT_PLACE_HOLDER:
|
|
||||||
continue
|
|
||||||
new_args.append("%s='%s'" % (k, v))
|
new_args.append("%s='%s'" % (k, v))
|
||||||
module_args = ' '.join(new_args)
|
module_args = ' '.join(new_args)
|
||||||
|
|
||||||
|
@ -897,6 +893,13 @@ class Runner(object):
|
||||||
except jinja2.exceptions.UndefinedError, e:
|
except jinja2.exceptions.UndefinedError, e:
|
||||||
raise errors.AnsibleUndefinedVariable("One or more undefined variables: %s" % str(e))
|
raise errors.AnsibleUndefinedVariable("One or more undefined variables: %s" % str(e))
|
||||||
|
|
||||||
|
# filter omitted arguments out
|
||||||
|
new_complex_args = {}
|
||||||
|
for key, value in complex_args.iteritems():
|
||||||
|
if value == OMIT_PLACE_HOLDER:
|
||||||
|
continue
|
||||||
|
new_complex_args[key] = value
|
||||||
|
complex_args = new_complex_args
|
||||||
|
|
||||||
result = handler.run(conn, tmp, module_name, module_args, inject, complex_args)
|
result = handler.run(conn, tmp, module_name, module_args, inject, complex_args)
|
||||||
# Code for do until feature
|
# Code for do until feature
|
||||||
|
|
|
@ -32,6 +32,7 @@ from ansible.utils import md5s, OMIT_PLACE_HOLDER
|
||||||
from distutils.version import LooseVersion, StrictVersion
|
from distutils.version import LooseVersion, StrictVersion
|
||||||
from random import SystemRandom
|
from random import SystemRandom
|
||||||
from jinja2.filters import environmentfilter
|
from jinja2.filters import environmentfilter
|
||||||
|
from jinja2.runtime import Undefined
|
||||||
|
|
||||||
|
|
||||||
def to_nice_yaml(*a, **kw):
|
def to_nice_yaml(*a, **kw):
|
||||||
|
@ -237,12 +238,10 @@ def rand(environment, end, start=None, step=None):
|
||||||
else:
|
else:
|
||||||
raise errors.AnsibleFilterError('random can only be used on sequences and integers')
|
raise errors.AnsibleFilterError('random can only be used on sequences and integers')
|
||||||
|
|
||||||
|
|
||||||
def default_omit(a):
|
def default_omit(a):
|
||||||
try:
|
if isinstance(a, Undefined):
|
||||||
a
|
|
||||||
except NameError:
|
|
||||||
return OMIT_PLACE_HOLDER
|
return OMIT_PLACE_HOLDER
|
||||||
else:
|
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue