From ae91cdfc9801491242c804dffc16b522510f63c2 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Tue, 25 Aug 2015 10:15:32 -0400 Subject: [PATCH] fixed environment inheritance --- lib/ansible/playbook/block.py | 6 ++---- lib/ansible/playbook/task.py | 9 +++++---- lib/ansible/plugins/action/__init__.py | 2 ++ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/ansible/playbook/block.py b/lib/ansible/playbook/block.py index 006ac828fe..6f49204414 100644 --- a/lib/ansible/playbook/block.py +++ b/lib/ansible/playbook/block.py @@ -310,11 +310,9 @@ class Block(Base, Become, Conditional, Taggable): ''' Override for the 'tags' getattr fetcher, used from Base. ''' - environment = self._attributes['tags'] + environment = self._attributes['environment'] if environment is None: - environment = dict() - - environment = self._get_parent_attribute('environment', extend=True) + environment = self._get_parent_attribute('environment', extend=True) return environment diff --git a/lib/ansible/playbook/task.py b/lib/ansible/playbook/task.py index ee6bbbacba..2eda23a7d7 100644 --- a/lib/ansible/playbook/task.py +++ b/lib/ansible/playbook/task.py @@ -218,6 +218,9 @@ class Task(Base, Conditional, Taggable, Become): Override post validation of vars on the play, as we don't want to template these too early. ''' + if value is None: + return dict() + for env_item in value: if isinstance(env_item, (string_types, AnsibleUnicode)) and env_item in templar._available_variables.keys(): self._display.deprecated("Using bare variables for environment is deprecated. Update your playbooks so that the environment value uses the full variable syntax ('{{foo}}')") @@ -347,11 +350,9 @@ class Task(Base, Conditional, Taggable, Become): ''' Override for the 'tags' getattr fetcher, used from Base. ''' - environment = self._attributes['tags'] + environment = self._attributes['environment'] if environment is None: - environment = dict() - - environment = self._get_parent_attribute('environment', extend=True) + environment = self._get_parent_attribute('environment') return environment diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py index 58276d8f8e..6cea019ce1 100644 --- a/lib/ansible/plugins/action/__init__.py +++ b/lib/ansible/plugins/action/__init__.py @@ -116,6 +116,8 @@ class ActionBase: environments = [ environments ] for environment in environments: + if environment is None: + continue if not isinstance(environment, dict): raise AnsibleError("environment must be a dictionary, received %s (%s)" % (environment, type(environment))) # very deliberatly using update here instead of combine_vars, as