܍~cddlZddlmZddlmZddlmZmZmZddlm Z ej e Z dZ ejdZdZd ZGd d ejZdS) N)handlers)log)mergerssafeyamlutil) PER_ALWAYSz Merge-Typezdict(replace)+list()+str()z #cloud-configz#cloud-config-jsonpc@eZdZeegZdZdZdZdZ dZ dZ dZ dS) CloudConfigPartHandlerc tj|tdd|_|d|_d|vr ||d|_g|_dS)N)version cloud_configcloud_config_path)rHandler__init__r cloud_buf get_ipathcloud_fn file_names)selfpaths_kwargss A/usr/lib/python3/dist-packages/cloudinit/handlers/cloud_config.pyrzCloudConfigPartHandler.__init__1si!!$ A!>>>77 ' ) )!OOG4G,HIIDMc|jsdSg}|jre|dt|jz|jD]}|sd}|d|z|d|jKt dg}|||tj|jng}tj |jd |ddS)Nz# from %s files?z# %s i) rrappendlenr CLOUD_PREFIXextendrdumpsr write_filejoin)r file_linesfnliness r_write_cloud_configz*CloudConfigPartHandler._write_cloud_config9s }  F ? "   /3t3G3GH I I Io 1 1B!!&B-0000   b ! ! ! > %E LL $ $ $ LL77 8 8 8 8E  tyy'7'7?????rcrd}tdtzfD]}||d}|r|}ntj|}|t dt j|}t j|}g} | || || st} || fS)NrzX-%szempty cloud config) MERGE_HEADERgetr load_yaml ValueErrorrdict_extract_mergersstring_extract_mergersr" DEF_MERGERS) rpayloadheadersmerge_header_headershtmp_h payload_yaml mergers_yamlmergers_header all_mergerss r_extract_mergersz'CloudConfigPartHandler._extract_mergersQs!, 78  AKK2&&E ',$  ~g..  122 23LAA  78LMM <(((>*** &%Kk**rc|}tj|t}tj|}td|| |j d|_ dS)N)prefixz!Merging by applying json patch %sF)in_place) lstriprstrip_prefix_suffix JSONP_PREFIX jsonpatch JsonPatch from_stringLOGdebugapplyr)rr2patchs r _merge_patchz#CloudConfigPartHandler._merge_patchhsp ..""*7<HHH#//88 5u===T^eDDrc|||\}}td|tj|}||j||_dS)NzMerging by applying %s)r;rErFr constructmerger)rr2r3r7 my_mergersmergers r _merge_partz"CloudConfigPartHandler._merge_partss\%)%:%:7G%L%L"z *J777":..dnlCCrc"g|_d|_dS)N)rr)rs r_resetzCloudConfigPartHandler._resetysrc|tjkr|dS|tjkr*||dS |j|jsi|_|tjtkr| |n| ||dD]}| |d}|j | dS#t$r'}td||Yd}~dSd}~wt"$rt%jtd|YdSwxYw)N)r   z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)r CONTENT_STARTrQ CONTENT_ENDr)rrINCLUSION_TYPES_MAPrArIrOreplacerstripr.rEwarning Exceptionrlogexc) rdatactypefilenamer2 frequencyr3ierrs r handle_partz"CloudConfigPartHandler.handle_part}s H* * * KKMMM F H( ( (  $ $ & & & KKMMM F ~%T_%!#4\BBB!!'****  '222' 4 4#++As33 O " "8>>#3#3 4 4 4 4 4    KKD              KEx       s"B#D ED33(EEN) __name__ __module__ __qualname__r!rAprefixesrr)r;rIrOrQrdrrr r ,sl+H@@@0+++. E E EDDD rr )rB cloudinitrrloggingrrrcloudinit.settingsr getLoggerrerEr+r0r1r!rArr rirrrns$$$$$$----------))))))g!! &-g,-IJJ  $ nnnnnX-nnnnnr