%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/thread-self/root/lib/python2.7/site-packages/salt/cloud/clouds/
Upload File :
Create Path :
Current File : //proc/thread-self/root/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddlZddl	Z	ddl
ZddlZddl
jZddlmZddlZddlZddlmZeje�Zid&d6dd	6d
d6dd
6dd6dd6ZiZid'd	6dd
6Zd�Zd�Zdd�Zdd�Zd�Zd�Z d�Z!d�Z"ddd�Z$ddd�Z%dd�Z&dd �Z'd!�Z(dd"�Z)dd#�Z*d$�Z+dd%�Z,dS((u�
Install Salt on an LXC Container
================================

.. versionadded:: 2014.7.0

Please read :ref:`core config documentation <config_lxc>`.
i(tabsolute_importtprint_functiontunicode_literalsN(tSaltCloudSystemExit(tsixi<ucmd.runi
u	test.pingi(ulxc.infoi,ulxc.listidu
lxc.templatesugrains.itemsiicC@stS(u(
    Needs no special configuration
    (tTrue(((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt__virtual__2scC@s*t�s
dSt�}dj|d|�S(Nusalt.cloud.lxc.{0}.{1}utarget(tget_configured_providertformat(tid_tinfos((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt
_get_grain_id9s		uminioncC@sidtkr%tjjtd�}n
tdf}tjjdtjj||��}tj|�}|S(Nu	conf_fileu
config_diruSALT_MINION_CONFIG(	t__opts__tostpathtdirnametenvirontgettjointconfigt
minion_config(tcfgtdefault_dirtopts((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_minion_opts@s
	umastercC@ssdtkr%tjjtd�}n
tdf}tjjdtjj||��}tj|�}d|d<|S(Nu	conf_fileu
config_diruSALT_MASTER_CONFIGuquietuoutput(	RR
RRRRRRt
master_config(RRR((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_master_optsKs
	
cC@stjjdt��S(Ntmopts(tsalttclienttget_local_clientR(((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_clientWscC@stjjt��S(N(RtrunnertRunnerClientR(((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_runner[scO@s�y|jd�}Wntk
r,d}nXy|jd�}Wntk
rYd}nXyt|jd��}Wn)ttfk
r�tj|d�}nXy|jd�}Wntk
r�i}nX|s�t�}|s�dS|d}ntj�}t	}	|t
kr't}	|t
|}nytj
jj|�}
Wntk
rYd	}
nXytj
jj|�}Wntk
r�d	}nXytj
jj|�}Wntk
r�d	}nX||||
||f}
|	s�|	r�|
tkr�t�}t�}|j�}||d
<|jdd�|jdd�d
}d}t}|dkrd|d}nx�||krEy�|d
kr�tjd�n|jd|dddd�}t|j��}|s�t	}nx#|D]}|tk	r�t	}q�q�W|std��nPWqgtk
rAt	}|d7}tjd|�qgXqgW|sdtdj|���n|jd|d|d|d||�}|jd|ddd|gdd|�}t |j|t	��}tj�|}x�|r�i|d6dd6|gd6dd
6}|j|�}t |j|t	��}|s<Pn|rxtj�|krxtdj|t!j"|����ntj|�q�Wt#idd6j|d ��}x�|rY|d!8}|jd"|itd#6g�}||kr�||}Pn&d$|krd%|kr|d$}Pn|d(krI|rIit	d6j|t	�}ntjd!�q�Wy(d&|kr�td'j|���nWn$tk
r��ntk
r�nX|	r�|t|
<q�n|	r�|
tkr�t|
}n|S()uExecute a salt function on a specific minion

    Special kwargs:

            salt_target
                target to exec things on
            salt_timeout
                timeout for jobs
            salt_job_poll
                poll interval to wait for job finish result
    u
salt_job_pollg�������?usalt_targetusalt_timeouti�ukwargsNutargetuutimeoututgt_typeulistii<u	test.pingittgtttimeouti
tfunuUnreachableu%s unreachable, retryinguTarget {0} unreachabletargtkwargusaltutil.find_jobutgtufunuarguTimeout {0}s for {1} is elapsedu5u120g�?ujobs.lookup_jidu	__kwarg__udatau	outputteruis not available.u$module/function {0} is not available(u	test.ping($tpoptKeyErrortNonetintt
ValueErrort
__FUN_TIMEOUTRRttimetFalset
__CACHED_FUNSRRtutilstjsontdumpst	TypeErrort__CACHED_CALLSRR"tcopyt
setdefaulttsleeptcmdtlisttvaluest	ExceptiontlogterrorRRt	cmd_asynctbooltpprinttpformattfloat(R%targstkwtpollttargetR$tkwargsR
tlapstcachetsargstskwtskwargst	cache_keytconnR trkwargstping_retriestping_max_retriestpingtpingsR;tvtjidtcrettrunningtendtotwait_for_restret((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_saltas







	






		

		



				

	
	






cC@s
td�S(Nu
lxc.templates(R\(((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pytavail_imagessc
C@spt}tjdg�}tjdi�}tjdtjdg��}tjdt�}tjdd�}x2dd	d
gD]!}tj|t�r|d}q|q|W|r�d}n|r�|r�d}n|r�|r�|r�t}nt�s�dSd}	|r ||kr ||jdd�}	ntd
dtd|	�}
i}x+tj|
�D]\}}
xtj|
�D]�\}}i|d6|d6dd6|dd6|j	�d6|dd6|dd6}|dks�|rF||kr�|dks�|dkrFi|d6|d6dd6|dd6|j	�d6|dd6|dd6||<qji|d6|j	�d6||<qjWqNW|S(Nunamesuprofilesuprofileuinternal_lxc_profileudestroyuactionuu
full_queryuselect_queryuqueryufullupathulxc.listtextraRuidunameuimageusizeustateu
public_ipsuprivate_ips(ufull(uaction(ufull(
R/RRRRR*R\Rt	iteritemstlower(ROtcallthidetnamestprofilestprofiletdestroy_opttactiontoptRtlxclisttnodeststatetlxcstlxcctlinfostinfo((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt
list_nodessX	
	
			
7
&cC@s/t�s
dS|sd}ntd|d|�S(NuactionRORa(RRp(RORa((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pytlist_nodes_full<s
		cC@sKt�s
dS|sd}ntd|�}td||tt�||S(uC
    Show the details from the provider concerning an instance
    NuactionRaucloud.cache_node(RRqt	__utils__t__active_provider_name__R(tnameRaRj((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt
show_instanceDs		cC@se|sd}nt�sdSddddddd	g}tjjjtd
d�tjd|�|�S(
uO
    Return a list of the VMs that are on the provider, with select fields
    uselectNuidunameuimageusizeustateu
public_ipsuprivate_ipsRauactionuquery.selection(RRR1tcloudtlist_nodes_selectRqRR(RaRo((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyRwRs		cC@s�dj|�}t|dj��}|j�x6|D].\}}|dj||jdd��7}q6W|ds�d|kr�|d=nt|��ntj|�|S(Nu#
id: {name}
last message: {comment}uchangesu
    {0}:
      {1}u
u
      uresult(RR:titemstsorttreplaceRR=Ro(R[tsrettkeystchtcomment((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt_checkpoint`s
	


c	
C@s�tjdt�}tjdi�}tjdtjdg��}d	}|rs||krs||jdd	�}ntjdd�}|dkr�|r�td��nt�s�d	Sid
j|�d6td6}td
|d|�r�tddddj|�di|d6|d6dtddtd�td|dt	d|�}|d|d<|dr�dj|�|d<tddddj|�di|d6|d6dtddtd�tjdt�t	kr�td |t
jd!�d"t�q�q�n|S(#uDestroy a lxc containerudestroyuprofilesuprofileuinternal_lxc_profileupathuactionuuEThe destroy action must be called with -d, --destroy, -a or --action.Nu{0} was not founducommenturesultulxc.infoRucloud.fire_eventueventudestroying instanceusalt/cloud/{0}/destroyingRDunameuinstance_idtsock_dirusock_dirt	transportu	transportulxc.destroytstopu{0} was destroyedudestroyed instanceusalt/cloud/{0}/destroyeduupdate_cachedirucloud.delete_minion_cachediru:i(RRR/R*RRRR\RrRRstsplit(	tvm_RaRfRdReRRgR[RW((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pytdestroywsJ		



*c
C@s�t|�}|sdS|jd|jdd��}|j�}||d<tddddj|d	�d
tdd|d	dd
dg�dtddtd�i|d	d	6id6td6dd6}d|kr+d|kr+tj	d|d	�t
jjj
t
jjd|t��\|d<|d<ntj|�}|d|d<||d<tddddj|d	�d
tdd|d	dd
dg�dtddtd�t�jd |d	gd!|�}||d"<|d|d<|dsd#j|d	�|d$<nd%|dd%<dtkr9tdtd&<td=ntddd'd(j|d	�d
tdd%|d	dd
dg�dtddtd�|S()uCreate an lxc Container.
    This function is idempotent and will try to either provision
    or finish the provision of an lxc container.

    NOTE: Most of the initialization code has been moved and merged
    with the lxc runner and lxc.init functions
    Nulxc_profileucontainer_profileuprofileucloud.fire_eventueventustarting createusalt/cloud/{0}/creatingunameRDucloud.filter_eventucreatinguproviderudriverR�usock_dirR�u	transportuchangesuresultuucommentupub_keyupriv_keyuGenerating minion keys for %sukeysizeutargetuhosturequesting instanceusalt/cloud/{0}/requestingu
requestingulxc.cloud_initR'u
runner_returnuError while creating {0},uErrorucreateduinternal_lxc_profileucreated instanceusalt/cloud/{0}/created(RRR*R6RrRRRR=tdebugRR1Rvtgen_keysRtget_cloud_config_valuetdeepcopyR"R9(R�RatprovRet
event_dataR[R'RW((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pytcreate�s`
"
&	#
"
"

	
"
cC@sJd}|tdkrFtd|}d|kr=|d}qFd}n|S(Nu	providersulxc(R*R(Rttdata((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pytget_provider�s
	cC@s.|dkri}ntjd�\}}d}d}tjdd�}tjdg�}t}|r�dj|�}||kr�t|�}t}q�n|rdtkr|rx�|D]@}dj|�}||kr�t|�}n|r�t}Pq�q�Wn�dtkr�td}	td}
d	j|	�}|	|
kr�|
|	d
tkr�|
|	d
jd�\}}|dj|�7}t|�}t}q�ntjdt�r�|s�|r�tr�tjd
i�j|i�j|i�}n|r*t	dd|d�}
|
r|St
jdt|d�ntS(uW
    Return the contextual provider of None if no configured
    one can be found.
    u:uunknownulist_imagesuunamesu
provider: {0}uprofileuprofilesuprofile: {0}uprovideru provider: {0}udestroyu	providersu	test.pingtsalt_targetutargetu0Configured provider %s minion: %s is unreachableN(R*RsR�RRR/RR�RR\R=R>(R�tdaliastdriverR�R#timg_providert
arg_providerstmatchedRttcurproftprofsR�tcdriverR[((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyR�sV	



	$ii�(-t__doc__t
__future__RRRR6tloggingR
RAR.tsalt.utils.cloudRtsalt.utils.jsontsalt.configRtsalt.exceptionsRtsalt.clienttsalt.runnertsalt.extRt	getLoggert__name__R=R-R5R0RRRRRR"R\R]R*RpRqRuRwRR�R�R�R(((s9/usr/lib/python2.7/site-packages/salt/cloud/clouds/lxc.pyt<module>	sT

					�	7	-P	

Zerion Mini Shell 1.0