From 149aa767fff58ad1616300a389ae56f61fe9ebbd Mon Sep 17 00:00:00 2001 From: Nathaniel Case Date: Wed, 29 Aug 2018 16:33:51 -0400 Subject: [PATCH] Setting options is fine if plugins already exist (#44859) --- lib/ansible/plugins/connection/__init__.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/ansible/plugins/connection/__init__.py b/lib/ansible/plugins/connection/__init__.py index da4a9b4ded..90265398da 100644 --- a/lib/ansible/plugins/connection/__init__.py +++ b/lib/ansible/plugins/connection/__init__.py @@ -319,8 +319,7 @@ class NetworkConnectionBase(ConnectionBase): raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name)) def _connect(self): - for plugin in self._implementation_plugins: - plugin.set_options(*self._cached_variables) + self.set_implementation_plugin_options(*self._cached_variables) self._cached_variables = (None, None, None) def exec_command(self, cmd, in_data=None, sudoable=True): @@ -350,7 +349,18 @@ class NetworkConnectionBase(ConnectionBase): def set_options(self, task_keys=None, var_options=None, direct=None): super(NetworkConnectionBase, self).set_options(task_keys=task_keys, var_options=var_options, direct=direct) - self._cached_variables = (task_keys, var_options, direct) + + if self._implementation_plugins: + self.set_implementation_plugin_options(task_keys, var_options, direct) + else: + self._cached_variables = (task_keys, var_options, direct) + + def set_implementation_plugin_options(self, task_keys=None, var_options=None, direct=None): + ''' + initialize implementation plugin options + ''' + for plugin in self._implementation_plugins: + plugin.set_options(task_keys=task_keys, var_options=var_options, direct=direct) def _update_connection_state(self): '''