summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <bcoca@users.noreply.github.com>2017-08-29 09:47:40 -0400
committerBrian Coca <brian.coca+git@gmail.com>2017-08-29 09:50:10 -0400
commit0777565a294630477fb4f4be3b54362c2a47eeb1 (patch)
treec94ceb36055bc16b96de83aaec5e1495a4d1d3bc
parent3adb5a62e057c36f42f56eb2591c5c72e3f68557 (diff)
downloadansible-0777565a294630477fb4f4be3b54362c2a47eeb1.tar.gz
allow pesky 'bridge' facts to bypass facts filter (#28401)
* allow pesky 'bridge' facts to bypass facts filter fixes #27729, #23577 * I ate pepe (cherry picked from commit c06f8a3f9b7eccffe88e18c2b6814536996d172b)
-rw-r--r--lib/ansible/playbook/task.py10
-rw-r--r--lib/ansible/plugins/action/__init__.py3
2 files changed, 8 insertions, 5 deletions
diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py
index 74b8f79a7c..ce8ed7e07c 100644
--- a/lib/ansible/playbook/task.py
+++ b/lib/ansible/playbook/task.py
@@ -25,7 +25,7 @@ from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVar
from ansible.module_utils.six import iteritems, string_types
from ansible.module_utils._text import to_native
from ansible.parsing.mod_args import ModuleArgsParser
-from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject, AnsibleMapping, AnsibleUnicode
+from ansible.parsing.yaml.objects import AnsibleBaseYAMLObject, AnsibleMapping
from ansible.plugins import lookup_loader
from ansible.playbook.attribute import FieldAttribute
from ansible.playbook.base import Base
@@ -205,10 +205,10 @@ class Task(Base, Conditional, Taggable, Become):
for (k,v) in iteritems(ds):
if k in ('action', 'local_action', 'args', 'delegate_to') or k == action or k == 'shell':
- # we don't want to re-assign these values, which were
- # determined by the ModuleArgsParser() above
+ # we don't want to re-assign these values, which were determined by the ModuleArgsParser() above
continue
elif k.replace("with_", "") in lookup_loader:
+ # transform into loop property
self._preprocess_loop(ds, new_ds, k, v)
else:
# pre-2.0 syntax allowed variables for include statements at the
@@ -220,8 +220,10 @@ class Task(Base, Conditional, Taggable, Become):
" Please see:\nhttp://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse\n\n"
" for currently supported syntax regarding included files and variables")
new_ds['vars'][k] = v
- else:
+ elif k in self._valid_attrs:
new_ds[k] = v
+ else:
+ display.warning("Ignoring invalid attribute: %s" % k)
return super(Task, self).preprocess_data(new_ds)
diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py
index 5690dabd44..45a256b24f 100644
--- a/lib/ansible/plugins/action/__init__.py
+++ b/lib/ansible/plugins/action/__init__.py
@@ -789,7 +789,8 @@ class ActionBase(with_metaclass(ABCMeta, object)):
conn_name = os.path.splitext(os.path.basename(conn_path))[0]
re_key = re.compile('^ansible_%s_' % conn_name)
for fact_key in fact_keys:
- if re_key.match(fact_key):
+ # exception for lvm tech, whic normally returns asnible_x_bridge facts that get filterd out (docker,lxc, etc)
+ if re_key.match(fact_key) and not fact_key.endswith(('_bridge', '_gwbridge')):
remove_keys.add(fact_key)
except AttributeError:
pass