%PDF- %PDF-
Mini Shell

Mini Shell

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

�
���^c@@sdZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
ZddlZddl
mZddlmZddlmZdgZeje�Zidd	6d
d6dd
6dd6Zdaad�Zejje�Zedjee��Z dddd�Z!d�Z"d�Z#d�Z$d�Z%d�Z&dd�Z(dd�Z)e*ddg�d�Z+d4Z,e-d+�Z.d5Z/d6Z0iZ1iZ2dd,l3m4Z4d-�Z5d.�Z6d/�Z7d0�Z8d1e9fd2��YZ:iZ;iZ<e-d3�Z=dS(7u�
A flexible renderer that takes a templating engine and a data format

:maintainer: Jack Kuan <kjkuan@gmail.com>
:maturity: new
:platform: all
i(tabsolute_importtprint_functiontunicode_literalsN(tSaltRenderError(tsix(tStringIOurenderu!#\s*-+\s*end of state config\s*-+ustateconf_end_markeru.startustateconf_start_stateu.goalustateconf_goal_stateu
stateconf.setustateconf_state_funcucC@s!tdatjd�dadS(Nustateconf_state_funcu.i(t__opts__t
STATE_FUNCtsplitt
STATE_NAME(topts((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyt__init__Is
u�Invalid use of {0} renderer!
Usage: #!{1} [-GoSp] [<data_renderer> [options] . <template_renderer> [options]]

where an example <data_renderer> would be yaml and a <template_renderer> might
be jinja. Each renderer can be passed its renderer specific options.

Options(for this renderer):

  -G   Do not generate the goal state that requires all other states in the sls.

  -o   Indirectly order the states by adding requires such that they will be
       executed in the order they are defined in the sls. Implies using yaml -o.

  -s   Generate the start state that gets inserted as the first state in
       the sls. This only makes sense if your high state data dict is ordered.

  -p   Assume high state input. This option allows you to pipe high state data
       through this renderer. With this option, the use of stateconf.set state
       in the sls will have no effect, but other features of the renderer still
       apply.

  ubasec
@sft�t�t�dt�������	�
fd�}����	�
fd���d}tj|j�d�\}}|r�dj|�nd}d|kr�t�nd|kr�t�nd|kr�t�nd|kr��|dt�}	n.gtjd
|d�D]}
|
j�jdd�^q}y�|ddjdd�\}�||��r�|dkr�d��q�t	d��n|ddjdd�\}�||�Wn>t
k
r�}t	dj|���ntk
r�t
�nXt|tj�rLtjjj|d��"}
tjjj|
j��}WdQXntjjj|j��}tjtd|�}|r�|||j� dt�ntrtj�}|r�
d}xKtj|�D]7}|j|�r�||||t|�<||=q�q�Wqni}|||�}	t j!t"j#�rbddl$}t j%d|j&|	��n|	S(Nc	@s�d�kr0tjj�jdtjj��n�}td|rH|nd�}|rg|j|�n�t|���d|d�j���}�|��d�j��}�||�S(Nu.tsls_dirtcontexttargline(	tostpathtdirnametreplacetseptdicttupdateRtstrip(tdataR
textractRtctxttmploutthigh(tkwstprocess_high_datat
rd_arglinetrender_datatrender_templatet
rt_arglinetsaltenvtsls(s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pytprocess_sls_dataos6c@sNtj|�}y�t|�t|���|rp�rpt|�}|rctdj|���nt|�n�r�t|��n|r��r�t	|�nt
|��t|�Wn�tk
r��n{tk
rI}t
jd�|�ddlm}|t�}|j|�}|r:tdj|���ntd��nX|S(Nu�'names' declaration(found in state id: {0}) is not supported with implicitly ordered states! You should generate the states in a template for-loop instead.u5Error found while pre-processing the salt file %s:
%si(tStateu
u#sls preprocessing/rendering failed!(tcopytdeepcopyt#rewrite_single_shorthand_state_decltrewrite_sls_includes_excludesthas_names_declsRtformattadd_implicit_requirestadd_start_statetadd_goal_statetrename_state_idstextract_state_confst	Exceptiontlogt	exceptiont
salt.stateR%Rtverify_hightjoin(RRRtsidterrR%tstateterrors(tgen_start_statetimplicit_requiret
no_goal_stateR"R#(s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR}s<






u	renderersuGospu uyaml . jinjau-Guu-ou-su-pRu\s+(?<!\\)\.\s+iu\.u.iuyamlu-o uAImplicit ordering is only supported if the yaml renderer is used!uRenderer: {0} is not available!urustateconf_end_markeru::uRendered sls: %s(u-Gu(u-ou(u-su(u-pu('tFalsetNonetgetoptRR6tTruetreRRRtKeyErrorR+t
IndexErrortINVALID_USAGE_ERRORt
isinstanceRtstring_typestsalttutilstfilestfopentstringutilst
to_unicodetreadtsearchRtstartt
STATE_CONFR&titerkeyst
startswithtlenR2tisEnabledFortloggingtDEBUGtpprinttdebugtpformat(tinputR"R#RRR$t	renderersR
targsRtargtnameR8tifilet	sls_templtmatchttmplctxtprefixtkRX((R;R<RR=RRRR R!R"R#s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pytrenderjsj*.
			7 

 

$
cC@sWxPt|�D]B\}}}}|dkr1q
nxt|dg�D]}|SWq
WdS(Nuextendunames(t	statelisttnvlist(RR7t_R]((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR*�s
cC@sJxCtj|�D]2\}}t|tj�rig|6||<qqWdS(u�
    Rewrite all state declarations that look like this::

      state_id_decl:
        state.func

    into::

      state_id_decl:
        state.func: []
    N(Rt	iteritemsRFRG(RR7tstates((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR(�sc
C@sx�|D]�}|dkr�||}x�t|�D]h\}}t|t�r`|j�\}}n|}|}|jd�r0it||�|6||<q0q0Wq|dkrxN||D]?}	d|	kr�|	djd�r�t|	d|�|	d<q�q�WqqWdS(Nuincludeu.uexcludeusls(t	enumerateRFRtpopitemRSt_relative_to_abs_sls(
RR#R"R7tincludestiteachtslsenvtincltsdata((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR)s

$cC@sId|krt||�St||d�}dj|jdd��SdS(Nu::u.i(RnR6trsplit(R7R#tabs_sls((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyt_local_to_abs_sid s
cC@sstjd|�j�\}}t|�}|jd�}|t|�krZtd��ndj|| |g�S(uP
    Convert ``relative`` sls reference into absolute, relative to ``sls``.
    u^(\.+)(.*)$u.u8Attempted relative include goes beyond top level package(RBRbtgroupsRTRRR6(trelativeR#tlevelstsuffixtlevel_counttp_comps((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyRn(scc@skxd|D]\}t|t�rttj|��\}}|dksO||krc|||fVqcqqWdS(u{
    Given a list of items::

        - whatever
        - name1: value1
        - name2:
          - key: value
          - key: value

    return a generator that yields each (item, key, value) tuple, skipping
    items that are not name-value's(dictionaries) or those not in the
    list of matching names. The item in the returned tuple is the single-key
    dictionary.
    N(RFRtnextRRjR?(tthelisttnamestnvitemR_tvalue((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyRh6s

cc@sCx<t||�D]+\}}}xt|�D]}|Vq,WqWdS(u}
    Like nvlist but applied one more time to each returned value.
    So, given a list, args,  of arguments to a state like this::

      - name: echo test
      - cwd: /
      - require:
        - file: test.sh

    nvlist2(args, ['require']) would yield the tuple,
    (dict_item, 'file', 'test.sh') where dict_item is the single-key
    dictionary of {'file': 'test.sh'}.

    N(Rh(RR�RiR�Rq((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pytnvlist2Nsuincludeuexcludecc@s�x�tj|�D]y\}}|jd�r1qn||krCqnxCtj|�D]2\}}|jd�rtqSn||||fVqSWqWdS(Nu__(RRjRS(tstates_dicttsid_excludesR7RktsnameR]((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyRgbsurequireu
require_inuwatchuwatch_inuuseuuse_inulistenu	listen_inu	onchangesuonchanges_inuonfailu	onfail_inc
	C@s�d|kr*|r*t|d|t�nxht|�D]Z\}}}}xEt|t�D]4\}}}|jd�rYt||�||<qYqYWq7Wxt|�D]�}|jd�r�t||�}||kr�tdj	||���nx�t
j||�D]}\}}t|�t
kr%qnxV|D]1}	t|	t�r,tt|	��dkr,Pq,q,W|jdtd|d��qW||||<||=q�q�WdS(Nuextendu.uECan't rename state id({0}) into {1} because the later already exists!unameiR_i(R/RARgR�t
REQUISITESRSRwtlistRR+RRjt
state_nameR	RFRR~titertinsert(
RR#t	is_extendR7RiR]treqR�tnewsidR^((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR/rs, 
'!(tchaincC@sd�}t�}t�}x9|D]1}x(||D]}|j|||��q3Wq"Wd	}x�t|�D]�\}}}}	|dkrMx�t|�D]�\}
}}}xKt|t�D]:\}}
}tj||
|
�g�jd|
|f�q�WxKt|t	�D]:\}}
}t
j||
|
�g�jd|
|f�qWq�Wqjn|||�}|j|�t|	t�}|tkr�t|t|�}nxP|D]H\}}
}|||
�|kr�t
dj||||
����q�q�Wt|	t	�}|t
krt|t
|�}nxP|D]H\}}
}|||
�|kr%t
dj||||
����q%q%W|ddk	r�y3tt|	dg��djdt|g��Wq�tk
r�|	jtdt|g�g��q�Xn|j|�t|�|f}qjWdS(
NcS@sdj|t|��S(Nu{0}:{1}(R+R�(R7R9((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pytT�suextenduUState({0}) can't require/watch/listen/onchanges/onfail a state({1}) defined after it!ueState({0}) can't require_in/watch_in/listen_in/onchanges_in/onfail_in a state({1}) defined before it!iurequireitrequire(NN(tsettaddR?RgR�tREQUIREtEXTENDED_REQUIREt
setdefaulttappendt
REQUIRE_INtEXTENDED_REQUIRE_INtremoveR�RR+R~RhR�Rt
StopIterationR�(RR�t
states_beforetstates_afterR7R9t
prev_stateRkR�R]tesidRiteargstrstatetrsidttagtreqs((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR,�sT			
)-
3
)
cC@s�td}||kr.tdj|���n|s8dSd
}xjtj|�D]M\}}||ksN|jd�r{qNnd|ks�|d|krNPqNqNWtd��i|tttj||���6}ii|gd	6gt	6||<dS(Nustateconf_start_stateuBCan't generate start state({0})! The same state id already exists!uincludeuexcludeuextendu__u__sls__u0Can't determine the first state in the sls file!u
require_in(uincludeuexcludeuextend(
RRR+RRjRSR�R~RRR(RR#t	start_sidtnon_sidsR7Rktreqin((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR-�s 
&cC@s�td}||kr.tdj|���nug}xOt|d�D]>\}}}}d|krhqDn|ji|t|�6�qDWitd|�gt6||<dS(	Nustateconf_goal_stateuACan't generate goal state({0})! The same state id already exists!uincludeuexcludeuextendu__sls__R�(uincludeuexcludeuextend(RRR+RgR�R�RR(Rtgoal_sidtreqlistR7RkR9Ri((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR.�s
cC@s|jdd�dS(uk
    Return the name of the state regardless if sname is
    just the state name or a state.func name.
    u.ii(R(R�((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR�stBunchcB@seZd�ZRS(cC@s||S(N((tselfR_((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyt__getattr__s(t__name__t
__module__R�(((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR�sc
C@sbx[tj|�D]J\}}|dkrB|rBt|t�qnt|krWt}nt|krt}nq|r{tnt}|j|t	��}xL||D]@}t
|t�s�q�nttj|��\}}|||<q�W|r|tkrt|}	x=dD]5}
|
|	kr	|	|
c||j
|
g�7<q	q	W||jt|�qqWdS(Nuextendurequireuwatchulistenu	onchangesuonfail(urequireuwatchulistenu	onchangesuonfail(RRjR0RAR	RtSTATE_CONF_EXTRQR�R�RFRR~tgetR(RR�tstate_idt
state_dicttkeytto_dicttconftsdktvaltextendt	requisite((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyR0's,
		

'(urequireu
require_inuwatchuwatch_inuuseuuse_inulistenu	listen_inu	onchangesuonchanges_inuonfailu	onfail_in(urequireuwatchulistenu	onchangesuonfail(u
require_inuwatch_inu	listen_inuonchanges_inu	onfail_in(>t__doc__t
__future__RRRRVRRBR@R&tsalt.utils.filesRHtsalt.utils.stringutilstsalt.exceptionsRtsalt.extRtsalt.ext.six.movesRt__all__t	getLoggerR�R2RRR	RRtbasenamet__file__tMOD_BASENAMER+RERfR*R(R)RwRnR?RhR�t	frozensetRgR�R>R/R�R�R�R�t	itertoolsR�R,R-R.R�RR�RQR�R0(((s</usr/lib/python2.7/site-packages/salt/renderers/stateconf.pyt<module>sb	
	
	�					&	;			


Zerion Mini Shell 1.0