%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/modules/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyc

�
���^c@@stdZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZddlZddlZddlZddlmZdZd	Ze�Zd
jdd�ZejejBej BZ!idd
6gd6d	d6dd6id6dd6dd6Z#idd6dd6Z$dZ%ej&e'�Z(dZ)d�Z*d�Z+defd��YZ,e,�Z-d�Z.d�Z/ee0dd�Z1edd �Z2edd!�Z3e0d"dd4de0dd#�Z4d$efd%��YZ5ej6dd5d&�Z7ej6dd6d'�Z8dd(�Z9d"d)�Z:d"d*�Z;d+�Z<d,�Z=e+d"dddd7e0dd-��Z>e+d"d.ej6dddd8dde0e0de0dd/��Z?e+d"d.ddde0e@dd9e0e0e0dd0�
�ZAd1�ZBe+d"d.ddd:de0dde0e0ej6e0e0dde0dd2��ZCdd;d3�ZDdS(<u�
Management of zc.buildout

.. versionadded:: 2014.1.0

.. _`minitage's buildout maker`: https://github.com/minitage/minitage/blob/master/src/minitage/core/makers/buildout.py

This module is inspired by `minitage's buildout maker`_

.. note::

    The zc.buildout integration is still in beta; the API is subject to change

General notes
-------------

You have those following methods:

* upgrade_bootstrap
* bootstrap
* run_buildout
* buildout
i(tabsolute_importtprint_functiontunicode_literalsN(tsix(trange(turlopen(tCommandExecutionErroru2We did not get any expectable answer from buildoutuu{0}
u-iPustatusulogsucommentuoutu
logs_by_leveluoutloguoutlog_by_levelu,http://downloads.buildout.org/1/bootstrap.pyiu,http://downloads.buildout.org/2/bootstrap.pyiubuildoutcC@stS(u0
    Only load if buildout libs are present
    (t__virtualname__(((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt__virtual__Ksc@s)tj��fd�}�j|_|S(Nc
@sbtj|�}x=g|D]}d|kr|^qD]}|j|d�q5Wtj�}|jdd�}|jdd�}|jdd�}|jdd�}|jdd�}	tj�}
y�t||d|d	|d
|	�}
|
dkr�tj�}
dt}}�||�}t|t	�s=t
|
d|�}
q�|jd
t�rX|}
q�t|
d|jdt�d|jdd�d|jd|��}
nWn7t
k
r�tjd�}
tj|
�t|
�nXtj�xydddgD]h}|
|r�t|
|tj�r�djg|
|jd�D]}|j�r2|^q2�|
|<q�q�W|
S(Nu__pubu	directoryu.uonlyifuunlessurunasuenvt	directorytrunastenvutoutumerged_statuseststatusustatustcommentucommentuoutuoutlogu
((tcopytdeepcopytpoptNonetBASE_STATUStgett_check_onlyif_unlesstTruet
isinstancetdictt_validtFalset_set_statust	Exceptiont	tracebackt
format_exctLOGterrort_invalidtclearRtstring_typestjointsplittstrip(tatkwtartktstR	tonlyiftunlessR
RR
RRttracetlog(tfunc(s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_call_callbackUsP,	
		


 &(RR"t__doc__(R0tkwargsR1((R0s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_salt_callbackRs
2t_LoggercB@szeZdZd�Zd�Zd�Zd�Zd�Zd	�ZeZ	d
�Z
d�Zed��Z
ed
��ZRS(uinfouwarnudebuguerrorcC@sg|_i|_dS(N(t_msgst	_by_level(tself((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt__init__�s	cC@sqt|tj�s$|jd�}n||jkrCg|j|<n|jj||f�|j|j|�dS(Nuutf-8(RRt	text_typetdecodeR7R6tappend(R8tleveltmsg((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_log�scC@s|jd|�dS(Nudebug(R?(R8R>((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytdebug�scC@s|jd|�dS(Nuinfo(R?(R8R>((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytinfo�scC@s|jd|�dS(Nuerror(R?(R8R>((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyR �scC@s|jd|�dS(Nuwarn(R?(R8R>((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytwarn�scC@sRx|jD]}g|j|<q
Wx*tt|j��D]}|jj�q7WdS(N(R7RtlenR6R(R8ti((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyR"�scC@s|jj|g�S(N(R7R(R8R=((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytget_logs�scC@s|jS(N(R6(R8((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytmessages�scC@s|jS(N(R7(R8((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytby_level�s(uinfouwarnudebuguerror(t__name__t
__module__tlevelsR9R?R@RAR RBtwarningR"REtpropertyRFRG(((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyR5�s								cC@s(t|tj�r$|jd�}n|S(Nuutf-8(RRR:tencode(tstring((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_encode_string�scC@s�t|d�|d<t|d�|d<|dr�xAt|d�D].\}}|dt|d�f|d|<qDWxfdD][}|d
j|g�}|r}x5t|�D]$\}}t|�|d
||<q�Wq}q}Wn|S(Nuoutuoutlog_by_levelulogsiiuerroruwarnuinfoudebugu
logs_by_level(uerroruwarnuinfoudebug(ROt	enumerateR(R
RDtdatatloggertlogsR/((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_encode_status�s
&
&cC@s�||d<||d<tj|d<tjj�|d<d\}}||d<|r�t|tj�r�|t7}|d7}|djt	|��7}|t7}n|dr�|t7}|d	7}|t7}|t7}|d
7}|t7}x:|dD].\}}|dj|j
�t	|��7}q�Wx�dD]�}|dj|g�}	|	r'|dj|j
��7}x+t|	�D]\}
}t	|�|	|
<qpW|dj
|	�7}|d7}q'q'W|t7}n||d<||d<t|�S(u'
    Assign status data to a dict.
    uoutustatusulogsu
logs_by_leveluucommentuOUTPUT:
u{0}
u
Log summary:
uLog summary by level:
u

{0}: {1}
uerroruwarnuinfoudebugu
{0}:
u
uoutloguoutlog_by_level(uu(uerroruwarnuinfoudebug(RRFRGRRRR#tHRtformatROtupperRRPR$RT(tmRR
Rtoutlogtoutlog_by_levelR=R>RRRStidxR/((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyR�sB
















cC@st|dtd|d|�S(u 
    Return invalid status.
    R
RR(RR(RXRR((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyR!�scC@st|dtd|d|�S(u
    Return valid status.
    R
RR(RR(RXRR((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyRsu.c
C@s�d}tjj|�}t|t�r9dj|�}ntjdj	|��|s^d}nt
d|d|d|d|d|d	|d
t�}|dd|d
}	|dk	r�|d|kr�t|	��n|	|d<|r�|	}n|S(u�
    Run a command.

    output
        return output if true

    directory
        directory to execute in

    runas
        user used to run buildout as

    env
        environment variables to set when running

    exitcode
        fails if cmd does not return this exit code
        (set to None to disable check)

    use_vt
        Use the new salt VT to stream output [experimental]

    u uRunning {0}udebugucmd.run_alltcwdtoutput_loglevelR
Rtuse_vttpython_shellustdoutu

ustderruretcodeuoutputN(
RtostpathtabspathRtlistR$RR@RVt__salt__Rt_BuildoutError(
tcommandtoutputR	R
RtexitcodeR^tlogleveltretR((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_Popen	s"	
	RecB@seZdZRS(u!
    General Buildout Error.
    (RHRIR2(((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyRe;scC@sjt}yF|ddg}t|d|d|dt�}d|krKt}nWntk
ret}nX|S(Nu-cuR'import pkg_resources;print pkg_resources.get_distribution("distribute").location'R
RRgudistribute-0.6(RRkRR(tpythonR
Rtold_distributetcmdRj((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_has_old_distributeAs	


cC@spt}yL|ddg}t|d|d|dt�}d|j�krQt}nWntk
rkt}nX|S(Nu-cug'import pkg_resources;print not pkg_resources.get_distribution("setuptools").version.startswith("0.6")'R
RRgutrue(RRkRtlowerR(RlR
Rtnew_stRnRj((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_has_setuptools7Qs	


c
C@s,ddg}g}|s!g}nx�tj|�D]z}tjj||�}|jd�r}tjj|�r}|j|�ntjj|�r1||kr1|j|�q1q1Wxv|D]n}xetj	jj
|�D]N\}}}	x<|	D]4}|jd�r�|jtjj||��q�q�Wq�Wq�W|S(u�
    Find all buildout configs in a subdirectory.
    only buildout.cfg and etc/buildout.cfg are valid in::

    path
        directory where to start to search

    cfg
        a optional list to append to

            .
            ├── buildout.cfg
            ├── etc
            │   └── buildout.cfg
            ├── foo
            │   └── buildout.cfg
            └── var
                └── buildout.cfg
    uvarupartsu.cfg(R`tlistdirRaR$tendswithtisfileR<tisdirtsalttutilstos_walk(
RatcfgstignoredtdirsRDtfitfpathtptidstifs((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt
_find_cfgsas 	!
%
+cC@s|yXtjjjtjjtjj|�d���"}tjjj	|j
��}WdQXWnttfk
rwd}nX|S(u5
    Get the current bootstrap.py script content
    ubootstrap.pyNu(
RwRxtfilestfopenR`RaR$Rbtstringutilst
to_unicodetreadtOSErrortIOError(R	tfict
oldcontent((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_get_bootstrap_content�s
cC@s�tjj|�}d}y�t|�}x}|D]u}tjjj|��X}tj	dt
�}tjjj|j
��}d|ks�|j|�r�d}nWdQXq.Wt|�}d|ks�d|ks�d|kr�d}nWnttfk
r�nX|S(	u,Check for buildout versions.

    In any cases, check for a version pinning
    Also check for buildout.dumppickedversions which is buildout1 specific
    Also check for the version targeted by the local bootstrap file
    Take as default buildout2

    directory
        directory to execute in
    iu^zc\.buildout\s*=\s*1ubuildout.dumppickiNu--download-baseu--setup-sourceu--distribute(R`RaRbR�RwRxR�R�tretcompiletRE_FR�R�R�tsearchR�R�R�(R	tbuildoutverR�tfR�tbuildout1retdfictbcontent((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_get_buildout_ver�s&

cC@s t|�}tj|tt�S(uy
    Get the most appropriate download URL for the bootstrap script.

    directory
        directory to execute in

    (R�t
_URL_VERSIONSRtDEFAULT_VER(R	tv((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_get_bootstrap_url�scC@stjjtjj|�d�S(uX
    Get the local marker directory.

    directory
        directory to execute in
    u	.buildout(R`RaR$Rb(R	((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt
_dot_buildout�s	cC@s�|rt|}nt|�}t|�}tjdj|��tjj|�}tjj	|d�}d}	y�t
|�}
t|�}|
}t}
t}|sCyZtjj
|�s�tj|�ntjjjtjj	|dj|����WdQXWqCttfk
r?tjd�t|�j�}t}
t}qCXnd|kr�t}
|j�}|jdd	�d
j	|�}n|
r�d}	tjjj|d��#}|jtjjj|��WdQXn|rtjjjtjj	|dj|��d��}|jd
�WdQXnWn]ttfk
r~|
rtjjj|d��#}|jtjjj|
��WdQXqnXi|	d6S(u�
    Upgrade current bootstrap.py with the last released one.

    Indeed, when we first run a buildout, a common source of problem
    is to have a locally stale bootstrap, we just try to grab a new copy

    directory
        directory to execute in

    offline
        are we executing buildout in offline mode

    buildout_ver
        forcing to use a specific buildout version (1 | 2)

    onlyif
        Only execute cmd if statement on the host return 0

    unless
        Do not execute cmd if statement on the host return 0

    CLI Example:

    .. code-block:: bash

        salt '*' buildout.upgrade_bootstrap /srv/mybuildout
    u	Using {0}ubootstrap.pyuu{0}.updated_bootstrapNu!Bootstrap updated from repositoryusocket.setdefaulttimeoutiu)import socket;socket.setdefaulttimeout(2)u
uBootstrap updateduwufooucomment(R�R�R�RR@RVR`RaRbR$R�R�RRvtmakedirsRwRxR�R�R�R�RAt_urlopenR�Rt
splitlinestinserttwriteR�tto_str(R	R,R-R
Rtofflinetbuildout_vertbooturltb_pyRR�tdbuildRQtupdatedtdledtldataR�tafic((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytupgrade_bootstrap�s\#



%)ubuildout.cfgc@C@stjj|�}t|�}d}td|d|d|�}td|d|d|�}|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r$|r$|r$|r$t}t}n|rM|rM|rM|rMt}t}n|rv|rv|rv|rvt}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r|r|r|rt}t}n|rE|rE|rE|rEt}t}n|ro|ro|ro|rot}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r�|r�|r�|r�t}t}n|r|rt}n|rt}tj	d�n|rTt}|dkrTtj	d�|d7}qTntjj
|�svtj|�nt|d	|
d
|�tjj
|d�}tjjj|��"}tjjj|j��}WdQX|	tk	r�d
|kr�|d
7}n|r'd|kr'|dj|�7}nyH|rntd|�d}td|�d}tjd||�nWnAttfk
r�}tjdj|�dtjtj��nXdj||�}t|d|d|d|
d|d|�}|d}i|d6|d6S(u�
    Run the buildout bootstrap dance (python bootstrap.py).

    directory
        directory to execute in

    config
        alternative buildout configuration file to use

    runas
        User used to run buildout as

    env
        environment variables to set when running

    buildout_ver
        force a specific buildout version (1 | 2)

    test_release
        buildout accept test release

    offline
        are we executing buildout in offline mode

    distribute
        Forcing use of distribute

    new_st
        Forcing use of setuptools >= 0.7

    python
        path to a python executable to use in place of default (salt one)

    onlyif
        Only execute cmd if statement on the host return 0

    unless
        Do not execute cmd if statement on the host return 0

    use_vt
        Use the new salt VT to stream output [experimental]

    CLI Example:

    .. code-block:: bash

        salt '*' buildout.bootstrap /srv/mybuildout
    uRlR
Ru6Forcing to use setuptools as we have setuptools >= 0.7iuUsing distribute !u
 --distributeR�R�ubootstrap.pyNu  --accept-buildout-test-releasesu"-c"u -c {0}u	user.infouuidugidu)BUILDOUT bootstrap permissions error: {0}texc_infou{0} bootstrap.py {1}R	RiR^uoutputucommentuout( R`RaRbR�RoRrRRRRKRvR�R�R$RwRxR�R�R�R�R�RVRdtchownR�R�t_loggerR tisEnabledFortloggingtDEBUGRk(R	tconfigRlR,R-R
Rt
distributeR�ttest_releaseR�RqR^RiR�tbootstrap_argsthas_distributet
has_new_stR�R�tcontenttuidtgidtexcRnRjRg((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt	bootstrap,s�?
	
	
		

	

	

	
	

	

	

	
	
	
	
			
	!
	
c
C@s<tjj|�}tjj|dd�}
tjj|d�}g}|	rhtjd�|jd�n|r�tjj|�r�tjd�|jd�n|r�tjd�|jd	�n|r�tjd
�|jd�n|
rtjd�|jd
�ngg}}|r�x�|D]�}tjdj	|��dj	|
|dj|�|�}|j|�|jt
|d|d|d|dtd|d|��q!Wnotjd�dj	|
|dj|��}|j|�|jt
|d|d|d|d|dtd|��idj|�d6dj|�d6S(u
    Run a buildout in a directory.

    directory
        directory to execute in

    config
        alternative buildout configuration file to use

    offline
        are we executing buildout in offline mode

    runas
        user used to run buildout as

    env
        environment variables to set when running

    onlyif
        Only execute cmd if statement on the host return 0

    unless
        Do not execute cmd if statement on the host return 0

    newest
        run buildout in newest mode

    force
        run buildout unconditionally

    verbose
        run buildout in verbose mode (-vvvvv)

    use_vt
        Use the new salt VT to stream output [experimental]

    CLI Example:

    .. code-block:: bash

        salt '*' buildout.run_buildout /srv/mybuildout
    ubinubuildoutu.installed.cfgu$Buildout is running in verbose mode!u-vvvvvvvu'Buildout is running in non newest mode!u-Nu#Buildout is running in newest mode!u-nu$Buildout is running in offline mode!u-ou"Buildout is running in debug mode!u-DuInstalling single part: {0}u{0} -c {1} {2} install {3}u R	R
RRgRiR^uInstalling all buildout partsu{0} -c {1} {2}u
ucommentuout(R`RaRbR$RR@R<texistsRARVRkR(R	R�tpartsR,R-R�tnewestR
RtverboseR@R^Ritbcmdt
installed_cfgtargvtcmdstoutputstpartRn((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytrun_buildoutsX8









cC@s�tj�}d|d<t|d<g|d<xe|D]]}|dtk	rX|d|d<n|d}t|d�}|d}|d}|d}|d}|r|ds�d	|d<n|dcd
7<|dct7<t|�}|dcdj|�7<|dct7<n|rN|ds,d	|d<n|dcdjt|��7<n|r�|dskd	|d<nt|�}|dcd
jt�7<|dc|7<n|r�|ds�d	|d<n|dcd
jt�7<|dct|�7<n|djg|D] }	|	dt|	d�f^q�xa|D]Y}
|
|dkrXg|d|
<n|d|
jg||
D]}	t|	�^qq�q1Wq1Wt	|�S(Nustatusumerged_statusesuoutucommentulogsu
logs_by_leveluoutlog_by_leveluoutloguu
u{0}
u
{0}
u
{0}ii(
RRRRRRORURVtextendRT(tstatusesR
R+RRRSt
logs_by_levelRZRYR'R/((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt_merge_statusesjsZ

















.
,cC@s�tjdj||��t|d|d|d|d|	d|d|d|d	|d
|d|d|�}td
|d|d|d|	d|
d|d|d|
d|d|d|�}t||g�S(u6
    Run buildout in a directory.

    directory
        directory to execute in

    config
        buildout config to use

    parts
        specific buildout parts to run

    runas
        user used to run buildout as

    env
        environment variables to set when running

    buildout_ver
        force a specific buildout version (1 | 2)

    test_release
        buildout accept test release

    new_st
        Forcing use of setuptools >= 0.7

    distribute
        use distribute over setuptools if possible

    offline
        does buildout run offline

    python
        python to use

    debug
        run buildout with -D debug flag

    onlyif
        Only execute cmd if statement on the host return 0

    unless
        Do not execute cmd if statement on the host return 0
    newest
        run buildout in newest mode

    verbose
        run buildout in verbose mode (-vvvvv)

    use_vt
        Use the new salt VT to stream output [experimental]

    CLI Example:

    .. code-block:: bash

        salt '*' buildout.buildout /srv/mybuildout
    uRunning buildout in {0} ({1})R�R�R�R�RqRR
R�RlR^RiR	R�R�R�R@(RRARVR�R�R�(R	R�R�R
RR�R�R�RqR�R�RlR@R�R,R-R^Ritboot_rettbuildout_ret((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pytbuildout�s2N			c
C@spd}tj�}tjj|�rYtjj|�}t|d<td}|dk	r�t	|t
j�s�|s�t|d�q�q�t	|t
j�r�||d|d|d|�dkr�t|d�q�q�n|dk	rYt	|t
j�s|rSt|d�qSqVt	|t
j�rV||d|d|d|d	t�dkrSt|d�qSqVqYn|drl|}n|S(
Nustatusucmd.retcodeuonlyif condition is falseR\R
Riuunless condition is trueR_(
RRRR`RaR�RbRRdRRR#R(R,R-R	R
RRjR
tretcode((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyRs.

$*
	(((((((((ER2t
__future__RRRR`R�R�tsysRRtsalt.extRtsalt.ext.six.movesRt!salt.ext.six.moves.urllib.requestRR�tsalt.utils.filesRwtsalt.utils.pathtsalt.utils.stringutilstsalt.exceptionsRtINVALID_RESPONSEtVALID_RESPONSEtobjecttNOTSETRVRUtStMtUR�RRR�R�t	getLoggerRHR�RRR4R5RRORTRRR!RRkRet
executableRoRrR�R�R�R�R�R�R�RR�R�R�R(((s;/usr/lib/python2.7/site-packages/salt/modules/zcbuildout.pyt<module>s�	

		9/			'+&%		R�]	0X

Zerion Mini Shell 1.0