%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python2.7/site-packages/salt/daemons/flo/
Upload File :
Create Path :
Current File : //lib/python2.7/site-packages/salt/daemons/flo/jobber.pyo

�
���^c@@s=dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlZddlZddlZddlZddljjZddlZddlZddlZddlmZmZddlmZddlm Z ddl!m"Z"dd	l#m$Z$dd
l%m&Z&m'Z'm(Z(ddl)Z*ddl+m,Z,e,�Z-ej.e/�Z0e*j1j2j3ejj4j5d�d
iejj4j5d�d6ejj4j5d�d6ejj4j5d�d6ejj4j5d�d6ejj4j5d�d6ejj4j5d�d6�d��Z6e*j1j2j3ejj4j5d�d
iejj4j5d�d6ejj4j5d�d6ejj4j5d�d6ejj4j5d�d6ejj4j5d�d6iejj4j5d�d6id6d6�d ��Z7d!e*j1j2j8fd"��YZ9dS(#u
Jobber Behaviors
i(tabsolute_importtprint_functiontunicode_literalsN(tsix(traetingtnacling(t	LaneStack(t
RemoteYard(t
is_windows(ttagify(tCommandExecutionErrortCommandNotFoundErrortSaltInvocationError(t
getConsoleuSaltRaetShellJobberChecktioinitsu
.salt.optsuoptsu.salt.grainsugrainsu
.salt.var.funufunu
.salt.matcherumatcheru.salt.var.shellsushellsu.salt.road.manor.stackustackcC@s�g}xc|jjD]U}t|jj|dj�t�r|j|�|jj|}|dj�\}}tjj	j
|dtjr�tjj
jnd�d}i|jjjjddfd6|dddd	dd
fd6}d|d
<|jjd|d<||d<i|d6|d6}|jjjj|dddd	�}	|jjj||	j�qqWx!|D]}
|jjj|
�qsWdS(uO
    Iterate over the shell jobbers and return the ones that have finished
    uproctobject_hookulocalumanorujid_retusrcumsgurouteiu
remote_cmdudstu_returnucmduidujiduloadN(tshellstvaluet
isinstancetpolltinttappendtcommunicatetsalttutilstjsontloadsRtPY2tdatatencode_dicttNonetstacktlocaltnametoptstnameRemotestgettmessagetuidtpop(tselftrmstjidRtstdouttstderrtrettroutetmsgtmastertrm_((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pytjobber_check/s,#
#

(
uSaltRaetShellJobberu.salt.loader.modulesumodulesuipathuivalcC@s�x�|jjr�|jjj�}|jd�}t|jjdj|jdd���|d�}|spqn|d}||jjkr|jj|}nqtj	j
|tjjj
|dd|jd	g��|�\}}d
ddd
dtjjg}d|kr0|jd�|j|d�n|j|�x|D]}	|j|	�qDWx+|D]#}
|jdj|
||
��qbWi|d6|d6}tj|dtdtjdtj�|d<||jj|d<qWdS(u
    Shell jobber start!
    upubu	{0}_matchutgt_typeuglobutgtufunuargtno_parseuno_parseu	salt-callu--outujsonu
--metadatau-cureturnu--returnu{0}={1}umsgtshellR,R+uprocujidN(tfunRtpopleftR$tgetattrtmatchertformattmodulesRtminiontload_args_and_kwargsRtargstparse_inputtsyspathst
CONFIG_DIRRt
subprocesstPopentFalsetPIPER(R(R/RtmatchR5tfuncR=tkwargstcmdtargtkeytque((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pytshell_jobberSsP
	

	




!

	tSaltRaetNixJobbercB@seZdZi	ejjjd�d6ejjjd�d6ejjjd�d6ejjjd�d6ejjjd	�d
6ejjjd�d6ejjjd
�d6ejjjd�d6ejjjd�d6Zd�Zd�Z	d�Z
d�Zd�ZRS(uu
    Execute a function call job on a minion on a *nix based system
    FloScript:

    do salt raet nix jobber

    u
.salt.optsu
opts_storeu.salt.grainsugrainsu.salt.loader.modulesumodulesu.salt.loader.returnersu	returnersu.salt.loader.executorsumodule_executorsu
.salt.var.funufunu
.salt.matcherumatcheru.salt.track.executorsu	executorsu.salt.road.manor.stacku
road_stackcC@sS|jj|_tjj|jd�|_tjj|j�|_	i|j
_dS(u*
        Map opts for convenience
        ucachedirN(t
opts_storeRR"RR;tget_proc_dirtproc_dirtpayloadtSerialtserialt	executors(R(((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyt_prepare�sc
C@sn|jjdd�}|sAd}tj|d�t|��n|jd}|tjkr�dj|�}tj|d�t|��n|dkr�dj||�}n,d	j|�}tj|d�t|��|jd
}dtj	dd
�}t
d|d|d|�}tjj
j|_|jtd|ddd|d|��tjdj|j��|S(u�
        Setup and return the LaneStack and Yard used by the jobber yard
        to communicate with the minion manor yard

        uiduu+Missing role required to setup Jobber Lane.u
u__roleu1Invalid application kind = '{0}' for Jobber lane.uminionu{0}_{1}u5Unsupported application kind = '{0}' for Jobber Lane.usock_dirujobbertsizeiR!tlanenametsockdirpathRumanortdirpathuCreated Jobber Stack {0}
(R"R$tlogterrort
ValueErrortkindst
APPL_KINDSR9RtuuidRRtPackKindtpackRtPkt	addRemoteRtconsoletconciseR!(R(troletemsgtkindRWRXR!R((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyt_setup_jobber_stack�s8

	
cC@s�i|jjjj|jjdfd6|dddddfd6}|jd}d|d	<||d<y|jj|d
j}Wntt	t
fk
r�n Xt|tj
�r�||d<ni|d6|d6}|j||jd
��|j�dS(u>
        Send the return data back via the uxd socket
        ujid_retusrcurouteiu
remote_cmdudstuidu_returnucmdufunuoutuloadumanorN(t
road_stackRR R!RR"R:t
__outputter__tKeyErrortAttributeErrort	TypeErrorRRtstring_typesttransmittfetchUidByNamet
serviceAll(R(R/R-RR.tmidtoput((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyt_return_pub�s%



cC@sSxL|jjrN|jjj�}|jd�}t|jjdj|jdd���|d�}|spqnd|kr�tjd|d|d|d	�ntjd
|d|d	�tj	d|�t
�ry|j|�WqKtk
r}tj
d|d
t�qKXqtjd|jdi|d6�}|j�|j�qWdS(u9
        Pull the queue for functions to execute
        upubu	{0}_matchutgt_typeuglobutgtuuseru(User %s Executing command %s with jid %sufunujidu Executing command %s with jid %suCommand details %suException caught by jobber: %stexc_infottargetRGumsgN(R5RR6R$R7R8R9RZtinfotdebugRtproc_runt	ExceptionR[tTruetmultiprocessingtProcesststarttjoin(R(R/RREtexctprocess((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pytaction�s8	
			
cC@sG|d}tjj|j|d�}|d|jd<tjjj|j�|j	�tj
_}|dd\}}}|tj
_|tj
_
itj�d6}|j|�tjjj|d�� }	|	j|jj|��WdQXitd	6}
|d
}||jjkr1y�|jj|d
}tjj|tjjj|dd|jd
g��|�\}
}dtj|jjd<|jd�p�|jjddg�}t |t!j"�r�|g}n/t |t#�s�|r�t$dj%|���n|jjdd�r,|ddkr,d|d<nt&j'd|�x||D]t}dj%|�}||j(jkr�t$dj%|���n|j(j||j|||
|�}|dk	rCPqCqCWt |t*j+�r�d}i}x�|D]�}t |t,�rt |t#�r|j|�n|s#g}n|j-|�t.|dd|jdt!j/|�gd�}i|d6}|j0||�|d7}q�W||
d<n
||
d<tj|jjjdd�|
d<t1|
d	<WqDt2k
r}dj%|�}t&j3|d t1�d!j%||�|
d<qDt4k
r]}t&j5d"||d#t6j7�d$j%|�|
d<qDt$k
r�}t&j5d%||d#t6j7�d&j%||�|
d<qDt8k
r�}d'j%||�}t&j9|d#t6j7�||
d<qDt:k
r-d(}t&j9|d#t6j7�d!j%|t;j<��|
d<qDXnd)j%|�|
d<|d|
d<|d
|
d
<|d|
d*<|j=||
|�|d+r|jd|
d<xrt>|d+j?d,��D]T}y!|j@jd-j%|�|
�Wq�t:k
r	}t&j5d.|d|�q�Xq�WntAjBd/j%|jC��|jDjE�dtj
_dS(0u8
        Execute the run in a dedicated process
        upubujidu__ex_idurouteusrcupiduw+bNusuccessufunuargR3uno_parseiuretcodeumodule_executorsudirect_calluEWrong executors specification: {0}. String or non-empty list expectedu	sudo_userui����usudouExecutors list %su{0}.executeuExecutor '{0}' is not availableuproguidujobureturniu$Command required for '{0}' not foundRvu{0}: {1}u#A command in '%s' had a problem: %stexc_info_on_loglevelu
ERROR: {0}uProblem executing '%s': %suERROR executing '{0}': {1}uFTypeError encountered executing {0}: {1}. See debug log for more info.u'The minion function caused an exceptionu'{0}' is not available.ufun_argsuretu,u{0}.returneruThe return failed for job %s %suClosing Jobber Stack {0}
(FtostpathR�RPR"RRR�tdaemonize_ifRit	transporttjobber_stacktjobber_estate_nametjobber_yard_nametgetpidtupdatetfilestfopentwriteRStdumpsRCR:RR;R<R=R>R$tsyst
__module__t__context__RRRotlistRR9RZttracetmodule_executorsRttypest
GeneratorTypetdictRR	t	text_typet_fire_masterR|RRyR
R[tloggingtDEBUGRntwarningR{t	tracebackt
format_excRutsettsplitt	returnersRdReR!tservertclose(R(R/Rtfn_Rt
src_estatetsrc_yardt	src_sharetsdatatfp_R-t
function_nameRFR=RGRTR!tfnametreturn_datatindtirettsinglettagt
event_dataR�treturner((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyRzs�



	
'%

%
	
#	



		
	


#
 "
(
t__name__R�t__doc__RRtstringutilstto_strtIoinitsRURiRuR�Rz(((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyRM�s			)		-(:R�t
__future__RRRR�R�R�R�R�R}RAtsalt.extRtsalt.daemons.masterapiRtsalt.utils.argstsalt.utils.datatsalt.utils.filestsalt.utils.jsontsalt.utils.kindsRR]tsalt.utils.processtsalt.utils.stringutilstsalt.transporttraetRRtraet.lane.stackingRtraet.lane.yardingRtsalt.utils.platformRtsalt.utils.eventR	tsalt.exceptionsR
RRtioflo.base.deedingtioflotioflo.base.consolingR
Rdt	getLoggerR�RZtbasetdeedingtdeedifyR�R�R2RLtDeedRM(((s;/usr/lib/python2.7/site-packages/salt/daemons/flo/jobber.pyt<module>s\	%1

Zerion Mini Shell 1.0