summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <brian.coca+git@gmail.com>2015-12-05 15:59:51 -0500
committerBrian Coca <brian.coca+git@gmail.com>2015-12-05 15:59:51 -0500
commitd04d5bf0d56c9c9bd191c10143d1e9b9bb0df4ce (patch)
tree5489bdf6ddccdc5ed46a2a98ebab4c6d56a53d3f
parent8a733d990f261d35930445ca5a37abc2dd6a246c (diff)
downloadansible-d04d5bf0d56c9c9bd191c10143d1e9b9bb0df4ce.tar.gz
only set become defaults at last possible moment
tasks were overriding commandline with their defaults, not with the explicit setting, removed the setting of defaults from task init and pushed down to play context at last possible moment. fixes #13362
-rw-r--r--lib/ansible/playbook/become.py16
-rw-r--r--lib/ansible/playbook/play_context.py3
2 files changed, 12 insertions, 7 deletions
diff --git a/lib/ansible/playbook/become.py b/lib/ansible/playbook/become.py
index 643f2b555d..1e579751d4 100644
--- a/lib/ansible/playbook/become.py
+++ b/lib/ansible/playbook/become.py
@@ -90,16 +90,18 @@ class Become:
display.deprecated("Instead of su/su_user, use become/become_user and set become_method to 'su' (default is sudo)")
- # if we are becoming someone else, but some fields are unset,
- # make sure they're initialized to the default config values
- if ds.get('become', False):
- if ds.get('become_method', None) is None:
- ds['become_method'] = C.DEFAULT_BECOME_METHOD
- if ds.get('become_user', None) is None:
- ds['become_user'] = C.DEFAULT_BECOME_USER
return ds
+ def set_become_defaults(self, become, become_method, become_user):
+ ''' if we are becoming someone else, but some fields are unset,
+ make sure they're initialized to the default config values '''
+ if become:
+ if become_method is None:
+ become_method = C.DEFAULT_BECOME_METHOD
+ if become_user is None:
+ become_user = C.DEFAULT_BECOME_USER
+
def _get_attr_become(self):
'''
Override for the 'become' getattr fetcher, used from Base.
diff --git a/lib/ansible/playbook/play_context.py b/lib/ansible/playbook/play_context.py
index 5c02093980..9320a23ed9 100644
--- a/lib/ansible/playbook/play_context.py
+++ b/lib/ansible/playbook/play_context.py
@@ -392,6 +392,9 @@ class PlayContext(Base):
if new_info.no_log is None:
new_info.no_log = C.DEFAULT_NO_LOG
+ # set become defaults if not previouslly set
+ task.set_become_defaults(new_info.become, new_info.become_method, new_info.become_user)
+
return new_info
def make_become_cmd(self, cmd, executable=None):