Ë
    x[hâ  ã                   ó–   — d dl Z d dlZd dlmZmZmZmZ d dlmZ  e j                  e
«      ZdZdZdZdZ G d„ d	ej                   «      Zy)
é    N)ÚhandlersÚmergersÚsafeyamlÚutil)Ú
PER_ALWAYSz
Merge-Typez#cloud-configz#cloud-config-jsonpz*# Cloud-config part ignored SCHEMA_ERROR: c                   ó>   — e Zd ZeegZd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zy)	ÚCloudConfigPartHandlerc                 óà   — t         j                  j                  | t        d¬«       d | _        |j                  d«      | _        d|v r|j                  |d   «      | _        g | _        g | _        y )Né   )ÚversionÚcloud_configÚcloud_config_path)	r   ÚHandlerÚ__init__r   Ú	cloud_bufÚ	get_ipathÚcloud_fnÚ
file_namesÚerror_file_names)ÚselfÚpathsÚ_kwargss      úA/usr/lib/python3/dist-packages/cloudinit/handlers/cloud_config.pyr   zCloudConfigPartHandler.__init__2   sa   € Ü×Ñ×!Ñ! $¬
¸AÐ!Ô>ØˆŒØŸ™¨Ó7ˆŒØ 'Ñ)Ø!ŸO™O¨GÐ4GÑ,HÓIˆDŒMØˆŒØ "ˆÕó    c                 ó\  — | j                   sy g }| j                  ra|j                  dt        | j                  «      z  «       | j                  D ]  }|sd}|j                  d|z  «       Œ |j                  d«       | j                  D ]  }|j                  t
        › |› �«       Œ | j                  �Ht        dg}|j                  |«       |j                  t        j                  | j                  «      «       ng }t        j                  | j                   dj                  |«      d«       y )Nz# from %s filesú?z# %sÚ ú
i€  )r   r   ÚappendÚlenr   ÚMERGED_PART_SCHEMA_ERROR_PREFIXr   ÚCLOUD_PREFIXÚextendr   Údumpsr   Ú
write_fileÚjoin)r   Ú
file_linesÚfnÚ
error_fileÚliness        r   Ú_write_cloud_configz*CloudConfigPartHandler._write_cloud_config;   s  € Ø�}Š}Øàˆ
Ø�?Š?Ø×ÑÐ/´3°t·±Ó3GÑHÔIØ—o‘oò 1�ÙØ�BØ×!Ñ! &¨B¡-Õ0ð1ð ×Ñ˜bÔ!Ø×/Ñ/ò 	PˆJØ×ÑÔ!@Ð AÀ*ÀÐNÕOð	Pà�>‰>Ð%ô ØðˆEð �L‰L˜Ô$Ø�L‰LœŸ™¨¯©Ó7Õ8àˆEÜ�‰˜Ÿ™ t§y¡y°Ó'7¸Õ?r   c                 ót  — d}t         dt         z  fD ]  }|j                  |d«      }|sŒ|} n t        j                  |«      }|€t	        d«      ‚t        j                  |«      }t        j                  |«      }g }	|	j                  |«       |	j                  |«       |	st        j                  d«      }	||	fS )Nr   zX-%szempty cloud configzdict(replace)+list()+str())	ÚMERGE_HEADERÚgetr   Ú	load_yamlÚ
ValueErrorr   Údict_extract_mergersÚstring_extract_mergersr#   )
r   ÚpayloadÚheadersÚmerge_header_headersÚhÚtmp_hÚpayload_yamlÚmergers_yamlÚmergers_headerÚall_mergerss
             r   Ú_extract_mergersz'CloudConfigPartHandler._extract_mergersU   sÄ   € Ø!ÐÜ ¬,Ñ 7Ð8ò 	ˆAØ—K‘K  2Ó&ˆEÚØ',Ð$Ùð		ô —~‘~ gÓ.ˆØÐÜÐ1Ó2Ð2ä×3Ñ3°LÓAˆÜ ×7Ñ7Ð8LÓMˆØˆØ×Ñ˜<Ô(Ø×Ñ˜>Ô*ÙÜ!×8Ñ8Ø,óˆKð ˜kÐ*Ð*r   c                 ó  — |j                  «       }t        j                  |t        ¬«      }t        j
                  j                  |«      }t        j                  d|«       |j                  | j                  d¬«      | _
        y )N)Úprefixz!Merging by applying json patch %sF)Úin_place)Úlstripr   Ústrip_prefix_suffixÚJSONP_PREFIXÚ	jsonpatchÚ	JsonPatchÚfrom_stringÚLOGÚdebugÚapplyr   )r   r3   Úpatchs      r   Ú_merge_patchz#CloudConfigPartHandler._merge_patchn   s_   € ð
 —.‘.Ó"ˆÜ×*Ñ*¨7¼<ÔHˆÜ×#Ñ#×/Ñ/°Ó8ˆÜ�	‰	Ð5°uÔ=ØŸ™ T§^¡^¸e˜ÓDˆ�r   c                 óÆ   — | j                  ||«      \  }}t        j                  d|«       t        j                  |«      }|j                  | j                  |«      | _        y )NzMerging by applying %s)r<   rF   rG   r   Ú	constructÚmerger   )r   r3   r4   r8   Ú
my_mergersÚmergers         r   Ú_merge_partz"CloudConfigPartHandler._merge_party   sN   € Ø%)×%:Ñ%:¸7ÀGÓ%LÑ"ˆ�zÜ�	‰	Ð*¨JÔ7Ü×"Ñ" :Ó.ˆØŸ™ d§n¡n°lÓCˆ�r   c                 ó    — g | _         d | _        y )N)r   r   )r   s    r   Ú_resetzCloudConfigPartHandler._reset   s   € ØˆŒØˆ�r   c                 óê  — |t         j                  k(  r| j                  «        y |t         j                  k(  r!| j	                  «        | j                  «        y 	 | j
                  �| j                  si | _        |t         j                  t           k(  r| j                  |«       n| j                  ||«       dD ]  }|j                  |d«      }Œ | j                  j                  |j                  «       «       y # t        $ rJ}| j                  j                  |j                  «       «       t         j#                  d||«       Y d }~y d }~wt$        $ r t'        j(                  t         d|«       Y y w xY w)N)r   úú	ú z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)r   ÚCONTENT_STARTrR   ÚCONTENT_ENDr+   r   r   ÚINCLUSION_TYPES_MAPrB   rJ   rP   Úreplacer   Ústripr0   r   rF   ÚwarningÚ	Exceptionr   Úlogexc)	r   ÚdataÚctypeÚfilenamer3   Ú	frequencyr4   ÚiÚerrs	            r   Úhandle_partz"CloudConfigPartHandler.handle_partƒ   s,  € Ø”H×*Ñ*Ò*Ø�K‰KŒMØØ”H×(Ñ(Ò(Ø×$Ñ$Ô&Ø�K‰KŒMØð	à�~‰~Ð%¨T¯_ª_Ø!#�”Øœ×4Ñ4´\ÑBÒBØ×!Ñ! 'Õ*à× Ñ  ¨'Ô2à'ò 4�Ø#×+Ñ+¨A¨sÓ3‘ð4à�O‰O×"Ñ" 8§>¡>Ó#3Õ4øÜò 	Ø×!Ñ!×(Ñ(¨¯©Ó)9Ô:Ü�K‰KØDØØ÷ñ ûô
 ò 	Ü�K‰KÜÐEÀxöð	ús    ÁBC: Ã:	E2ÄA EÅ'E2Å1E2N)Ú__name__Ú
__module__Ú__qualname__r"   rB   Úprefixesr   r+   r<   rJ   rP   rR   re   © r   r   r	   r	   -   s4   „ ð ˜lÐ+€Hò#ò@ò4+ò2	EòDòór   r	   )ÚloggingrC   Ú	cloudinitr   r   r   r   Úcloudinit.settingsr   Ú	getLoggerrf   rF   r-   r"   rB   r!   r   r	   rj   r   r   ú<module>ro      sS   ðó ã ç 7Ó 7Ý )à€g×Ñ˜Ó!€à€ð& €Ø$€à"NÐ ôt˜X×-Ñ-õ tr   