diff options
author | Brian Coca <bcoca@users.noreply.github.com> | 2017-08-29 09:47:40 -0400 |
---|---|---|
committer | Brian Coca <brian.coca+git@gmail.com> | 2017-08-29 09:50:10 -0400 |
commit | 0777565a294630477fb4f4be3b54362c2a47eeb1 (patch) | |
tree | c94ceb36055bc16b96de83aaec5e1495a4d1d3bc | |
parent | 3adb5a62e057c36f42f56eb2591c5c72e3f68557 (diff) | |
download | ansible-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.py | 10 | ||||
-rw-r--r-- | lib/ansible/plugins/action/__init__.py | 3 |
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 |