Commit bce6642a by Victor Lin Committed by James Cammarata

Implement default omit correctly

parent 0b4d7f15
...@@ -870,10 +870,6 @@ class Runner(object): ...@@ -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): ...@@ -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 ...@@ -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,13 +238,11 @@ def rand(environment, end, start=None, step=None): ...@@ -237,13 +238,11 @@ 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
class FilterModule(object): class FilterModule(object):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment