'KXc@sddlZddlZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddlm Z ddlmZe jeZdZidd 6Zd d d gZd ddgZdgZied6dd6ed6idd6ed6ed6dd6d6idd6d6Ziiidd 6ed!6ed"6d6d#6id$d%6d&d'6d(d)6gd*6Zd+egZd,Zd-e jfd.YZd/Zd0Z d1Z!d2Z"d3Z#dd4Z$d5Z%d6Z&d7d8d9Z'dd:Z)d;Z*d<Z+d=Z,d>Z-d?Z.d@dAZ/dBZ0dCZ1dDZ2dEZ3dFe4fdGYZ5dHe4fdIYZ6ee j7e j8ffgZ9dJZ:dS(KiN(tminidom(tlog(t PER_ALWAYS(tsources(tutiltAzuresiid-AZURE-NODEs instance-idtservicet walinuxagenttstarttshs-xcs>i=$interface; x=0; ifdown $i || x=$?; ifup $i || x=$?; exit $xsSharedConfig.xmlt agent_commands/var/lib/waagenttdata_dirt set_hostnameteth0t interfacetpolicytcommandthostnamethostname_commandthostname_bounces/dev/sdbt ephemeral0t disk_aliasestmbrt table_typetlayoutt overwritet disk_setuptext4t filesystems ephemeral0.1tdevicetntfst replace_fstfs_setupt datasourcesTemporary StoragetDataSourceAzureNetcBs5eZdZdZdZdZdZRS(cCsqtjj||||tjj|jd|_i|_d|_ t j t j |t itg|_dS(Ntazure(Rt DataSourcet__init__tostpathtjointseed_dirtcfgtNonetseedRt mergemanydicttget_cfg_by_patht DS_CFG_PATHtBUILTIN_DS_CONFIGtds_cfg(tselftsys_cfgtdistrotpaths((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyR%Fs  cCs#tjj|}d||jfS(Ns %s [seed=%s](RR$t__str__R,(R2troot((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyR6Osc Cs|jd}|jg}|jt|r?|j|nd}x|D]}y4|jdrytj|t }n t |}WnRt k rqLn?t k r}|n'tj k rt jd|qLnX|\}|_}} ||_tj|tg|_tj|tg|_|}t jd|PqLW|sNtS||krmt jd|ntjddt} | r| |jdspublishing hostnamet get_uptimeR?tkwargsR@tshelltenv(RRRTtstriptis_falseRKRQR&tenvirontcopytBOUNCE_COMMANDt isinstancetlistttupleRaRR( RRRRRt prev_hostnameR>RR((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyR;s,     cCs7d}tjdd||gdt\}}|jS(NsHopenssl x509 -noout -pubkey < "$0" |ssh-keygen -i -m PKCS8 -f /dev/stdinR s-cR(RRRTtrstrip(tfnametpipelinetoutt_err((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pytcrtfile_to_pubkey_s'cCsug}g}xI|D]A}y|jt|Wqtjk rS|j|qXqW|rqtjd|n|S(Ns-failed to convert the crt files to pubkey: %s(RDRRR`RKRL(tflistR}terrorsR((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRffs i<g?cCst|}d}xr||kr|tg|D]}tjj|r.|^q.8}t|dkrlgStj|||7}qW|S(Ni(tsetR&R'RVRcttimetsleep(RtmaxwaittnaplentneedtwaitedRu((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRbus 5 cCsu|s dS|si}ntj||xE|jD]7\}}tjdtjj||d|ddq6WdS(Ntfilenametcontenttmodei(Rt ensure_dirtitemst write_fileR&R'R((tdatadirRpR:RR((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRZs cCsG|r6tjd|tj|dt|t n tjddS(Nsinvoking agent: %sRsnot invoking agent(RKRQRRRR(tcmd((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyR_s cCsJg}|js|Sx-|jD]"}||r |j|q q W|S(N(t hasChildNodest childNodesRD(tnodet filter_funcRmtchild((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyt find_childs  c Cst|d}t|dkr(gSt|dkrStdt|n|d}t|d}t|dkrgSg}tjj}x|D]}|jsqnidd6dd6}x|jD]}|j|ks|j rqn|j j } | |j kr qnt|jdks|jdj|krQqn|jdj j || siis%Multiple 'PublicKeys'(%s) in SSH nodecSs |jdkS(Nt PublicKey(R(R((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRstR<R'(RRcRIRtDocumentt TEXT_NODERRtnodeTypeRtlowertkeyst wholeTextRRD( tsshnodetresultst pubkeys_nodeR}Rkt text_nodetpk_nodetcurRR((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pytload_azure_ovf_pubkeyss8     cs|}x|D]t|fd}t|dkr\tdt|fnt|dkrtdt|t|fn|d}q W|S(Ncs |jkS(N(R(R(ttok(sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRsismissing %s token in %sis(found %s nodes of type %s looking for %s(RRcReRY(RtpathlisttcurnodeR((RsN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pytsingle_node_at_paths "c Csytj|}Wn#tk r8}td|nXt|jd}t|dkrotdnt|dkrtdt|n|d}t|d}t|dkrtdnt|dkrtd d t|fn|d}|js-td nd }iid 6}i} d} d} d} x?|j D]4} | j |j ksb| j rqbn| j j}t}d}t| j dkr| j dj |j krt}| j dj}ntg| jjD]\}}||f^q}|dks8|dkrw|jdd#krntjdj|j} q|} qb|dkr|} qb|dkr|} qb|dkr||d t SharedConfigt DeploymentR(RRRRR\R(RRtdepnode((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyR`sRIcBseZRS((RR(((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRImsRHcBseZRS((RR(((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyRHqscCstj|tS(N(Rtlist_from_dependst datasources(tdepends((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pytget_datasource_list|s(;RRRR&tos.pathRtxml.domRt cloudinitRtloggingtcloudinit.settingsRRRt getLoggerRRKRRNt AGENT_STARTRRURTR0RRRPR/RR$R"RRRgRhR[RRRfRbR+RZR_RRRR RRCRGRdRR]RIRHtDEP_FILESYSTEMt DEP_NETWORKR$R&(((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.pyts|                7  #   1  a