%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python2.7/site-packages/salt/utils/
Upload File :
Create Path :
Current File : //lib/python2.7/site-packages/salt/utils/reactor.pyc

�
���^c@@sUdZddlmZmZmZddlZddlZddlZddlZ	ddl
Z	ddlZ	ddlZ	ddl
Z	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	ddlZ	ddlmZeje�Zeddddd	d
g�Zde	jjje	jj fd��YZ!d
e"fd��YZ#dS(u0
Functions which implement running reactor jobs
i(tabsolute_importtprint_functiontunicode_literalsN(tsixu__id__u__sls__unameuorderufunustatetReactorcB@s�eZdZidd6Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�ZRS(u�
    Read in the reactor configuration variable and compare it to events
    processed on the master.
    The reactor has the capability to execute pre-programmed executions
    as reactions to events
    ulocalucmdcK@sdtt|�j|�|j�}d|d<tjj|�|_tjjj|||jj	�dS(Nulocalufile_client(
tsuperRt__init__tcopytsalttminiontMasterMiniontstatetCompilertrend(tselftoptstkwargstlocal_minion_opts((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyR5s

cC@s5t|_tj||dd|dd|d�dS(Nuoptst	log_queueu	log_queuetlog_queue_levelulog_queue_level(tTruet	_is_childRR(RR((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyt__setstate__As
	

cC@s"i|jd6|jd6|jd6S(Nuoptsu	log_queueulog_queue_level(RRR(R((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyt__getstate__Is

c	C@s�i}|jd�r4|jjd|�p.d}ntj|�}|s_tjd||�nx}|D]u}yK|j|d|d|�}x|D]}|||d<q�W|j|�Wqftk
r�tj	d|�qfXqfW|S(	up
        Execute the render system against a single reaction file and return
        the data structure
        usalt://u
cp.cache_fileuu<Can not render SLS %s for tag %s. File missing or not found.ttagtdatau__sls__uFailed to render "%s": (
t
startswithR	t	functionstglobtlogterrortrender_templatetupdatet	Exceptiont	exception(	Rtglob_refRRtreacttglobbed_reftfn_trestname((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytrender_reactionPs$
	

cC@s�tjd|�g}t|jdtj�r�y>tjjj	|jd��}tjj
j|�}WdQXWq�tt
fk
r�tjd|jd�q�tk
r�tjd|jd�q�Xn
|jd}x�|D]�}t|t�s�q�nt|�dkrq�nttj|��}||}tj||�r�t|tj�rb|j|�q�t|t�r�|j|�q�q�q�W|S(ud
        Take in the tag from an event and return a list of the reactors to
        process
        uGathering reactors for tag %sureactorNu Failed to read reactor map: "%s"u)Failed to parse YAML in reactor map: "%s"i(Rtdebugt
isinstanceRRtstring_typesRtutilstfilestfopentyamlt	safe_loadtOSErrortIOErrorRR!tdicttlentnexttiterkeystfnmatchtappendtlisttextend(RRtreactorstfp_t	react_maptropttkeytval((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyt
list_reactorsms0



cC@s�t|jjdtj�r�tjd|jd�y>tjj	j
|jd��}tjjj|�}WdQXWq�t
tfk
r�tjd|jd�q�tk
r�tjd|jd�q�Xntjd�|jjd}|S(u/
        Return a list of the reactors
        ureactoruReading reactors from yaml %sNu Failed to read reactor map: "%s"u)Failed to parse YAML in reactor map: "%s"uNot reading reactors from yaml(R+R	RRR,RR*RR-R.R/R0R1R2R3RR!(RR=R>((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytlist_all�s

cC@s�|j�}xA|D]9}ttj|��}||kritd6dd6SqW|jjdji||6�itd6dd6S(u
        Add a reactor
        ustatusuReactor already exists.ucommentureactoruReactor added.(	RCR6RR7tFalseR	RR9R(RRtreactionR<treactort_tag((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytadd_reactor�s
cC@sy|j�}xX|D]P}ttj|��}||kr|jjdj|�itd6dd6SqWitd6dd6S(u"
        Delete a reactor
        ureactorustatusuReactor deleted.ucommentuReactor does not exists.(	RCR6RR7R	RtremoveRRD(RRR<RFRG((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytdelete_reactor�s
cC@sXxQt|�D]C\}}|jj||d�}|dk	r
|||d<q
q
WdS(u�
        Preserve backward compatibility by rewriting the 'state' key in the low
        chunks if it is using a legacy type.
        ustateN(t	enumeratetaliasestgettNone(Rtchunkstidxt_t	new_state((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytresolve_aliases�sc	C@s�tjd|�i}g}y�x*|D]"}|j|j|||��q&W|r�|j|�}|r�tjd|||�gS|j|j|��}nWn tk
r�}tj	d�nX|j
|�|S(uN
        Render a list of reactor files and returns a reaction struct
        uCompiling reactions for tag %su_Unable to render reactions for event %s due to errors (%s) in one or more of the sls files (%s)u/Exception encountered while compiling reactions(RR*R R)tverify_highRtorder_chunkstcompile_high_dataR!R"RS(	RRRR<thighROR&terrorstexc((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyt	reactions�s$
 

cC@s%x|D]}|jj|�qWdS(u,
        Execute the reaction state
        N(twraptrun(RROtchunk((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytcall_reactions�s
cC@stjjj|jj�tjjj|jd|jd|jdd|jdt	�|_t
|j�|_x�|jjdt	�D]�}|dj
d�|jjkr�q�n|d	jd
�r|d}|j|d|d�}|jji|j�d6|d
6d�q�|d	jd�ri|d}|j|d�}|jji|j�d6|d
6d�q�|d	jd�r�|jji|j�d6d�q�|j|d	�}|s�q�n|j|d	|d|�}|r�y|j|�Wqtk
rtjd�qXq�q�WdS(u,
        Enter into the server loop
        u__roleusock_diru	transportRtlistentfulludatauuserutagusalt/reactors/manage/addueventureactorsuresultu!salt/reactors/manage/add-completeusalt/reactors/manage/deleteu$salt/reactors/manage/delete-completeusalt/reactors/manage/listu!salt/reactors/manage/list-resultsuExit ignored by reactorN(RR-tprocesstappendproctitlet	__class__t__name__teventt	get_eventRRt	ReactWrapR[titer_eventsRMt
event_usertendswithRHt
fire_eventRCRJRBRZR^t
SystemExitRtwarning(RRt_dataR'R<RO((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyR\�sF


	





(Rdt
__module__t__doc__RLRRRR)RBRCRHRJRSRZR^R\(((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyR*s
							
	
	
		RgcB@s�eZdZd
ZdZiejjd6ej	j
d6ejjd6ejj
d6Zd�Zd�Zd�Zd	�Z	d
�Zd�Zd�ZRS(u?
    Wrapper that executes low data for the Reactor System
    uReactorulocalurunneruwheelucallercC@sg||_tjdkr7tjjj|d�t_ntjjj	|jdd|jd�|_
dS(Nureactor_refresh_intervalureactor_worker_threadst
queue_sizeureactor_worker_hwm(RRgtclient_cacheRNRR-tcachet	CacheDictRat
ThreadPooltpool(RR((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyR#s	
cC@s�|d}||jkr�tjd|�|dkri|j||j�|j|<t|j|j�q�|j||jd�|j|<ndS(uR
        Populate the client cache with an instance of the specified type
        ustateu%Reactor is populating %s client cacheurunneruwheelu	conf_fileN(urunneruwheel(RrRR*treaction_classRR5R(Rtlowt
reaction_type((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytpopulate_client_cache-s
c
C@s>|j|�yt||d�}Wn%tk
rKtjd|d�nXy�tjjj||�}|j	dd�}|j	di�}|ddkr�|j
|d<|jd�|d<nd|kr�|jd�}x;dD]3}||kr�tjd|d|||�q�q�W|dd
krct
|t�rctjjj|�rc||d	<i|d
<nd|d	<||d
<t
|d
t�s�tjjj|d
�|d
<|d
s�tjd|d|d|d�dSq�n�i}|ddkr�d	|ksd
|kr�|j|djj	|d�}	|	dkr^tjd|d|d|d�dStjjj|	|dt�}q�nd	|kr�|j	dd�|d	<nd
|kr�|j	di�|d
<n|||�Wn]tk
rtjd|d�n9tk
r9tjd|d|d|ddt�nXdS(uH
        Execute a reaction by invoking the proper wrapper func
        ustateu0ReactWrap is missing a wrapper function for '%s'uargsukwargsurunneruwheelu__user__u	__state__uargukwargu�Reactor '%s' is ignoring '%s' param %s due to presence of 'args' param. Check the Reactor System documentation for the correct argument format.u__id__ucalleru�Reactor '%s' failed to execute %s '%s': Incorrect argument format, check the Reactor System documentation for the correct format.ufunNu>Reactor '%s' failed to execute %s '%s': function not availabletexpected_extra_kwsu(Reactor '%s' attempted to exit. Ignored.u&Reactor '%s' failed to execute %s '%s'texc_info((urunneruwheel(uargukwarg((urunneruwheel((RztgetattrtAttributeErrorRRRR-targstformat_callRMRitpopRmR+R:Rtis_dictlistR4trepack_dictlistRrRRNtREACTOR_INTERNAL_KEYWORDSRlR!R(
RRxtl_funt	wrap_callRRtreactor_argstitemt
react_callt	react_fun((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyR\Fsx









!

cK@s*|jj|jdjd||f�dS(uZ
        Wrap RunnerClient for executing :ref:`runner modules <all-salt.runners>`
        urunnerRN(Rvt
fire_asyncRrRx(RtfunR((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytrunner�scK@s*|jj|jdjd||f�dS(uV
        Wrap Wheel to enable executing :ref:`wheel modules <all-salt.wheel>`
        uwheelRN(RvR�RrRx(RR�R((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytwheel�scK@s|jdj|||�dS(uZ
        Wrap LocalClient for running :ref:`execution modules <all-salt.modules>`
        ulocalN(Rrt	cmd_async(RR�ttgtR((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytlocal�scK@s&|jdj||d|d�dS(uY
        Wrap LocalCaller to execute remote exec functions locally on the Minion
        ucalleruargukwargN(Rrtcmd(RR�R((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pytcaller�sN(RdRoRpRNRrRiRtclienttLocalClientR�tRunnerClientR�tWheeltCallerRwRRzR\R�R�(((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyRgs


	
		i			($Rpt
__future__RRRR8Rtloggingtsalt.clientRtsalt.runnert
salt.statetsalt.utils.argstsalt.utils.cachetsalt.utils.datatsalt.utils.eventtsalt.utils.filestsalt.utils.processtsalt.utils.yamlt
salt.wheeltsalt.defaults.exitcodestsalt.extRt	getLoggerRdRt	frozensetR�R-Rat$SignalHandlingMultiprocessingProcessRRRtobjectRg(((s6/usr/lib/python2.7/site-packages/salt/utils/reactor.pyt<module>s6(�

Zerion Mini Shell 1.0