%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/
Upload File :
Create Path :
Current File : //proc/227033/root/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pyo

�
���^c@@syddlmZmZmZddlZddlmZddlZddl	Zej
e�Zde
fd��YZdS(i(tabsolute_importtprint_functiontunicode_literalsN(tsixtSaltInfocB@s_eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�ZRS(
uP
    Class to  handle processing and publishing of "real time" Salt upates.
    cC@s||_i|_i|_dS(ub
        handler is expected to be the server side end of a websocket
        connection.
        N(thandlertjobstminions(tselfR((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pyt__init__s		cC@s�g}xTtj|j�D]@\}}i}|j|�|ji|d6�|j|�qWi|d6}|jjtjj	j
|�t�dS(u7
        Publishes minions as a list of dicts.
        uiduminionsN(Rt	iteritemsRtupdatetappendRtsendtsalttutilstjsontdumpstFalse(RRtminiontminion_infotcurr_miniontret((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytpublish_minions#s

cC@s3i||6}|jjtjjj|�t�dS(u9
        Publishes the data to the event stream.
        N(RR
RRRRR(Rtkeytdatatpublish_data((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytpublish2s
cC@s�|d}|d}|jd�\}}}}}|jj|d�sWi|j|<n|j|}|ji|dd6�|j�dS(uO
        Associate grains data with a minion and publish minion update
        utagudatau/ureturnugrainsN(tsplitRtgettNoneRR(Rt
event_datattagt
event_infot_tmidR((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess_minion_update9s


c
C@s
|d}|d}|jd�\}}}}}|jj|i�}|jdi�j|i�}|ji|dd6�|ji|dd6�|ji|dd6�tgtj|d�D]\}}|d^q��}	|	r�d|d	<n|jd
|j�dS(u�
        Process a /ret event returned by Salt for a particular minion.
        These events contain the returned results from a particular execution.
        utagudatau/uminionsureturnuretcodeusuccessucompleteustateujobsN(RRt
setdefaultRtallRR
R(
RRR R!R"tjidR#tjobRtjob_complete((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess_ret_job_eventKs

0
cC@s�d}|d}|d}i}x#|dD]}itd6||<q+Wi|dd6|dd6|d6|dd6|d	d	6|d
d
6dd6}||j|d<|jd
|j�dS(u�
        Creates a new job with properties from the event data
        like jid, function, args, timestamp.

        Also sets the initial state to started.

        Minions that are participating in this job are also noted.

        utagudatauminionsusuccessujidu_stampu
start_timeufunutgtutgt_typeurunningustateujobsN(RRRR(RRR(R R!RR#((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess_new_job_eventcs 



cC@sv|d}|d}|ddkr>|jj|dd�n*|ddkrh|jj|di�n|j�dS(u�
        Tag: salt/key
        Data:
        {'_stamp': '2014-05-20T22:45:04.345583',
         'act': 'delete',
         'id': 'compute.home',
         'result': True}
        utagudatauactudeleteuiduacceptN(RtpopRR%R(RRR R!((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess_key_event�s


cC@s|d}|d}|d}tj|j�}t}t|�t|�}	x'|	D]}
t}|jj|
d�qSWt|�t|�}dj|�}|r�t}t	j
j|�}
|
jidd6|d6dd	6d
d6dd
6d
d6|d6�n|r
|j
�ndS(ut
        Check if any minions have connected or dropped.
        Send a message to the client if they have.
        utagudataupresentu,ugrains.itemsufunutgtulistu	expr_typeuclientumodeulocalulocal_asyncuasynchronousutokenN(RtiterkeysRRtsettTrueR,RtjoinRtnetapitNetapiClienttrunR(RRttokentoptsR R!tminions_detectedtcurr_minionstchangedtdropped_minionsRtnew_minionsttgttclient((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess_presence_events�s2



cC@s
|djd�}t|�dkr)dS|ddkr�|ddkry|j|�|d	d
dkr�i|_q�q�|ddkr�|j|�|d	d
dkr�|j|�q�q�n|dd
kr�|j|�n|ddkr|j|||�ndS(u1
        Process events and publish data
        utagu/iNiujobiunewudataufunugrains.itemsuretukeyupresence(RtlenR+RR*R$R-R>(Rt	salt_dataR5R6tparts((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pytprocess�s 

(t__name__t
__module__t__doc__R	RRR$R*R+R-R>RB(((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pyRs	
							*(t
__future__RRRtloggingtsalt.extRtsalt.netapiRtsalt.utils.jsont	getLoggerRCtloggertobjectR(((sM/usr/lib/python2.7/site-packages/salt/netapi/rest_cherrypy/event_processor.pyt<module>s

Zerion Mini Shell 1.0