mirror of https://github.com/ansible/ansible.git
Fix traceback inheriting from NetworkConnectionBase and add integration tests (#82954)
Co-authored-by: Jeroen van Bemmel <jvb127@gmail.com>pull/82881/merge
parent
478e139195
commit
4bddbe69d5
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- Fix check for missing _sub_plugin attribute in older connection plugins (https://github.com/ansible/ansible/pull/82954)
|
@ -0,0 +1,95 @@
|
||||
# (c) 2024 Red Hat Inc.
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
DOCUMENTATION = """
|
||||
connection: network_noop
|
||||
author: ansible-core
|
||||
short_description: legacy-ish connection plugin with only minimal config
|
||||
description:
|
||||
- A wrapper around NetworkConnectionBase to test that the default attributes don't cause internal errors in TE.
|
||||
options:
|
||||
persistent_log_messages:
|
||||
type: boolean
|
||||
description:
|
||||
- This flag will enable logging the command executed and response received from
|
||||
target device in the ansible log file. For this option to work 'log_path' ansible
|
||||
configuration option is required to be set to a file path with write access.
|
||||
- Be sure to fully understand the security implications of enabling this
|
||||
option as it could create a security vulnerability by logging sensitive information in log file.
|
||||
default: False
|
||||
ini:
|
||||
- section: persistent_connection
|
||||
key: log_messages
|
||||
env:
|
||||
- name: ANSIBLE_PERSISTENT_LOG_MESSAGES
|
||||
vars:
|
||||
- name: ansible_persistent_log_messages
|
||||
persistent_command_timeout:
|
||||
type: int
|
||||
description:
|
||||
- Configures, in seconds, the amount of time to wait for a command to
|
||||
return from the remote device. If this timer is exceeded before the
|
||||
command returns, the connection plugin will raise an exception and
|
||||
close.
|
||||
default: 30
|
||||
ini:
|
||||
- section: persistent_connection
|
||||
key: command_timeout
|
||||
env:
|
||||
- name: ANSIBLE_PERSISTENT_COMMAND_TIMEOUT
|
||||
vars:
|
||||
- name: ansible_command_timeout
|
||||
persistent_connect_timeout:
|
||||
type: int
|
||||
description:
|
||||
- Configures, in seconds, the amount of time to wait when trying to
|
||||
initially establish a persistent connection. If this value expires
|
||||
before the connection to the remote device is completed, the connection
|
||||
will fail.
|
||||
default: 30
|
||||
ini:
|
||||
- section: persistent_connection
|
||||
key: connect_timeout
|
||||
env:
|
||||
- name: ANSIBLE_PERSISTENT_CONNECT_TIMEOUT
|
||||
vars:
|
||||
extends_documentation_fragment:
|
||||
- connection_pipelining
|
||||
"""
|
||||
|
||||
from ansible.plugins.connection import NetworkConnectionBase, ensure_connect
|
||||
from ansible.utils.display import Display
|
||||
|
||||
display = Display()
|
||||
|
||||
|
||||
class Connection(NetworkConnectionBase):
|
||||
transport = 'network_noop'
|
||||
has_pipelining = True
|
||||
|
||||
def __init__(self, play_context, new_stdin, *args, **kwargs):
|
||||
super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs)
|
||||
|
||||
@ensure_connect
|
||||
def exec_command(self, *args, **kwargs):
|
||||
return super(Connection, self).exec_command(*args, **kwargs)
|
||||
|
||||
@ensure_connect
|
||||
def put_file(self, *args, **kwargs):
|
||||
return super(Connection, self).put_file(*args, **kwargs)
|
||||
|
||||
@ensure_connect
|
||||
def fetch_file(self, *args, **kwargs):
|
||||
return super(Connection, self).fetch_file(*args, **kwargs)
|
||||
|
||||
def _connect(self):
|
||||
if not self.connected:
|
||||
self._connected = True
|
||||
display.vvv("ESTABLISH NEW CONNECTION")
|
||||
|
||||
def close(self):
|
||||
if self.connected:
|
||||
display.vvv("CLOSING CONNECTION")
|
||||
super(Connection, self).close()
|
@ -0,0 +1,2 @@
|
||||
[all]
|
||||
local ansible_host=127.0.0.1 ansible_connection=network_noop
|
Loading…
Reference in New Issue