mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
adds feature to allow connection to set action plugin (#18762)
Connection plugin can define default action plugin to use by providing action_handler instance variable. This will override the default action plugin normal
This commit is contained in:
parent
0cef38cf02
commit
ad99d52679
2 changed files with 10 additions and 1 deletions
|
@ -762,7 +762,8 @@ class TaskExecutor:
|
||||||
raise AnsibleError("async mode is not supported with the %s module" % self._task.action)
|
raise AnsibleError("async mode is not supported with the %s module" % self._task.action)
|
||||||
handler_name = self._task.action
|
handler_name = self._task.action
|
||||||
elif self._task.async == 0:
|
elif self._task.async == 0:
|
||||||
handler_name = 'normal'
|
pc_conn = self._shared_loader_obj.connection_loader.get(self._play_context.connection, class_only=True)
|
||||||
|
handler_name = getattr(pc_conn, 'action_handler', 'normal')
|
||||||
else:
|
else:
|
||||||
handler_name = 'async'
|
handler_name = 'async'
|
||||||
|
|
||||||
|
|
|
@ -30,12 +30,19 @@ from ansible.plugins import terminal_loader
|
||||||
from ansible.plugins.connection import ensure_connect
|
from ansible.plugins.connection import ensure_connect
|
||||||
from ansible.plugins.connection.paramiko_ssh import Connection as _Connection
|
from ansible.plugins.connection.paramiko_ssh import Connection as _Connection
|
||||||
|
|
||||||
|
try:
|
||||||
|
from __main__ import display
|
||||||
|
except ImportError:
|
||||||
|
from ansible.utils.display import Display
|
||||||
|
display = Display()
|
||||||
|
|
||||||
|
|
||||||
class Connection(_Connection):
|
class Connection(_Connection):
|
||||||
''' CLI (shell) SSH connections on Paramiko '''
|
''' CLI (shell) SSH connections on Paramiko '''
|
||||||
|
|
||||||
transport = 'network_cli'
|
transport = 'network_cli'
|
||||||
has_pipelining = False
|
has_pipelining = False
|
||||||
|
action_handler = 'network'
|
||||||
|
|
||||||
def __init__(self, play_context, new_stdin, *args, **kwargs):
|
def __init__(self, play_context, new_stdin, *args, **kwargs):
|
||||||
super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs)
|
super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs)
|
||||||
|
@ -97,6 +104,7 @@ class Connection(_Connection):
|
||||||
self._terminal.on_authorize(passwd=auth_pass)
|
self._terminal.on_authorize(passwd=auth_pass)
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
display.vvv('closing connection', host=self._play_context.remote_addr)
|
||||||
self.close_shell()
|
self.close_shell()
|
||||||
super(Connection, self).close()
|
super(Connection, self).close()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue