+
    i                         ^ RI t ^ RIt^ RIHtHtHtHt ^ RIHt ] P                  ! ]
4      tRtRtRtRt ! R R	]P                   4      tR# )
    N)handlersmergerssafeyamlutil)
PER_ALWAYSz
Merge-Typez#cloud-configz#cloud-config-jsonpz*# Cloud-config part ignored SCHEMA_ERROR: c                   R   a  ] tR t^-t o ]].tR tR tR t	R t
R tR tR tRtV tR	# )
CloudConfigPartHandlerc                    \         P                  P                  V \        ^R7       RV n        VP                  R4      V n        RV9   d   VP                  VR,          4      V n        . V n        . V n        R# )   )versionN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   CloudConfigPartHandler.__init__2   sa    !!$
A!>7')!OOG4G,HIDM "    c                   V P                   '       g   R # . pV P                  '       dr   VP                  R\        V P                  4      ,          4       V P                   F%  pV'       g   RpVP                  RV,          4       K'  	  VP                  R4       V P                   F  pVP                  \
         V 24       K  	  V P                  eJ   \        R.pVP                  V4       VP                  \        P                  ! V P                  4      4       M. p\        P                  ! V P                   RP                  V4      R4       R # )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_config*CloudConfigPartHandler._write_cloud_config;   s    }}}
???/3t3GHIooB!!&B-0 & b!//J!@ A*NO 0>>% E LL$LL78Etyy'7?r   c                   R p\         R\         ,          3 F!  pVP                  VR 4      pV'       g   K  Tp M	  \        P                  ! V4      pVf   \	        R4      h\
        P                  ! V4      p\
        P                  ! V4      p. p	V	P                  V4       V	P                  V4       V	'       g   \
        P                  ! R4      p	Wi3# )r   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_mergers'CloudConfigPartHandler._extract_mergersU   s    !, 78AKK2&Eu',$	 9 ~~g.12233LA 778LM<(>*!88,K **r   c                   VP                  4       p\        P                  ! V\        R 7      p\        P
                  P                  V4      p\        P                  RV4       VP                  V P                  RR7      V n
        R# ))prefixz!Merging by applying json patch %sF)in_placeN)lstripr   strip_prefix_suffixJSONP_PREFIX	jsonpatch	JsonPatchfrom_stringLOGdebugapplyr   )r   r5   patchs   && r   _merge_patch#CloudConfigPartHandler._merge_patchn   s_    
 .."**7<H##//8		5u=T^^eDr   c                    V P                  W4      w  r4\        P                  R V4       \        P                  ! V4      pVP                  V P                  V4      V n        R# )zMerging by applying %sN)r>   rI   rJ   r   	constructmerger   )r   r5   r6   r:   
my_mergersmergers   &&&   r   _merge_part"CloudConfigPartHandler._merge_party   sJ    %)%:%:7%L"		*J7"":.dnnlCr   c                "    . V n         R V n        R # )N)r   r   )r   s   &r   _resetCloudConfigPartHandler._reset   s    r   c                $   V\         P                  8X  d   V P                  4        R # V\         P                  8X  d#   V P	                  4        V P                  4        R #  V P
                  e   V P                  '       g   / V n        V\         P                  \        ,          8X  d   V P                  V4       MV P                  WF4       R F  pVP                  VR4      pK  	  V P                  P                  VP                  4       4       R #   \         dL   pT P                  P                  TP                  4       4       \         P#                  RTT4        R p?R # R p?i\$         d!    \&        P(                  ! \         RT4        R # i ; i)N z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)r   	)r   CONTENT_STARTrW   CONTENT_ENDr,   r   r   INCLUSION_TYPES_MAPrE   rM   rT   replacer    stripr2   r   rI   warning	Exceptionr   logexc)	r   datactypefilenamer5   	frequencyr6   ierrs	   &&&&&&&  r   handle_part"CloudConfigPartHandler.handle_part   s'   H***KKMH((($$&KKM	~~%T___!#44\BB!!'*  2'#++As3 (OO""8>>#34 	!!(()9:KKD 
  	KKEx	s,    D  BD FA E!!F.FF)r   r   r   r   N)__name__
__module____qualname____firstlineno__r#   rE   prefixesr   r,   r>   rM   rT   rW   rk   __static_attributes____classdictcell__)__classdict__s   @r   r	   r	   -   s<      l+H#@4+2	ED r   r	   )loggingrF   	cloudinitr   r   r   r   cloudinit.settingsr   	getLoggerrm   rI   r/   r#   rE   r"   r   r	    r   r   <module>rz      sQ      7 7 )!& $"N tX-- tr   