a '¡DgÞã@snddlZddlZddlmZmZmZmZddlmZe  e ¡Z dZ e  d¡ZdZdZdZGd d „d ejƒZdS) éN)ÚhandlersÚmergersÚsafeyamlÚutil)Ú PER_ALWAYSz Merge-Typezdict(replace)+list()+str()z #cloud-configz#cloud-config-jsonpz*# Cloud-config part ignored SCHEMA_ERROR: c@sLeZdZeegZdd„Zdd„Zdd„Zdd„Z d d „Z d d „Z d d„Z dS)ÚCloudConfigPartHandlercKsLtjj|tddd|_| d¡|_d|vr<| |d¡|_g|_g|_dS)Né)ÚversionZ cloud_configZcloud_config_path) rÚHandlerÚ__init__rÚ cloud_bufZ get_ipathÚcloud_fnÚ file_namesÚerror_file_names)ÚselfÚpathsÚ_kwargs©rúC/usr/lib/python3.9/site-packages/cloudinit/handlers/cloud_config.pyr 3s zCloudConfigPartHandler.__init__cCsÀ|js dSg}|jrT| dt|jƒ¡|jD]}|s:d}| d|¡q.| d¡|jD]}| t›|›¡qZ|jdur¢tdg}| |¡| t   |j¡¡ng}t   |jd  |¡d¡dS)Nz# from %s filesú?z# %sÚÚ i€)r rÚappendÚlenrÚMERGED_PART_SCHEMA_ERROR_PREFIXr Ú CLOUD_PREFIXÚextendrÚdumpsrZ write_fileÚjoin)rZ file_linesÚfnZ error_fileÚlinesrrrÚ_write_cloud_config<s(    þ z*CloudConfigPartHandler._write_cloud_configc Cs„d}tdtfD]}| |d¡}|r|}q.qt |¡}|durHtdƒ‚t |¡}t |¡}g} |  |¡|  |¡| s|t } || fS)NrzX-%szempty cloud config) Ú MERGE_HEADERÚgetrZ load_yamlÚ ValueErrorrZdict_extract_mergersÚstring_extract_mergersrÚ DEF_MERGERS) rÚpayloadÚheadersZmerge_header_headersÚhZtmp_hÚ payload_yamlZ mergers_yamlZmergers_headerZ all_mergersrrrÚ_extract_mergersVs"      z'CloudConfigPartHandler._extract_mergerscCsD| ¡}tj|td}tj |¡}t d|¡|j |j dd|_ dS)N)Úprefixz!Merging by applying json patch %sF)Zin_place) ÚlstriprZstrip_prefix_suffixÚ JSONP_PREFIXÚ jsonpatchZ JsonPatchZ from_stringÚLOGÚdebugZapplyr )rr'ZpatchrrrÚ _merge_patchms   z#CloudConfigPartHandler._merge_patchcCs:| ||¡\}}t d|¡t |¡}| |j|¡|_dS)NzMerging by applying %s)r+r0r1rZ constructÚmerger )rr'r(r*Z my_mergersZmergerrrrÚ _merge_partxs  z"CloudConfigPartHandler._merge_partcCsg|_d|_dS)N)rr )rrrrÚ_reset~szCloudConfigPartHandler._resetc Cs|tjkr| ¡dS|tjkr4| ¡| ¡dSzf|jdusF|jsLi|_|tjtkrf|  |¡n |  ||¡dD]}|  |d¡}qv|j  |  ¡¡Wn`tyÜ}z*|j  |  ¡¡t d||¡WYd}~n(d}~0tyút td|¡Yn0dS)N)rú ú ú z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)rZ CONTENT_STARTr5Z CONTENT_ENDr!r rZINCLUSION_TYPES_MAPr.r2r4ÚreplacerÚstripr$rr0ZwarningÚ ExceptionrZlogexc) rÚdataZctypeÚfilenamer'Z frequencyr(ÚiÚerrrrrÚ handle_part‚s6    ý ÿz"CloudConfigPartHandler.handle_partN) Ú__name__Ú __module__Ú __qualname__rr.Úprefixesr r!r+r2r4r5r@rrrrr.s  r)Zloggingr/Z cloudinitrrrrZcloudinit.settingsrZ getLoggerrAr0r"r%r&rr.rr rrrrrÚ s