ó 'KXc@sÏddlZddlmZddlmZddlmZddlmZddlmZej e ƒZ dZ ej dƒZd Zd Ziejeƒe6ejeƒe6Zd ejfd „ƒYZdS( iÿÿÿÿN(thandlers(tlog(tmergers(tutil(t PER_ALWAYSs Merge-Typesdict(replace)+list()+str()s #cloud-configs#cloud-config-jsonptCloudConfigPartHandlercBsPeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS(cKsftjj|tddƒd|_|jdƒ|_d|krY|j|dƒ|_ng|_dS(Ntversionit cloud_configtcloud_config_path( RtHandlert__init__RtNonet cloud_buft get_ipathtcloud_fnt file_names(tselftpathst_kwargs((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyR As   cCsttjƒƒS(N(tlisttCC_TYPEStvalues(R((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt list_typesIscCsç|js dSg}|jrz|jdt|jƒƒx1|jD]&}|sUd}n|jd|ƒq@W|jdƒn|jdk r¾tdg}|j|ƒ|jtj |jƒƒng}tj |jdj |ƒdƒdS(Ns# from %s filest?s# %sts i€( RRtappendtlenR R t CLOUD_PREFIXtextendRt yaml_dumpst write_filetjoin(Rt file_linestfntlines((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_write_cloud_configLs"     c Cs©d}x:tdtgD](}|j|dƒ}|r|}PqqWtj|ƒ}tj|ƒ}tj|ƒ}g} | j|ƒ| j|ƒ| sŸt} n|| fS(NRsX-%s( t MERGE_HEADERtgetRt load_yamlRtdict_extract_mergerststring_extract_mergersRt DEF_MERGERS( Rtpayloadtheaderstmerge_header_headersthttmp_ht payload_yamlt mergers_yamltmergers_headert all_mergers((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_extract_mergersds   cCsb|jƒ}tj|dtƒ}tjj|ƒ}tjd|ƒ|j |j dt ƒ|_ dS(Ntprefixs!Merging by applying json patch %stin_place( tlstripRtstrip_prefix_suffixt JSONP_PREFIXt jsonpatcht JsonPatcht from_stringtLOGtdebugtapplyR tFalse(RR*tpatch((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt _merge_patchxs  cCsS|j||ƒ\}}tjd|ƒtj|ƒ}|j|j|ƒ|_dS(NsMerging by applying %s(R3R<R=Rt constructtmergeR (RR*R+R/t my_mergerstmerger((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt _merge_partƒscCsg|_d|_dS(N(RR R (R((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_reset‰s cCs÷|tjkr|jƒdS|tjkrD|jƒ|jƒdSy’|jdks`|j rli|_n|tt krŒ|j |ƒn|j ||ƒx dD]}|j |dƒ}q£W|jj |jƒƒWntjtd|ƒnXdS(Ns s s t s.Failed at merging in cloud config part from %s(s s s (Rt CONTENT_STARTRGt CONTENT_ENDR#R R RRR8RARFtreplaceRtstripRtlogexcR<(Rt_datatctypetfilenameR*t _frequencyR+ti((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt handle_parts&      ( t__name__t __module__R RR#R3RARFRGRS(((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyR@s      (R9t cloudinitRRtloggingRRtcloudinit.settingsRt getLoggerRTR<R$R(R)RR8ttype_from_starts_withRR R(((sL/opt/freeware/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyts