Move plugin option settings. (#44774)
* Move plugin option settings. * Add default value and clear after use.
This commit is contained in:
parent
0c3216c565
commit
86f96d0212
5 changed files with 17 additions and 15 deletions
|
@ -105,10 +105,6 @@ class ConnectionProcess(object):
|
||||||
self.connection.set_options(var_options=variables)
|
self.connection.set_options(var_options=variables)
|
||||||
self.connection._connect()
|
self.connection._connect()
|
||||||
|
|
||||||
# implementation plugins are updated while connection initialization
|
|
||||||
if hasattr(self.connection, 'set_implementation_plugin_options'):
|
|
||||||
self.connection.set_implementation_plugin_options(var_options=variables)
|
|
||||||
|
|
||||||
self.connection._socket_path = self.socket_path
|
self.connection._socket_path = self.socket_path
|
||||||
self.srv.register(self.connection)
|
self.srv.register(self.connection)
|
||||||
messages.extend(sys.stdout.getvalue().splitlines())
|
messages.extend(sys.stdout.getvalue().splitlines())
|
||||||
|
|
|
@ -301,6 +301,7 @@ class NetworkConnectionBase(ConnectionBase):
|
||||||
self._local.set_options()
|
self._local.set_options()
|
||||||
|
|
||||||
self._implementation_plugins = []
|
self._implementation_plugins = []
|
||||||
|
self._cached_variables = (None, None, None)
|
||||||
|
|
||||||
# reconstruct the socket_path and set instance values accordingly
|
# reconstruct the socket_path and set instance values accordingly
|
||||||
self._ansible_playbook_pid = kwargs.get('ansible_playbook_pid')
|
self._ansible_playbook_pid = kwargs.get('ansible_playbook_pid')
|
||||||
|
@ -317,6 +318,11 @@ class NetworkConnectionBase(ConnectionBase):
|
||||||
return method
|
return method
|
||||||
raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
|
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._cached_variables = (None, None, None)
|
||||||
|
|
||||||
def exec_command(self, cmd, in_data=None, sudoable=True):
|
def exec_command(self, cmd, in_data=None, sudoable=True):
|
||||||
return self._local.exec_command(cmd, in_data, sudoable)
|
return self._local.exec_command(cmd, in_data, sudoable)
|
||||||
|
|
||||||
|
@ -344,14 +350,7 @@ class NetworkConnectionBase(ConnectionBase):
|
||||||
|
|
||||||
def set_options(self, task_keys=None, var_options=None, direct=None):
|
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)
|
super(NetworkConnectionBase, self).set_options(task_keys=task_keys, var_options=var_options, direct=direct)
|
||||||
self.set_implementation_plugin_options(task_keys=task_keys, var_options=var_options, direct=direct)
|
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):
|
def _update_connection_state(self):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -206,10 +206,8 @@ class Connection(NetworkConnectionBase):
|
||||||
|
|
||||||
httpapi = httpapi_loader.get(self._network_os, self)
|
httpapi = httpapi_loader.get(self._network_os, self)
|
||||||
if httpapi:
|
if httpapi:
|
||||||
display.vvvv('loaded API plugin for network_os %s' % self._network_os, host=self._play_context.remote_addr)
|
display.vvvv('loaded API plugin for network_os %s' % self._network_os, host=host)
|
||||||
self._implementation_plugins.append(httpapi)
|
self._implementation_plugins.append(httpapi)
|
||||||
httpapi.set_become(self._play_context)
|
|
||||||
httpapi.login(self.get_option('remote_user'), self.get_option('password'))
|
|
||||||
else:
|
else:
|
||||||
raise AnsibleConnectionFailure('unable to load API plugin for network_os %s' % self._network_os)
|
raise AnsibleConnectionFailure('unable to load API plugin for network_os %s' % self._network_os)
|
||||||
|
|
||||||
|
@ -220,6 +218,11 @@ class Connection(NetworkConnectionBase):
|
||||||
else:
|
else:
|
||||||
display.vvvv('unable to load cliconf for network_os %s' % self._network_os)
|
display.vvvv('unable to load cliconf for network_os %s' % self._network_os)
|
||||||
|
|
||||||
|
super(Connection, self)._connect()
|
||||||
|
|
||||||
|
httpapi.set_become(self._play_context)
|
||||||
|
httpapi.login(self.get_option('remote_user'), self.get_option('password'))
|
||||||
|
|
||||||
self._connected = True
|
self._connected = True
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
|
|
@ -307,6 +307,8 @@ class Connection(NetworkConnectionBase):
|
||||||
display.display('unable to load netconf plugin for network_os %s, falling back to default plugin' % self._network_os)
|
display.display('unable to load netconf plugin for network_os %s, falling back to default plugin' % self._network_os)
|
||||||
self._implementation_plugins.append(netconf)
|
self._implementation_plugins.append(netconf)
|
||||||
|
|
||||||
|
super(Connection, self)._connect()
|
||||||
|
|
||||||
return 0, to_bytes(self._manager.session_id, errors='surrogate_or_strict'), b''
|
return 0, to_bytes(self._manager.session_id, errors='surrogate_or_strict'), b''
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
|
|
@ -300,6 +300,8 @@ class Connection(NetworkConnectionBase):
|
||||||
else:
|
else:
|
||||||
display.vvvv('unable to load cliconf for network_os %s' % self._network_os)
|
display.vvvv('unable to load cliconf for network_os %s' % self._network_os)
|
||||||
|
|
||||||
|
super(Connection, self)._connect()
|
||||||
|
|
||||||
self.receive(prompts=self._terminal.terminal_initial_prompt, answer=self._terminal.terminal_initial_answer,
|
self.receive(prompts=self._terminal.terminal_initial_prompt, answer=self._terminal.terminal_initial_answer,
|
||||||
newline=self._terminal.terminal_inital_prompt_newline)
|
newline=self._terminal.terminal_inital_prompt_newline)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue