Viewing File: /usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyo


oB]c@s_ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ejeZ
dZdZdgZd	e	jfd
YZdefdYZd
efdYZdefdYZdZdZdddddZddZdZeZee	jffgZ dZ!dS(iN(tlog(tnet(tsources(tutilsiid-dsopennebulatnobodys
context.shtDataSourceOpenNebulacBsSeZdZdZdZdZdZedZe	e	e	dZ
RS(t
OpenNebulacCsAtjj||||d|_tjj|jd|_dS(Nt
opennebula(	Rt
DataSourcet__init__tNonetseedtostpathtjointseed_dir(tselftsys_cfgtdistrotpaths((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR	&s	cCs)tjj|}d||j|jfS(Ns%s [seed=%s][dsmode=%s](RRt__str__Rtdsmode(Rtroot((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR+sc	Csitd6}d}d}t}d|jkrC|jjd}n|jg}|jtx|D]}yXtj	j
|jrt|d|}n*|jdrt
j|td|}nWnOtk
rqfn<tk
r}|n$t
jk
rtjd|nX|rf|}tjd|PqfqfW|sDtS|d}t
j||g}|j|jd	|jjd
g|_|jtjkrtS||_|jd|_||_|jd|_tS(
Nsinstance-idt	parseusertasusers/devtdatas%s was not mountablesfound datasource in %stmetadatatDSMODERsnetwork-interfacestuserdata( tDEFAULT_IIDR
tDEFAULT_PARSEUSERtds_cfgtgetRtextendtfind_candidate_devsRR
tisdirtread_context_disk_dirt
startswithRtmount_cbtNonContextDiskDirtBrokenContextDiskDirtMountFailedErrortLOGtwarningtdebugtFalset
mergemanydictt_determine_dsmodeRRtDSMODE_DISABLEDRtnetworkRtuserdata_rawtTrue(	RtdefaultstresultsRRt
candidatestcdevtexctmd((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyt	_get_data/sL


	
'		cCs2|j|jkrd}nd}d||jfS(s/Return the subplatform metadata source details.sseed-dirsconfig-disks%s (%s)(RR(Rtsubplatform_type((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyt_get_subplatformbs	cCs|jdk	r|jSdSdS(N(R1R
(R((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytnetwork_configjscCsF|dkr0|jtjkr't}q0t}ntjj|||S(N(R
RRtDSMODE_NETWORKR3R-Rtget_hostname(Rtfqdnt
resolve_ipt
metadata_only((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR?qs
		(t__name__t
__module__tdsnameR	RR:R<tpropertyR=R-R?(((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR"s			3	R'cBseZRS((RCRD(((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR'zsR(cBseZRS((RCRD(((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR(~stOpenNebulaNetworkcBseZddZdZdZdZdZdZdZ	dZ
dZd	Zd
Z
dZddZd
ZRS(cCs||_|dkr!t}ntjgt|jddD]}|^qC|_i|_xQ|jD]C\}}t	j
d|}|rq|jd|j|j<qqqqWdS(NtkeycSstj|dS(Ni(Rtnatural_sort_key(tk((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyt<lambda>ss
^(.+)_MAC$i(
tcontextR
tget_physical_nics_by_mactcollectionstOrderedDicttsortedtitemstifacestcontext_devnametretmatchtgrouptlower(RRLtsystem_nics_by_macRJtvtm((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR	s	"	cCs<djg|jddD]}tt|d^qS(Nt.t:ii(Rtsplittstrtint(Rtmactc((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytmac2ipscCs|j|jdddS(NR[is.0(Rbt
rpartition(RR`((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytmac2networkscCsi}|j|ddj}|j|jjddj|rV||d<n|j|ddj}|r||d<n|S(NtdnsttDNSt	addressest
search_domaintsearch(t	get_fieldR]R!RLR (RtdevtnameserversReRi((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_nameserverss"

cCs|j|dS(Ntmtu(Rk(RRl((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_mtuscCs|j|d|j|S(Ntip(RkRb(RRlR`((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_ipscCsZg}|j|d}|r.|j|n|j|d}|rV|j|n|S(Ntip6tip6_ula(Rktappend(RRlt
addresses6RsRt((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_ip6scCs|j|ddS(Ntip6_prefix_lengtht64(Rk(RRl((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_ip6_prefixscCs|j|dS(Ntgateway(Rk(RRl((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_gatewayscCs|j|dS(Ntgateway6(Rk(RRl((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_gateway6scCs|j|ddS(Ntmasks
255.255.255.0(Rk(RRl((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_maskscCs|j|d|j|S(NR1(RkRd(RRlR`((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_networkscCs;|jjdj||fj}|dkr7|S|S(sreturn the field name in context for device dev.

        context stores <dev>_<NAME> (example: eth0_DOMAIN).
        an empty string for value will return default.t_RfN(NRf(RLR RtupperR
(RRltnametdefaulttval((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyRks'cCsi}d|d<i|d<i}x|jjD]|\}}|j}|jj||}i}i|d6|d<g|d<|j|}ttj|}|dj	|j
||d||j|}	|	r|j|}
|dj
g|	D]}|d|
^qn|j|}|r<||d<n|j|}
|
r^|
|d	<n|j|}|r||d
<n|j|}|r||d<n|||<q0W||d<|S(Nitversiont	ethernetst
macaddressRURht/tgateway4R}RmRo(RRRQRWRSR RR^Rtmask_to_net_prefixRuRrRwRzR!R|R~RnRp(RtnetconfRR`Rltc_devtdevconfRtprefixRvtprefix6tiR{R}RmRo((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytgen_confsD




%




N(RCRDR
R	RbRdRnRpRrRwRzR|R~RRRkR(((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyRGs						
						cCsag}xTdD]L}tj|}|jx*|D]"}||kr3|j|q3q3Wq
W|S(sE
    Return a list of devices that may contain the context disk.
    s
LABEL=CONTEXTsLABEL=CDROMsTYPE=iso9660(s
LABEL=CONTEXTsLABEL=CDROMsTYPE=iso9660(Rtfind_devs_withtsortRu(tcombinedtftdevstd((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR"s


cCs
dd|gS(Ntsudos-u((tuser((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytswitch_user_cmdscCs!t|tr|g}n|dkr6ddg}n|dkrKt}ngtjdD]}d|^qY}|}|dkr|}g}ndjd}d}	d	||	|d
|d	|	|d}
g}|dk	r||}n|j|tj	|d|
\}}
d}i}i}d}|dd!}x|j
dD]}yo|j
dd\}}||kr|||<n:||kr||ks|j||kr|||<nWqTtk
r|dkrn|dkr|}q||kr|}qqTXqTW|S(Ntbashs-eRs${!%s*}s
s__v="";RfcSs)djdddj|dddfS(Ns
sprintf "%s\0" _start_sfor __v in %s; dot s%   printf "%s=%s\0" "$__v" "${!__v}";tdoneRf(R(tvlist((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyt
varprinter/ss
unset IFS
s{
%s

:
} > /dev/null
Rt
EPOCHREALTIMEtEPOCHSECONDStRANDOMtLINENOtSECONDSt__viitt=it_start_(s__v="";Rf(RRRRRRR(
t
isinstanceR^R
Rtstringt
ascii_lettersRR!RtsubpR]R t
ValueError(tcontenttkeylistRRtswitch_user_cbtxtallvarst
keylist_intsetupRtbcmdtcmdtoutputt_errortexcludedtpresettretttargettlineRHR((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytparse_shell_configsR	$		.


!
	cCsEi}xBtD]:}tjj||}tjj|r
|||<q
q
W|sjtd|dfni}idd6id6}d|krd|dk	rytj|Wqt	k
rt
djd|qXny:tjj|d}tj
|}t|d|}Wqptjk
r>}	t
d	|	qptk
r`}	td
|	qpXntd|sz|S||d<d}
d|krd}
nd
|krd
}
n|
r|j|
j}g|D](}t|r|jdr|^q|dd<nx0dD](}
|
|kr||
|dd<PqqWd|kr_|d|d<nd|kr||d|d<nd|kr|jd|jd}|dkrytj|d|d<Wqtk
rtjdqXqng|D]}
tjd|
r|
^q}|rAt|}|j|d<n|S(s
    read_context_disk_dir(source_dir):
    read source_dir and return a tuple with metadata dict and user-data
    string populated.  If not a valid dir, raise a NonContextDiskDir
    s%s: %ssno files foundRRs
context.shs'configured user '{user}' does not existRRsError processing context.sh: %ssError reading context.sh: %ssMissing context.shtSSH_KEYtSSH_PUBLIC_KEYt#spublic-keystHOSTNAMEt	PUBLIC_IPt	IP_PUBLICtETH0_IPslocal-hostnamet	USER_DATAtUSERDATAtUSERDATA_ENCODINGtUSER_DATA_ENCODINGtbase64s"Failed base64 decoding of userdatas
^ETH\d+_IP.*$snetwork-interfacesN(RRRR(tCONTEXT_DISK_FILESRR
RtisfileR'R
tpwdtgetpwnamtKeyErrorR(tformatRt	load_fileRtProcessExecutionErrortIOErrorR t
splitlinestlenR%tb64dt	TypeErrorR*R+RTRURGR(t
source_dirRtfoundtaftfnRLR5R
Rtetssh_key_vartlinestlRJtencodingtipaddr_keystonet((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyR$qsx

	
		
'
	
+cCsJtj}tg|jD]'\}}tj|r||f^qS(N(Rtget_interfaces_by_mactdictRQtis_physical(RRZtn((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyRMscCstj|tS(N(Rtlist_from_dependstdatasources(tdepends((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pytget_datasource_lists("RNRRRTRt	cloudinitRtloggingRRRt	getLoggerRCR*RRRRRt	ExceptionR'R(tobjectRGR"RR
RR$RMtDataSourceOpenNebulaNettDEP_FILESYSTEMRR(((sJ/usr/lib/python2.7/site-packages/cloudinit/sources/DataSourceOpenNebula.pyt<module>s2	X			WY	
Back to Directory File Manager