�
oB�]c@s�ddlZddlmZddlmZddlmZddlmZddlmZddlm Z ej
e�ZdZ
ejd �Zd
ZdZdejfd
��YZdS(i����N(thandlers(tlog(tmergers(tutil(tsafeyaml(t
PER_ALWAYSs
Merge-Typesdict(replace)+list()+str()s
#cloud-configs#cloud-config-jsonptCloudConfigPartHandlercBsSeZeegZd�Zd�Zd�Zd�Zd�Z d�Z
d�ZRS(cKsftjj|tdd�d|_|jd�|_d|krY|j|d�|_ng|_dS(Ntversionitcloud_configtcloud_config_path( RtHandlert__init__RtNonet cloud_buft get_ipathtcloud_fnt
file_names(tselftpathst_kwargs((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyR4s cCs�|js
dSg}|jrz|jdt|j��x1|jD]&}|sUd}n|jd|�q@W|jd�n|jdk r�tdg}|j|�|jtj |j��ng}t
j|jdj|�d�dS(Ns# from %s filest?s# %sts
i�(
RRtappendtlenR
RtCLOUD_PREFIXtextendRtdumpsRt
write_filetjoin(Rt
file_linestfntlines((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_write_cloud_config<s"
c
Cs�d}x:tdtgD](}|j|d�}|r|}PqqWtj|�}tj|�}tj|�}g} | j|�| j|�| s�t} n|| fS(NRsX-%s( tMERGE_HEADERtgetRt load_yamlRtdict_extract_mergerststring_extract_mergersRtDEF_MERGERS(
Rtpayloadtheaderstmerge_header_headersthttmp_htpayload_yamltmergers_yamltmergers_headertall_mergers((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_extract_mergersTs
cCsb|j�}tj|dt�}tjj|�}tjd|�|j |j
dt�|_
dS(Ntprefixs!Merging by applying json patch %stin_place(tlstripRtstrip_prefix_suffixtJSONP_PREFIXt jsonpatcht JsonPatchtfrom_stringtLOGtdebugtapplyR
tFalse(RR'tpatch((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_merge_patchhs
cCsS|j||�\}}tjd|�tj|�}|j|j|�|_dS(NsMerging by applying %s(R0R9R:Rt constructtmergeR
(RR'R(R,t
my_mergerstmerger((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_merge_partsscCsg|_d|_dS(N(RRR
(R((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt_resetys cCs|tjkr|j�dS|tjkrD|j�|j�dSy�|jdks`|jrli|_n|tjt kr�|j
|�n|j||�x dD]}|j|d�}q�W|jj
|j��Wn$tk
r�tjtd|�nXdS(Ns
s
s t s.Failed at merging in cloud config part from %s(s
s
s (Rt
CONTENT_STARTRDtCONTENT_ENDR R
RRtINCLUSION_TYPES_MAPR5R>RCtreplaceRtstript ExceptionRtlogexcR9(RtdatatctypetfilenameR't frequencyR(ti((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pythandle_part}s&
(t__name__t
__module__RR5tprefixesRR R0R>RCRDRR(((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyR/s (R6t cloudinitRRtloggingRRRtcloudinit.settingsRt getLoggerRSR9R!R%R&RR5R
R(((sC/usr/lib/python2.7/site-packages/cloudinit/handlers/cloud_config.pyt<module>s |