f7 UdZddlZddlZddlZddlZddlmZddlmZddl m Z m Z m Z m Z mZddlmZddlmZddlmZmZdd lmZdd lmZd Zegd Zed gZdZdZdZ dZ!dZ"dZ#ddde dde#dddddd Z$e%dgZ&e%gdZ'e%ejPe$jSe&e'gdZ*d Z+d!Z,egd"Z-eZ.d#gZ/ej`e1Z2d$d%d&ed'e/ed(ge.d)gd*Z3ee4d+<ee3Zd,Z5d-Z6d.e7d/ed0ed1e8d2df d3Z9d4Z:d5ed1e8fd6Z; d;d5efd7Zd:Z?y)tjj t rtj t yyy)Ndelete_validation_post_execFdefault)r get_cfg_option_boolospathisfileCHEF_VALIDATION_PEM_PATHunlink)chef_cfg delete_pems :/usr/lib/python3/dist-packages/cloudinit/config/cc_chef.py post_run_chefrCsC))/Jbggnn%=> *+?zc tj}|jD]g\}}|tvrtj d|%|d||<-|t vrtj||||<Otj||||<i|jtjtj|d|tj|dd|d|dd|S) Nz'Skipping unknown chef template key '%s'r#r8r$rr"r%) generated_byr#r$r"r%) CHEF_RB_TPL_DEFAULTScopyitemsCHEF_RB_TPL_KEYSLOGdebugCHEF_RB_TPL_BOOL_KEYSr r:get_cfg_option_strupdate make_header)iidr@paramskvs rBget_template_paramsrUs ! & & (F A1 $ $ II? C  9F1I)) 44XqAq  33Ha@q  A MM ,,.00+s 22-#<0'(9:   MrDr.cfgcloudargsreturncd|vrtjd|y|d}tj|d}|st t }t j|tD]}tj||jdt}|jd}|rQ|dk7rtj||n5tjj|stj!d||j#d } | rt%|j&j)} t+| |} t-} | j/D]?\} }| t0vs|s| j3tjj5|Atj6| t9j:| t<| ntj!d t<tj>|d t@ }|stjCd nfi}d|vr|d|d<d|vr+|d}t |jED] } || || < tj|tGjH|tjJ|dd }tMjNtP}|r|r tS||}n|rtjJ|dd }nd}|rtU|tW|yy)z'Handler method activated by cloud-init.r,z8Skipping module named %s, no 'chef' key in configurationN directoriesrrsystemzWchef validation_cert provided as 'system', but validation_key path '%s' does not exist.zchef_client.rbz&No template found, not rendering to %sfirstboot_pathr8z7First boot path empty, not writing first boot json filerun_listinitial_attributes force_installFexec),rKrLr get_cfg_option_listlist CHEF_DIRS itertoolschainREQUIRED_CHEF_DIRS ensure_dirgetr> write_filer;r<r=warningget_template_filenamestr datasourceget_instance_idrUsetrICHEF_RB_TPL_PATH_KEYSadddirname ensure_dirsrrender_to_file CHEF_RB_PATHrN CHEF_FB_PATHinfokeysjsondumpsr:ris_exeCHEF_EXEC_PATH install_chefrun_chefrC)r.rVrWrXr@ chef_dirsd vkey_pathvcert template_fnrQrR param_pathsrSrT fb_filename initial_jsonr_r` installedruns rBhandlersS F  6{H((=AI O __Y(: ;  -/GHI LL* +E H  OOIu - * KK; --.>?K%""2245$S(3e LLN 4DAq))a 23 4 %  lFC !? ,1134 8"4Q"7 Q 8  TZZ %=>,,/5M N+I  5(+ &&xG h rDctjdtg}d|vr|d}t|tt fr|j |nlt|tr|j|nJtjdt||j tn|j ttj|dy)NzRunning chef-clientexec_argumentszRUnknown type %s provided for chef 'exec_arguments' expected list, tuple, or stringFcapture) rKrLr} isinstancerctupleextendrmappendrktypeCHEF_EXEC_DEF_ARGSr)r@cmdcmd_argss rBrrsII#$  C8#,- hu . JJx # & JJx KKX   JJ) * %&IIc5!rDdistroc ~|j}|jdd}tj|j d5}t j j||}|jd|tj||dtjd d|i|cd d d S#1swYy xYw) aWrite blob to a tempfile, and call subp with args, kwargs. Then cleanup. 'basename' as a kwarg allows providing the basename for the file. The 'args' argument to subp will be updated with the full path to the filename as the first argument. basename subp_blobT)dir needs_exeri)moderXN) rHpoprtempdirget_tmp_exec_pathr;r<joininsertr rjr)blobrrXkwargsrtmpdtmpfs rBsubp_blob_in_tempfiler+s 99;Dzz*k2H     $ $ &$ . ww||D(+ At d/yy-d-f- ...s A!B33B<c|t}|t}|g}nd|g}tj||j}t |||ddS)agInstall an omnibus unified package from url. @param url: URL where blob of chef content may be downloaded. Defaults to OMNIBUS_URL. @param retries: Number of retries to perform when attempting to read url. Defaults to OMNIBUS_URL_RETRIES @param omnibus_version: Optional version string to require for omnibus install. z-v)urlretrieszchef-omnibus-installF)rrrXrr) OMNIBUS_URLOMNIBUS_URL_RETRIESrreadurlcontentsr)rrromnibus_versionrXcontents rBinstall_chef_from_omnibusr>sa {%o&  S':CCG   '  rDcftj|dd}tj|dd}|dk(rctj|dd}tj|dt}t |||j tj|dd }|S|dk(r|j j d g|S|d k(rYtj|d }t|j tj|d tj|d||Stjd|d}|S)N install_typepackagesraFr8gemsversion ruby_versionTr,omnibusr omnibus_urlomnibus_url_retries)rrrrzUnknown chef install type '%s') r rNr:RUBY_VERSION_DEFAULTinstall_chef_from_gemsrinstall_packagesrget_cfg_option_intrKrk)rWr@rr chef_versionrrs rBr~r~]s)**.*L  " "8VU CCv..xDI .. n&:  |\5<<H&&xF J  # %%vh/ J  "11(>. ) &5~F 77>>/ * ',6H ,&     rD)NNN)@__doc__rerzloggingr;textwraprtypingr cloudinitrrrrr cloudinit.cloudr cloudinit.configr cloudinit.config.schemar r cloudinit.distrosrcloudinit.settingsrrrrdrgrrr>CHEF_ENCRYPTED_DATA_BAG_PATHCHEF_ENVIRONMENTrwrG frozensetrMrqrfryrJrvr}rr3r1 getLogger__name__rKr5__annotations__rCrUrmrcrrrrr~rrrrDrBrs>  CC!#<$)   4 5D) &..( (+*!% ";-0! IOO!!#  % ';<  'g!   ? A  0 4 &xW,j,\ t , FO O 6O %O tO O d",..d.(=A >B$s)" rD