%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/raetevent.pyo

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddlm	Z	ddl
ZddlZddl
ZddlZddljjZddlmZddlmZy@ddlmZmZddlmZdd	lmZeZWnek
reZnXdd
lm Z ej!e"�Z#d�Z$de%fd
��YZ&de&fd��YZ'de'fd��YZ(de'fd��YZ)dS(u>
Manage events

This module is used to manage events via RAET
i(tabsolute_importtprint_functiontunicode_literalsN(tMutableMapping(t	transport(tsyspaths(traetingtnacling(t	LaneStack(t
RemoteYard(tsixcC@stS(N(tHAS_RAET(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt__virtual__'st	RAETEventcB@s�eZdZdedd�Zed��Zd�Zdd�Z	ddd�Z
ddd�Zd�Zd	d
�Z
edd��Zdd
deded�Zd�Zd
eed�Zd	d�Zd�Zd�Zd�ZRS(u3
    The base class used to manage salt events
    cC@so||_||_|dkr'i}n||_d|_d|_t|_t|_|j	�|j
|�dS(u2
        Set up the stack and remote yard
        umanorN(tnodetsock_dirtNonetoptststacktryntFalset	connectedtcpubt_RAETEvent__load_cache_regext_RAETEvent__prep_stack(tselfRRtlistenR((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt__init__/s								
cC@stjjjdd�|_dS(u�
        Initialize the regular expression cache and put it in the
        class namespace. The regex search strings will be prepend with '^'
        tprependu^N(tsalttutilstcachet
CacheRegextcache_regex(tcls((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt__load_cache_regex?s
cC@s|jsRttd�r0tjr0tj|_qR|jd|j�|_t_ntjd|jj�|r{|j	�ndS(u+
        Prepare the stack objects
        ujobber_stackRu%RAETEvent Using Jobber Stack at = %s
N(
RthasattrRtjobber_stackt_setup_stackRtlogtdebugthat	subscribe(RR((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt__prep_stackKs	"umanorc	
C@sW|jjdd�}|r�|tjkrYdj|�}tj|d�t|��n||jkr�dj|j|�}tj|d�t|��q�n|jtj	tj
jtj	tj
jgkr�d}n�|jtj	tj
j
tj	tj
jgkr�|jjdd�}|sHd}tj|d�t|��n|std	}tj|d�t|��nd
j||�}n/dj|j�}tj|d�t|��dtjd
d�}|jjdtjjtj|j��}td|d|d|j�}tjjj|_|jtd|d|d|d|j��|S(Nu__roleuu4Invalid application kind = '{0}' for RAET SaltEvent.u
uAMismatch between node = '{0}' and kind = '{1}' in RAET SaltEvent.umasteruidu.Missing role required to setup RAET SaltEvent.u.Missing kind required to setup RAET SaltEvent.u{0}_{1}u;Unsupported application node kind '{0}' for RAET SaltEvent.ueventtsizeiucachedirtnametlanenametsockdirpathRtdirpath(Rtgettkindst
APPL_KINDStformatR'terrort
ValueErrorRtAPPL_KIND_NAMESt	applKindstmastertsyndictminiontcallerRtuuidtostpathtjoinRt	CACHE_DIRRRRtPackKindtpacktvaluetPkt	addRemoteR	(	RRtkindtemsgR.troleR-tcachedirR((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR&XsR	*
cC@s|js|j�ndS(uF
        Included for compat with zeromq events, not required
        N(Rtconnect_pub(Rttagt
match_type((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR*�s	cC@sdS(uF
        Included for compat with zeromq events, not required
        N((RRLRM((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytunsubscribe�scC@s�y�id|jdfd6d|jjjdfd6}i|d6}|jj||jj|jj�|jj�t	|_
t	|_Wntk
r�nXdS(u2
        Establish the publish connection
        u	event_requdstusrcurouteN(
RRRtlocalR-ttransmittnameRemotestuidt
serviceAlltTrueRRt	Exception(Rtroutetmsg((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyRK�s
#
	

i�cC@sdS(uF
        Included for compat with zeromq events, not required
        N((Rttimeout((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytconnect_pull�scC@s|S(uF
        Included for compat with zeromq events, not required
        ((R"trawtserial((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytunpack�siuc
C@s�|js|j�ntj�}x�tr�|jj�|jjr�|jjj�\}}	d|krzd|krzq%n|dj|�r�|j	j
|�j|d�dkr�q%n|r�|S|dSn||tj�kr�dStj
d�q%WdS(u�
        Get a single publication.
        IF no publication available THEN block for up to wait seconds
        AND either return publication OR None IF no publication available.

        IF wait is 0 then block forever.
        utagudatag{�G�z�?N(RRKttimeRTRRStrxMsgstpopleftt
startswithR!R1tsearchRtsleep(
RtwaitRLRMtfulltno_blocktauto_reconnecttstartRWtsender((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt	get_event�s"		
	
9cC@sk|js|j�n|jj�|jjrg|jjj�\}}d|krcd|krcdS|SdS(uN
        Get the raw event msg without blocking or any other niceties
        utagudataN(RRKRRSR^R_R(RRWRh((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytget_event_noblock�s	

cc@sFx?trA|jd|d|d|�}|dkr9qn|VqWdS(uJ
        Creates a generator that continuously listens for events
        RLRdRfN(RTRiR(RRLRdRftdata((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytiter_events�s
	cC@s�tj|�std��nt|t�sEtdj|���nid	|jdfd6d	|jj	j
d	fd6}i|d6|d6|d6}|jj||jj|jj
�|jj�d	S(
us
        Send a single event into the publisher with paylod dict "data" and event
        identifier "tag"
        u
Empty tag.u Dict object expected, not '{0}'.u
event_fireudstusrcurouteutagudataN(R
t	text_typeR6t
isinstanceRR4RRRROR-RPRQRRRS(RRkRLRXRVRW((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt
fire_event�s#cC@s{|jd�rw|jd�rw|dtjjjkrwy&xtj|jdi��D]\}}|d|d<|jd�}|jd�tkrV|j	|dj
|d|d��|d	|d	<|d
|d
<t|d<dj
|d|d�|d<|d|d<|d
|d
<|j	|tjjj|d	d|d
d|dgd��qVqVWWqttk
rpqtXqwndS(uE
        Fire events based on information in the return load
        uretcodeufunureturnu_|-uresultu{0}.{1}ii����ujiduidusuccessuError: {0}.{1}uuserusubuerrorujobN(
R1RRteventt	SUB_EVENTR
t	iteritemstsplitRRoR4ttagifyRU(RtloadRLRkttags((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt
fire_ret_load�s4(


cC@sdS(u(
        Here for compatability
        N((R((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt	close_pubscC@s&t|d�r"|jjj�ndS(Nustack(R$Rtservertclose(R((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pytdestroysN(t__name__t
__module__t__doc__RRTRtclassmethodRRR&R*RNRKRYR\RRiRjRlRoRwRxR{(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR
+s&	
/		
	 	tMasterEventcB@seZdZed�ZRS(u1
    Create a master event management object
    cC@s,tt|�jdd|d|d|�dS(NumasterRRR(tsuperR�R(RRRR((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR&s(R|R}R~RTR(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR�"st
PresenceEventcB@s eZedd�Zd�ZRS(cC@s2||_tt|�jd|d|d|�dS(NRRR(tstateR�R�R(RRRRR�((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR,s	cC@s�y�id|jdfd6d|jjjdfd6}i|d6}|jrbi|jd6|d<n|jj||jj|jj�|jj	�t
|_Wntk
r�nXdS(u2
        Establish the publish connection
        upresence_requdstusrcurouteustateudataN(
RRRROR-R�RPRQRRRSRTRRU(RRVRW((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyRK0s
	#


N(R|R}RTRRRK(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR�*st
StatsEventcB@s eZded�Zd�ZRS(cC@s;tt|�jd|d|d|�||_||_dS(NRRR(R�R�RRLtestate(RRRRLR�R((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyRCs%	cC@s�y�i|jddfd6d|jjjdfd6}i|d6|jd6}|jj||jj|jj	�|jj
�t|_Wnt
k
r�nXdS(u2
        Establish the publish connection
        u	stats_requdstusrcurouteutagN(R�RRROR-RLRPRQRRRRSRTRRU(RRVRW((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyRKHs#


N(R|R}RRTRRK(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyR�As(*R~t
__future__RRRR>tloggingR]tcollectionsRtsalt.payloadRtsalt.loadert
salt.statetsalt.utils.eventtsalt.utils.kindsRR2RRtraetRRtraet.lane.stackingRtraet.lane.yardingR	RTRtImportErrorRtsalt.extR
t	getLoggerR|R'RtobjectR
R�R�R�(((s8/usr/lib/python2.7/site-packages/salt/utils/raetevent.pyt<module>s4


	�

Zerion Mini Shell 1.0