�
�Udac @ s d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m
Z
m Z d d l m
Z
d d l m Z d d l m Z d � Z d � Z d � Z d
� Z d � Z d e f d
� � YZ d e f d � � YZ d S( i����N( t partial( t to_bytest to_text( t AnsibleJSONEncoder( t iteritems( t cPicklec C s� t j | d d �} | j d d � } t t j | � j � � } t j | d t | � � t j | | � t j | d | � d S( s� Handles making sure all data is properly written to file descriptor fd.
In particular, that data is encoded in a character stream-friendly way and
that all data gets written before returning.
t protocoli s
s \rs %d
s %s
N(
R t dumpst replaceR t hashlibt sha1t hexdigestt ost writet len( t fdt objt srct data_hash( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyt write_to_file_descriptor, s c C s) t j d t | � � } | j | | � S( Ns !Q( t structt packR t sendall( t st datat
packed_len( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyt send_dataC s c C s� d } t d � } xC t | � | k rW | j | t | � � } | sJ d S| | 7} q Wt j d | | � d } | | } xC t | � | k r� | j | t | � � } | s� d S| | 7} q W| S( Ni t s !Qi ( R R t recvt NoneR t unpack( R t
header_lenR t dt data_len( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyt recv_dataH s
c C s t | j � } y | j | � } WnM t k
rq } t | d d � } t | d | � } | d t | d d �f SXd | d f S( Nt codei t errR t errorst surrogate_then_replacei ( t
Connectiont _socket_patht exec_commandt ConnectionErrort getattrR ( t modulet commandt
connectiont outt excR# t message( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyR) Z s c O sA t t j � � } i d d 6| d 6| d 6} | | f | d <| S( Ns 2.0t jsonrpct methodt idt params( t strt uuidt uuid4( t method_t argst kwargst reqidt req( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyt request_buildere s R* c B s e Z d � Z RS( c O sG t t | � j | � x* t | � D] \ } } t | | | � q# Wd S( N( t superR* t __init__R t setattr( t selfR1 R: R; t kt v( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyR@ o s ( t __name__t
__module__R@ ( ( ( sC /usr/lib/python2.7/site-packages/ansible/module_utils/connection.pyR* m s R'