ó
    x[hK5  ã                   ó$  • S SK r S SKrS SKJr  S SKJr  S SKJrJrJ	r	J
r
  S SKJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  \R8                  " \5      rSr/ SQr SS0r! " S S\	5      r"S r#S r$S\"S\%S\&4S jr' " S S5      r(g)é    N)Ú	signature)Ú
ModuleType)ÚDictÚListÚ
NamedTupleÚOptional)ÚconfigÚimporterÚ	lifecycleÚperformanceÚ
type_utilsÚutil)ÚALL_DISTROS)ÚConfigMerger)ÚReportEventStack)ÚFREQUENCIES)ÚInitÚcc_)Úcc_emit_upstartzcc_refresh_rmc_and_interface.pyÚcc_migratorÚcc_rightscale_userdataÚcc_ubuntu_advantageÚcc_ubuntu_proc                   óD   • \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   Srg)ÚModuleDetailsé4   ÚmoduleÚnameÚ	frequencyÚrun_args© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__Ústrr   Ú__static_attributes__r!   ó    Ú:/usr/lib/python3/dist-packages/cloudinit/config/modules.pyr   r   4   s   ‡ ØÓØ
ƒIØƒNØ�3‰iÖr)   r   c                 ó  • U R                  SS5      nUR                  5       R                  S5      (       a  US[        U5      S-
   nUR	                  5       nU(       d  g UR                  [        5      (       d  [        < U< 3nU$ )NÚ-Ú_z.pyr   é   )ÚreplaceÚlowerÚendswithÚlenÚstripÚ
startswithÚ
MOD_PREFIX)r   Ú
canon_names     r*   Úform_module_namer7   ;   sv   € Ø—‘˜c 3Ó'€JØ×ÑÓ×"Ñ" 5×)Ñ)Ø ¤S¨£_°qÑ%8Ð:ˆ
Ø×!Ñ!Ó#€JÞØØ× Ñ ¤×,Ñ,Þ)ª:Ð6ˆ
ØÐr)   c           	      óB  • [        U S5      (       a   SU R                  ;  d  SU R                  ;  a  [        SU  SU S35      eU R                  S   [        ;  a"  [        SU  SU SU R                  S    S35      e[        U S	5      (       a  [        SU  SU S
35      eg )NÚmetar   ÚdistroszModule 'z' with name 'z4' MUST have a 'meta' attribute of type 'MetaSchema'.z' has an invalid frequency Ú.ÚschemazX' has a JSON 'schema' attribute defined. Please define schema in cloud-init-schema,json.)Úhasattrr9   Ú
ValueErrorr   )Úmodr   s     r*   Úvalidate_moduler@   G   sË   € ä�C˜× Ñ Ø˜cŸh™hÓ&Ø˜CŸH™HÓ$äØ�s�e˜=¨¨ð /$ð $ó
ð 	
ð ‡x�x�Ñ¤KÓ/ÜØ�s�e˜=¨¨Ð.IØ�x‰x˜Ñ$Ð% Qð(ó
ð 	
ô ˆs�H×ÑÜØ�s�e˜=¨¨ð /Gð Gó
ð 	
ð r)   Úmodule_detailsÚcfgÚreturnc                 ó¼   • [        U R                  R                  R                  S0 5      5      nU(       d  gUR	                  UR                  5       5      (       d  gg)NÚactivate_by_schema_keysTF)Ú	frozensetr   r9   ÚgetÚintersectionÚkeys)rA   rB   Úactivate_by_schema_keys_keyss      r*   Ú
_is_activerK   ]   sO   € Ü#,Ø×Ñ×"Ñ"×&Ñ&Ð'@À"ÓEó$Ð ö (ØØ'×4Ñ4°S·X±X³Z×@Ñ@ØØr)   c                   óž   • \ rS rSrSS\4S jjr\S\R                  4S j5       r	S\
\   4S jrS\
\   4S jrS	\
\   4S
 jrSS jrS rSrg)ÚModuleséh   NÚinitc                 óR   • Xl         X l        S U l        Uc  [        SSSS9nX0l        g )Nzmodule-reporterzmodule-descF)r   ÚdescriptionÚreporting_enabled)rO   Ú	cfg_filesÚ_cached_cfgr   Úreporter)ÚselfrO   rS   rU   s       r*   Ú__init__ÚModules.__init__i   s4   € ØŒ	Ø"Œà48ˆÔØÑÜ'Ø&Ø)Ø"'ñˆHð
 !�r)   rC   c                 ó"  • U R                   cc  [        U R                  R                  U R                  R                  U R
                  U R                  R                  S9nUR                  U l         [        R                  " U R                   5      $ )N)ÚpathsÚ
datasourceÚadditional_fnsÚbase_cfg)	rT   r   rO   rZ   r[   rS   rB   ÚcopyÚdeepcopy)rV   Úmergers     r*   rB   ÚModules.cfgv   sg   € ð ×ÑÑ#Ü!Ø—i‘i—o‘oØŸ9™9×/Ñ/Ø#Ÿ~™~ØŸ™Ÿ™ñ	ˆFð  &Ÿz™zˆDÔä�}Š}˜T×-Ñ-Ó.Ð.r)   c           	      ó   • / nXR                   ;  a  U$ U R                   R                  U5      nU(       d  U$ U GH�  nU(       d  M  [        U[        5      (       a#  UR	                  SUR                  5       05        ME  [        U[        5      (       a  0 n[        U5      S:¼  a  US   R                  5       US'   [        U5      S:¼  a  US   R                  5       US'   [        U5      S:¼  a  USS US'   U(       a  UR	                  U5        M×  MÙ  [        U[        5      (       a}  0 nS	nS
U;   a  US
   R                  5       US'   SnSU;   a  US   R                  5       US'   SU;   a  US   =(       d    / US'   U(       a  U(       a  UR	                  U5        GMe  GMh  GMk  [        SU< S[        R                  " U5      < 35      e   U$ )a  Read the modules from the config file given the specified name.

Returns a list of module definitions. E.g.,
[
    {
        "mod": "bootcmd",
        "freq": "always",
        "args": "some_arg",
    }
]

Note that in the default case, only "mod" will be set.
r?   é   r   é   Úfreqr.   NÚargsFr   Tr   zFailed to read 'z' item in config, unknown type )rB   rG   Ú
isinstancer'   Úappendr3   Úlistr2   ÚdictÚ	TypeErrorr   Úobj_name)rV   r   Úmodule_listÚcfg_modsÚitemÚcontentsÚvalids          r*   Ú_read_modulesÚModules._read_modules„   s¬  € ð #%ˆØ—x‘xÓØÐØ—8‘8—<‘< Ó%ˆÞØÐÜˆDÞÙÜ˜$¤×$Ñ$Ø×"Ñ"à˜tŸz™z›|ðöô
 ˜D¤4×)Ñ)Ø�ä�t“9 “>Ø&*¨1¡g§m¡m£o�H˜U‘OÜ�t“9 “>Ø'+¨A¡w§}¡}£�H˜VÑ$Ü�t“9 “>Ø'+¨A¨B x�H˜VÑ$ÞØ×&Ñ& xÖ0ñ ä˜D¤4×)Ñ)Ø�Ø�Ø˜T“>Ø&*¨6¡l×&8Ñ&8Ó&:�H˜U‘OØ �EØ $Ó&Ø'+¨KÑ'8×'>Ñ'>Ó'@�H˜VÑ$Ø˜T“>Ø'+¨F¡|×'9°r�H˜VÑ$Þ¦Ø×&Ñ& x×0ò !&’8õ  ãœZ×0Ò0°Õ6ð8óð ñC ðJ Ðr)   c           
      ó  • / nU GHw  nUS   nUR                  S5      nUR                  S5      =(       d    / n[        U5      nU(       d  MH  U(       a'  U[        ;  a  [        R                  " SU SU 3SS9  SnU[
        ;   a,  [        R                  " S	U S
[
        U    S3SS9  [
        U   n[        R                  " US[        R                  " [        5      /S/5      u  p‰U(       d>  U[        ;   a  [        R                  SUSS 5        O[        R                  SUU	5        GM&  [        R                  " US   5      n
[!        X¤5        Uc  U
R"                  S   nUR%                  ['        U
UUUS95        GMz     U$ )z¦Convert list of returned from _read_modules() into new format.

Invalid modules and arguments are ignored.
Also ensures that the module has the required meta fields.
r?   re   rf   zConfig specified module z has an unknown frequency z22.1©Ú
deprecatedÚdeprecated_versionNzModule has been renamed from z to z/. Update any references in /etc/cloud/cloud.cfgz24.1Ú Úhandlez\Module `%s` has been removed from cloud-init. It may be removed from `/etc/cloud/cloud.cfg`.r.   z,Could not find module named %s (searched %s)r   r   )r   r   r   r    )rG   r7   r   r   Ú	deprecateÚRENAMED_MODULESr
   Úfind_moduler   rl   r	   ÚREMOVED_MODULESÚLOGÚinfoÚwarningÚimport_moduler@   r9   rh   r   )rV   Úraw_modsÚmostly_modsÚraw_modÚraw_namere   r    Úmod_nameÚmod_locsÚlooked_locsr?   s              r*   Ú_fixup_modulesÚModules._fixup_modules¿   s—  € ð ˆÜˆGØ˜u‘~ˆHØ—;‘;˜vÓ&ˆDØ—{‘{ 6Ó*×0¨bˆHÜ'¨Ó1ˆHÞÙÞ˜¤KÓ/Ü×#Ò#à2°8°*ð =&Ø&* Vð-ð (.òð �Øœ?Ó*Ü×#Ò#à7¸°zÀÜ*¨8Ñ4Ð5ð 6>ð>ð (.òô +¨8Ñ4�Ü$,×$8Ò$8Ø˜2œz×2Ò2´6Ó:Ð;¸h¸Zó%Ñ!ˆHö ØœÓ.Ü—H‘HðIà   ˜õô —K‘KØFØ Ø#ôò
 Ü×(Ò(¨°!©Ó5ˆCÜ˜CÔ*Ø‰|à—x‘x Ñ,�Ø×ÑÜØØ!Ø"Ø%ñ	÷ñe  ðt Ðr)   rƒ   c           
      óŠ  • U R                   R                  5       n/ n/ nU GH0  u  pVpx [        R                  SXeU5        UR	                  U5        SU 3n	SU	< SU< 3n
[        XšU R                  S9nUU R                  UUS.nU   [        UR                  5      nUR                  n[        U5      S:X  a,  [        R                  " SS	S
9  UR                  S[        05        [        R                   " SSS9 nUR#                  X•R                  XÇS9u  nnS S S 5        W(       a  U	 SWR$                  S S3Ul        O
SU	-  Ul        S S S 5        GM3     XC4$ ! , (       d  f       NH= f! , (       d  f       GMY  = f! [(         a;  n[*        R,                  " [        SXe5        UR	                  UU45         S nAGMœ  S nAff = f)Nz(Running module %s (%s) with frequency %szconfig-zrunning z with frequency )r   rQ   Úparent)r   rB   Úcloudrf   é   z%Config modules with a `log` parameterz23.2ru   Úlogrx   Úskip)Úlog_mode)re   z ran successfully and took z.3fz secondsz%s previously ranzRunning module %s (%s) failed)rO   Úcloudifyr~   Údebugrh   r   rU   rB   r   ry   Ú
parametersr2   r   rz   Úupdater   ÚTimedÚrunÚdeltaÚmessageÚ	Exceptionr   Úlogexc)rV   rƒ   ÚccÚfailuresÚ	which_ranr?   r   re   rf   Úrun_nameÚdescÚmyrepÚ	func_argsÚfunc_signatureÚfunc_paramsÚtimerÚranÚ_rÚes                      r*   Ú_run_modulesÚModules._run_modules  sµ  € Ø�Y‰Y×ÑÓ!ˆð ˆØˆ	Ü%0Ñ!ˆC�tð-+Ü—	‘	Ø>ÀÈ4ôð
 × Ñ  Ô&à$ T FÐ+‘ã9AÂ4ÐH�Ü(Ø!¸D¿M¹Mñ�ð !ØŸ8™8ØØ ñ	�	ò Ü%.¨s¯z©zÓ%:�NØ"0×";Ñ";�KÜ˜;Ó'¨1Ó,Ü!×+Ò+Ø'NØ/5òð "×(Ñ(¨%´¨Ô6ä$×*Ò*¨2¸Ò?À5Ø"$§&¡&Ø$§j¡j°)ð #)ð #™˜˜R÷ @ö à'˜jð )$Ø$)§K¡K°Ð#4°Hð>ð �ð
 )<¸hÑ(F˜œ÷) ’Uñ- &1ð^ Ð$Ð$÷ @Õ?ú÷ —Uûô, ó +Ü—’œCÐ!@À$ÔLØ—‘  q 	×*Ó*ûð+úsO   ©AE=ÂA2E*Ã9EÄ2E*Å	E=Å
E'Å#E*Å*
E:	Å4E=Å:E=Å=
GÆ/F=Æ=Gc                 óX   • UUUS.nU/nU R                  U5      nU R                  U5      $ )N)r?   rf   re   )r‰   r©   )rV   r†   rf   re   Ú	mod_to_ber‚   rƒ   s          r*   Ú
run_singleÚModules.run_single9  s>   € ð ØØñ
ˆ	ð �;ˆØ×)Ñ)¨(Ó3ˆØ× Ñ  Ó-Ð-r)   c                 ó>  • U R                  U5      nU R                  U5      nU R                  R                  R                  n/ n/ nU R
                  R                  S/ 5      n/ n/ n	U Hœ  n
U
u  p¼pÞUc  M  UR                  S   n[        X R
                  5      (       d  UR                  U5        MI  U(       a9  U[        /:w  a.  XO;  a)  XÇ;  a  UR                  U5        Mx  UR                  U5        U	R                  X¼XÞ/5        Mž     U(       a%  [        R                  SSR                  U5      5        U(       a&  [        R                  SSR                  U5      U5        U(       a%  [        R                  SSR                  U5      5        U R                  U	5      $ )zÃRuns all modules in the given section.

section_name - One of the modules lists as defined in
  /etc/cloud/cloud.cfg. One of:
 - cloud_init_modules
 - cloud_config_modules
 - cloud_final_modules
Úunverified_modulesr:   z?Skipping modules '%s' because no applicable config is provided.Ú,zSkipping modules '%s' because they are not verified on distro '%s'.  To run anyway, add them to 'unverified_modules' in config.z running unverified_modules: '%s'z, )rr   r‰   rO   Údistror   rB   rG   r9   rK   rh   r   r~   r   Újoinr©   )rV   Úsection_namer‚   rƒ   Údistro_nameÚskippedÚforcedÚ
overriddenÚinapplicable_modsÚactive_modsrA   r?   r   Ú_freqÚ_argsÚworked_distross                   r*   Úrun_sectionÚModules.run_sectionE  sm  € ð ×%Ñ% lÓ3ˆØ×)Ñ)¨(Ó3ˆØ—i‘i×&Ñ&×+Ñ+ˆàˆØˆØ—X‘X—\‘\Ð"6¸Ó;ˆ
ØÐØˆÛ)ˆNØ(6Ñ%ˆS˜Ø‰{ÙØ ŸX™X iÑ0ˆNÜ˜n¯h©h×7Ñ7Ø!×(Ñ(¨Ô.Ùö  .´[°MÓ"AØÓ4ØÓ-ØŸ™ tÔ,Ù Ø—M‘M $Ô'Ø×Ñ ¨5Ð8Ö9ñ' *ö* Ü�H‰Hðà—‘Ð*Ó+ôö
 Ü�H‰Hð2ð —‘˜Ó!Øôö Ü�H‰HÐ7¸¿¹À6Ó9JÔKà× Ñ  Ó-Ð-r)   )rT   rS   rO   rU   )NN)r"   r#   r$   r%   r   rW   Úpropertyr	   ÚConfigrB   r   r   rr   r   r‰   r©   r­   r¾   r(   r!   r)   r*   rM   rM   h   sn   † ñ!˜Tõ !ð ð/�V—]‘]ó /ó ð/ð9 T¨$¡Zô 9ðvA¨$¨}Ñ*=ô AðF5%¨¨]Ñ(;ô 5%ôn
.õ8.r)   rM   ))r^   ÚloggingÚinspectr   Útypesr   Útypingr   r   r   r   Ú	cloudinitr	   r
   r   r   r   r   Úcloudinit.distrosr   Úcloudinit.helpersr   Úcloudinit.reporting.eventsr   Úcloudinit.settingsr   Úcloudinit.stagesr   Ú	getLoggerr"   r~   r5   r}   r{   r   r7   r@   rj   ÚboolrK   rM   r!   r)   r*   Ú<module>rÎ      sœ   ðó Û Ý Ý ß 3Ó 3÷÷ õ *Ý *Ý 7Ý *Ý !à×Ò˜Ó!€ð €
ò
€ð ˜?ð€ô
�Jô ò	ò
ð,˜}ð °4ð ¸Dô ÷U.ò U.r)   