@ -484,6 +484,7 @@ class Connection(ansible.plugins.connection.ConnectionBase):
login_context = None
login_context = None
#: Only sudo, su, and doas are supported for now.
#: Only sudo, su, and doas are supported for now.
# Ansible ConnectionBase attribute, removed in Ansible >= 2.8
become_methods = [ ' sudo ' , ' su ' , ' doas ' ]
become_methods = [ ' sudo ' , ' su ' , ' doas ' ]
#: Dict containing init_child() return value as recorded at startup by
#: Dict containing init_child() return value as recorded at startup by
@ -521,15 +522,6 @@ class Connection(ansible.plugins.connection.ConnectionBase):
# set by `_get_task_vars()` for interpreter discovery
# set by `_get_task_vars()` for interpreter discovery
_action = None
_action = None
def __del__ ( self ) :
"""
Ansible cannot be trusted to always call close ( ) e . g . the synchronize
action constructs a local connection like this . So provide a destructor
in the hopes of catching these cases .
"""
# https://github.com/dw/mitogen/issues/140
self . close ( )
def on_action_run ( self , task_vars , delegate_to_hostname , loader_basedir ) :
def on_action_run ( self , task_vars , delegate_to_hostname , loader_basedir ) :
"""
"""
Invoked by ActionModuleMixin to indicate a new task is about to start
Invoked by ActionModuleMixin to indicate a new task is about to start
@ -684,6 +676,9 @@ class Connection(ansible.plugins.connection.ConnectionBase):
@property
@property
def connected ( self ) :
def connected ( self ) :
"""
Ansible connection plugin property . Used by ansible - connection command .
"""
return self . context is not None
return self . context is not None
def _spec_from_via ( self , proxied_inventory_name , via_spec ) :
def _spec_from_via ( self , proxied_inventory_name , via_spec ) :
@ -842,7 +837,11 @@ class Connection(ansible.plugins.connection.ConnectionBase):
the _connect_ * ( ) service calls defined above to cause the master
the _connect_ * ( ) service calls defined above to cause the master
process to establish the real connection on our behalf , or return a
process to establish the real connection on our behalf , or return a
reference to the existing one .
reference to the existing one .
Ansible connection plugin method .
"""
"""
# In some Ansible connection plugins this method returns self.
# However nothing I've found uses it, it's not even assigned.
if self . connected :
if self . connected :
return
return
@ -880,6 +879,8 @@ class Connection(ansible.plugins.connection.ConnectionBase):
Arrange for the mitogen . master . Router running in the worker to
Arrange for the mitogen . master . Router running in the worker to
gracefully shut down , and wait for shutdown to complete . Safe to call
gracefully shut down , and wait for shutdown to complete . Safe to call
multiple times .
multiple times .
Ansible connection plugin method .
"""
"""
self . _put_connection ( )
self . _put_connection ( )
if self . binding :
if self . binding :
@ -896,6 +897,8 @@ class Connection(ansible.plugins.connection.ConnectionBase):
any local state we hold for the connection , returns the Connection to
any local state we hold for the connection , returns the Connection to
the ' disconnected ' state , and informs ContextService the connection is
the ' disconnected ' state , and informs ContextService the connection is
bad somehow , and should be shut down and discarded .
bad somehow , and should be shut down and discarded .
Ansible connection plugin method .
"""
"""
if self . _play_context . remote_addr is None :
if self . _play_context . remote_addr is None :
# <2.5.6 incorrectly populate PlayContext for reset_connection
# <2.5.6 incorrectly populate PlayContext for reset_connection
@ -1002,6 +1005,8 @@ class Connection(ansible.plugins.connection.ConnectionBase):
Data to supply on ` ` stdin ` ` of the process .
Data to supply on ` ` stdin ` ` of the process .
: returns :
: returns :
( return code , stdout bytes , stderr bytes )
( return code , stdout bytes , stderr bytes )
Ansible connection plugin method .
"""
"""
emulate_tty = ( not in_data and sudoable )
emulate_tty = ( not in_data and sudoable )
rc , stdout , stderr = self . get_chain ( ) . call (
rc , stdout , stderr = self . get_chain ( ) . call (
@ -1027,6 +1032,8 @@ class Connection(ansible.plugins.connection.ConnectionBase):
Remote filesystem path to read .
Remote filesystem path to read .
: param str out_path :
: param str out_path :
Local filesystem path to write .
Local filesystem path to write .
Ansible connection plugin method .
"""
"""
self . _connect ( )
self . _connect ( )
ansible_mitogen . target . transfer_file (
ansible_mitogen . target . transfer_file (
@ -1076,6 +1083,8 @@ class Connection(ansible.plugins.connection.ConnectionBase):
Local filesystem path to read .
Local filesystem path to read .
: param str out_path :
: param str out_path :
Remote filesystem path to write .
Remote filesystem path to write .
Ansible connection plugin method .
"""
"""
try :
try :
st = os . stat ( in_path )
st = os . stat ( in_path )