diff options
author | Peter Sprygada <privateip@users.noreply.github.com> | 2016-12-15 15:47:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-15 15:47:39 -0500 |
commit | ad99d526795e21d8b26af8b70e80b6b83b782de2 (patch) | |
tree | d684a5acdea323f1a8d2dd9ce261da8421908613 | |
parent | 0cef38cf02f3bd4cc678201f7a10eb80464d8a72 (diff) | |
download | ansible-ad99d526795e21d8b26af8b70e80b6b83b782de2.tar.gz |
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
-rw-r--r-- | lib/ansible/executor/task_executor.py | 3 | ||||
-rw-r--r-- | lib/ansible/plugins/connection/network_cli.py | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py index 8a3a37e6c8..7c710e6543 100644 --- a/lib/ansible/executor/task_executor.py +++ b/lib/ansible/executor/task_executor.py @@ -762,7 +762,8 @@ class TaskExecutor: raise AnsibleError("async mode is not supported with the %s module" % self._task.action) handler_name = self._task.action 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: handler_name = 'async' diff --git a/lib/ansible/plugins/connection/network_cli.py b/lib/ansible/plugins/connection/network_cli.py index b65c2ba7b6..6cec05a510 100644 --- a/lib/ansible/plugins/connection/network_cli.py +++ b/lib/ansible/plugins/connection/network_cli.py @@ -30,12 +30,19 @@ from ansible.plugins import terminal_loader from ansible.plugins.connection import ensure_connect 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): ''' CLI (shell) SSH connections on Paramiko ''' transport = 'network_cli' has_pipelining = False + action_handler = 'network' def __init__(self, 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) def close(self): + display.vvv('closing connection', host=self._play_context.remote_addr) self.close_shell() super(Connection, self).close() |