+
    ˜qgjË¥  ã                   óÆ  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHt ^ RIH t H!t! ^ RI"H#t#H$t$H%t% ^ RI&H't' ^ R	I(H)t) ^ R
I*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5H6t6H7t7H8t8H9t9 ^ RI:H;t; ]Px                  ! ]=4      t>Rt? ! R R4      t@RtAR R ltB ! R R4      tCR R ltDRR/R R lltER# )é    N)Úsuppress)ÚPath)ÚAnyÚDictÚIterableÚListÚOptionalÚSetÚTupleÚUnion)Úatomic_helperÚcloudÚdistrosÚfeaturesÚhandlersÚhelpersÚimporterÚ	lifecycleÚnetÚsourcesÚ
type_utilsÚutil)ÚNetv1ÚNetv2)Ú
EventScopeÚ	EventTypeÚuserdata_to_events)ÚBootHookPartHandler)ÚCloudConfigPartHandler)ÚJinjaTemplatePartHandler)ÚShellScriptPartHandler)ÚShellScriptByFreqPartHandler)Úcmdline)Úevents)ÚCLOUD_CONFIGÚDEFAULT_RUN_DIRÚ
PER_ALWAYSÚPER_INSTANCEÚPER_ONCE)ÚNetworkConfigSourceÚNO_PREVIOUS_INSTANCE_IDc                   ó&   a € ] tR t^9t o R tRtV tR# )Ú
_Semaphorec                ó   € Wn         W n        R # ©N)Ú	semaphoreÚargs)Úselfr0   r1   s   &&&Ú2/usr/lib/python3/dist-packages/cloudinit/stages.pyÚ__init__Ú_Semaphore.__init__:   s   € Ø"ŒØŽ	ó    )r1   r0   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r4   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r3   r-   r-   9   s   ø‡ € ÷ð r6   r-   zöAggregated cloud-config created by merging merged_system_cfg (/etc/cloud/cloud.cfg and /etc/cloud/cloud.cfg.d), metadata, vendordata and userdata. The combined_cloud_config represents the aggregated desired configuration acted upon by cloud-init.c          
      óh   € V ^8„  d   QhR\         P                  R\        R\        R\        R\
        /# )é   Ú
datasourceÚcfgÚevent_source_typeÚscopeÚreturn)r   Ú
DataSourceÚdictr   r   Úbool)Úformats   "r3   Ú__annotate__rJ   G   sG   € ÷ Bñ BÜ×"Ñ"ðBä	ðBô !ðBô ð	Bô
 
ñBr6   c                óâ  € V P                   p\        VP                  R/ 4      4      p\        P                  ! \
        P                  ! V4      \
        P                  ! V4      .4      p\        P                  V P                  P                  V\        4       4      9   dÀ   \        P                  ! V P                  4      pVP                  VR,          9   dˆ   \        P                  RV\        P                  V P                  P!                  R4      4       VP                  V4      '       g   \        4       Wc&   Wc,          P#                  \        P                  4       \        P                  RV4       V.pV U	u. uF  q™P                  NK  	  p
p	V F=  pW&P                  V. 4      9   g   K  \        P                  RVP                  V4        R# 	  \        P                  RW¢4       R	# u up	i )
a  Determine if a particular EventType is enabled.

For the `event_source_type` passed in, check whether this EventType
is enabled in the `updates` section of the userdata. If `updates`
is not enabled in userdata, check if defined as one of the
`default_events` on the datasource. `scope` may be used to
narrow the check to a particular `EventScope`.

Note that on first boot, userdata may NOT be available yet. In this
case, we only have the data source's `default_update_events`,
so an event that should be enabled in userdata may be denied.
ÚupdatesÚscopesz/Adding event: scope=%s EventType=%s found in %szhotplug.enabledzAllowed events: %sz$Event Allowed: scope=%s EventType=%sTz$Event Denied: scopes=%s EventType=%sF)Údefault_update_eventsr   Úgetr   ÚmergemanydictÚcopyÚdeepcopyr   ÚHOTPLUGÚsupported_update_eventsÚsetÚread_hotplug_enabled_fileÚpathsÚvalueÚLOGÚdebugÚ	get_cpathÚadd)rA   rB   rC   rD   Údefault_eventsÚuser_eventsÚallowedÚhotplug_enabled_filerM   ÚsÚscope_valuesÚ	evt_scopes   &&&&        r3   Úupdate_event_enabledrd   G   s“  € ð& 	×(Ñ(ð ô 5GØ�‰�	˜2Óó5€Kô × Ò ä�MŠM˜+Ó&Ü�MŠM˜.Ó)ð	
ó€Gô ×Ñ˜J×>Ñ>×BÑBØŒs‹uóô ô  $×=Ò=¸j×>NÑ>NÓOÐØ�;‰;Ð.¨xÕ8Ô8Ü�I‰IØAØÜ×!Ñ!Ø× Ñ ×*Ñ*Ð+<Ó=ô	ð —;‘;˜u×%Ò%Ü!$£�‘Ø�N×Ñœy×0Ñ0Ô1ä‡I�IÐ" GÔ,à$) 7€FÙ%+Ó,¡V —G”G¡V€LÐ,ãˆ	Ø§¡¨I°rÓ :Ö:Ü�I‰IØ6Ø—‘Ø!ôò
 ñ ô ‡I�IØ.°ôñ ùò -s   Å;G,c                   ó0  a € ] tR t^Œt o R?V 3R lR lltR t]R 4       t]R 4       tR t	]R 4       t
R	 tR@R
 ltR t]V 3R lR l4       tR tRAR ltR tV 3R lR ltR tR tR tR tV 3R lR ltR tRAR ltV 3R lR ltR t]V 3R lR l4       tR  tR! tRBV 3R" lR# llt R$ t!R% t"R& t#R' t$R( t%R) t&R* t'R+ t(RAV 3R, lR- llt)R. t*R/ t+RAR0 lt,]-3R1 lt.]-3R2 lt/]-3R3 lt0V 3R4 lR5 lt1V 3R6 lR7 lt2R8 t3V 3R9 lR: lt4V 3R; lR< lt5R= t6R>t7V t8R# )CÚInitNc                ó@   <€ V ^8„  d   QhRS[ S[S[,          ,          /# )r@   Úds_deps)r	   r   Ústr)rI   r>   s   "€r3   rJ   ÚInit.__annotate__�   s   ø€ ÷ !ñ !¡©©c­Õ 3ñ !r6   c                ó   € Ve   Wn         M%\        P                  \        P                  .V n         / V n        R V n        R V n        R V n        RV n        R V n	        Vf   \        P                  ! RRRR7      pW n        R # )NFzinit-reporterz	init-desc)ÚnameÚdescriptionÚreporting_enabled)rh   r   ÚDEP_FILESYSTEMÚDEP_NETWORKÚ_cfgÚ_pathsÚ_distrorA   Úds_restoredÚ_previous_iidr$   ÚReportEventStackÚreporter)r2   rh   rw   s   &&&r3   r4   ÚInit.__init__�   sw   € ØÒØ"�Lä#×2Ñ2´G×4GÑ4GÐHˆDŒLà$&ˆŒ	Ø/3ˆŒØ15ˆŒà8<ˆŒØ ˆÔØ,0ˆÔàÒÜ×.Ò.Ø$Ø'Ø"'ôˆHð
 !Žr6   c                ó0   € / V n         R V n        R V n        R # r/   )rq   rr   rs   ©r2   s   &r3   Ú_resetÚInit._reset£   s   € àˆŒ	ØˆŒØˆŽr6   c                ó”  € V P                   '       g¬   V P                  R 4      pVP                  RR4      p\        P                  ! V4      p\
        P                  RV4       V! W!V P                  4      V n         V P                  e7   V P                   V P                  n	        V P                  V P                  n        V P                   # )ÚsystemÚdistroÚubuntuzUsing distro class %s)rs   Ú_extract_cfgÚpopr   ÚfetchrY   rZ   rW   rA   r   rB   Úsys_cfg)r2   Úsystem_configÚdistro_nameÚ
distro_clss   &   r3   r   ÚInit.distro©   s’   € à�|�|ˆ|à ×-Ñ-¨hÓ7ˆMØ'×+Ñ+¨H°hÓ?ˆKÜ Ÿš {Ó3ˆJÜ�I‰IÐ-¨zÔ:Ù% kÀ$Ç*Á*ÓMˆDŒLð �‰Ò*Ø)-¯©�—‘Ô&Ø*.¯(©(�—‘Ô'Ø�|‰|Ðr6   c                ó$   € V P                  R 4      # )Ú
restricted)r�   rz   s   &r3   rB   ÚInit.cfgº   s   € à× Ñ  Ó.Ð.r6   c                ó  € V P                  4        \        P                  ! V P                  4      pVR 8X  d   VP	                  RR4       V# VR8X  d   \
        P                  ! VR/ 4      pV# VR8X  d   \
        P                  ! VR/ 4      pV# )rŠ   Úsystem_infoNr~   rW   )r�   )r�   rW   )Úread_cfgrQ   rR   rq   r‚   r   Úget_cfg_by_path)r2   ÚrestrictionÚocfgs   && r3   r�   ÚInit._extract_cfg¾   s„   € à�‰Œä�}Š}˜TŸY™YÓ'ˆØ˜,Ô&Ø�H‰H�] DÔ)ð
 ˆð	 ˜HÔ$Ü×'Ò'¨Ð.>ÀÓCˆDð ˆð ˜GÔ#Ü×'Ò'¨Ð.FÈÓKˆDØˆr6   c                óª   € V P                   '       g7   V P                  R 4      p\        P                  ! WP                  4      V n         V P                   # )rW   )rr   r�   r   ÚPathsrA   )r2   Ú	path_infos   & r3   rW   Ú
Init.pathsË   s9   € à�{�{ˆ{Ø×)Ñ)¨'Ó2ˆIÜ!Ÿ-š-¨	·?±?ÓCˆDŒKØ�{‰{Ðr6   c                ó  € V P                   P                  pV P                   P                  pV\        P                  P                  VR 4      \        P                  P                  VR R4      \        P                  P                  VR R4      \        P                  P                  VR R4      \        P                  P                  VR R4      \        P                  P                  VR4      \        P                  P                  VR4      \        P                  P                  VR4      \        P                  P                  VR4      \        P                  P                  VR	4      \        P                  P                  VR4      .pV# )
Úscriptszper-instancezper-oncezper-bootÚvendorÚseedÚ	instancesr   ÚsemÚdata)rW   Ú	cloud_dirÚrun_dirÚosÚpathÚjoin)r2   Úc_dirrŸ   Úinitial_dirss   &   r3   Ú_initial_subdirsÚInit._initial_subdirsÒ   s   € Ø—
‘
×$Ñ$ˆØ—*‘*×$Ñ$ˆàÜ�G‰G�L‰L˜ 	Ó*Ü�G‰G�L‰L˜ 	¨>Ó:Ü�G‰G�L‰L˜ 	¨:Ó6Ü�G‰G�L‰L˜ 	¨:Ó6Ü�G‰G�L‰L˜ 	¨8Ó4Ü�G‰G�L‰L˜ Ó'Ü�G‰G�L‰L˜ Ó,Ü�G‰G�L‰L˜ 
Ó+Ü�G‰G�L‰L˜ Ó&Ü�G‰G�L‰L˜ Ó'Ü�G‰G�L‰L˜ %Ó(ð
ˆð Ðr6   c                óÞ   € V P                   P                  .pV'       d&   VP                  V P                   P                  4       V F  p\        P
                  ! V4       K  	  \        V4      # r/   )rW   Úboot_finishedÚappendÚinstance_linkr   Údel_fileÚlen)r2   Úrm_instance_lnkÚrm_listÚfs   &&  r3   Úpurge_cacheÚInit.purge_cacheå   sM   € Ø—:‘:×+Ñ+Ð,ˆßØ�N‰N˜4Ÿ:™:×3Ñ3Ô4ÛˆAÜ�MŠM˜!Öñ ä�7‹|Ðr6   c                ó&   € V P                  4        R # r/   )Ú_initialize_filesystemrz   s   &r3   Ú
initializeÚInit.initializeí   s   € Ø×#Ñ#Ö%r6   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )r@   Úmode_1Úmode_2rE   )Úint)rI   r>   s   "€r3   rJ   rj   ñ   s"   ø€ ÷ ñ ¡Cð ±ð ¹ñ r6   c                ó   € W,          # r/   © )r·   r¸   s   &&r3   Ú_get_strictest_modeÚInit._get_strictest_modeð   s
   € à�Ðr6   c                ó  € R p\         P                  ! V P                  4       4       \         P                  ! V P                  R4      pV'       Ed   \        \        4      ;_uu_ 4        V P                  R \         P                  ! V4      4      pRRR4       \         P                  ! W!RR7       V P                  P                  R4      pV'       g   / p\        V\        4      '       g   V.pRpV F4  p\         P                  ! V4      w  rg \         P                  ! W&V4        R# 	  \        P!                  RVRP#                  V4      V4       R# R#   + '       g   i     LÍ; i  \         d   pTp Rp?K‰  Rp?ii ; i)i   Údef_log_fileNF)Úpreserve_modeÚsyslog_fix_permsz,Failed changing perms on '%s'. tried: %s. %sÚ,)r   Úensure_dirsr¥   Úget_cfg_option_strrB   r   ÚOSErrorr¼   Úget_permissionsÚensure_filerO   Ú
isinstanceÚlistÚextract_usergroupÚchownbynamerY   Úwarningr¢   )	r2   ÚmodeÚlog_fileÚpermsÚerrorÚpermÚuÚgÚes	   &        r3   r³   ÚInit._initialize_filesystemô   s+  € Øˆä×Ò˜×.Ñ.Ó0Ô1Ü×*Ò*¨4¯8©8°^ÓDˆßˆ8ô œ'×"Õ"Ø×/Ñ/Øœ4×/Ò/°Ó9ó�÷ #ô ×Ò˜X¸5ÕAØ—H‘H—L‘LÐ!3Ó4ˆEßØ�Ü˜e¤T×*Ò*Ø˜�àˆEÛ�Ü×-Ò-¨dÓ3‘�ðÜ×$Ò$ X°!Ô4Úñ	 ô �K‰KØ>ØØ—‘˜“Øö	ñ3 ÷ #×"ûô& ô Ø–Eûðús$   Á('EÄE'ÅE$	Å'E?Å2E:Å:E?c                óZ   € V P                   '       g   V P                  V4      V n         R # R # r/   )rq   Ú	_read_cfg)r2   Ú	extra_fnss   &&r3   rŽ   ÚInit.read_cfg  s    € Ø�y�yˆyØŸ™ yÓ1ˆDŽIñ r6   c                óÈ   € V P                  V/ 4      pVP                  R/ 4      P                  R/ 4      pVP                  R4      \        R39   d   V# V P                  W4      # )z read and merge our configurationr�   rW   rŸ   N)Ú_read_bootstrap_cfgrO   r&   )r2   rØ   Úinitial_configrW   s   &&  r3   r×   ÚInit._read_cfg  sf   € ð ×1Ñ1°)¸RÓ@ˆØ×"Ñ" =°"Ó5×9Ñ9¸'À2ÓFˆð �9‰9�YÓ¤O°TÐ#:Ô:Ø!Ð!ð ×'Ñ'¨	Ó9Ð9r6   c                ó    <€ V ^8„  d   QhRS[ /# )r@   Úbootstrapped_config©rG   )rI   r>   s   "€r3   rJ   rj   0  s   ø€ ÷ ñ Á$ñ r6   c           
     óî   € \         P                  ! W P                  4      pVP                  R 4      p\         P                  ! VV P                  V\        VP                  VR7      R7      pVP                  # )Úinstance_data_sensitive©Úinstance_data_file)rW   rA   Úadditional_fnsÚbase_cfg)r   r”   rA   Úget_runpathÚConfigMergerÚfetch_base_configrŸ   rB   )r2   rØ   rß   Úno_cfg_pathsrä   Úmergers   &&&   r3   rÛ   ÚInit._read_bootstrap_cfg0  sh   € Ü—}’}Ð%8¿/¹/ÓJˆØ)×5Ñ5Ø%ó
Ðô ×%Ò%ØØ—‘Ø$Ü&Ø×$Ñ$Ð9Kôô	
ˆð �z‰zÐr6   c                ó`   € \         P                  ! V P                  P                  R 4      4      # )Úobj_pkl)r   Úpkl_loadrW   Úget_ipath_currz   s   &r3   Ú_restore_from_cacheÚInit._restore_from_cache?  s$   € ô ×Ò §
¡
× 8Ñ 8¸Ó CÓDÐDr6   c                ó*  € \         P                  ! V P                  R R4      '       d3   \         P                  ! V P                  P                  R4      RRR7       \        P                  ! V P                  V P                  P                  R4      4      # )Úmanual_cache_cleanFÚmanual_clean_markerÚwÚ )ÚomodeÚcontentrî   )	r   Úget_cfg_option_boolrB   Ú
write_filerW   rð   r   Ú	pkl_storeÚdsrz   s   &r3   Ú_write_to_cacheÚInit._write_to_cacheE  sk   € Ü×#Ò# D§H¡HÐ.BÀE×JÒJô �OŠOØ—
‘
×(Ñ(Ð)>Ó?ØØõô
 × Ò  §¡¨$¯*©*×*BÑ*BÀ9Ó*MÓNÐNr6   c                ó  € V P                   P                  R 4      ;'       g    . pR\        P                  ! \        4      3 F  pW!9  g   K  VP                  V4       K  	  V P                   P                  R4      ;'       g    . pW13# )Údatasource_pkg_listr÷   Údatasource_list)rB   rO   r   Úobj_namer   r©   )r2   Úpkg_listÚnÚcfg_lists   &   r3   Ú_get_datasourcesÚInit._get_datasourcesP  so   € à—8‘8—<‘<Ð 5Ó6×<Ð<¸"ˆà”j×)Ò)¬'Ó2Ó3ˆAØÖ Ø—‘ Ö"ñ 4ð —8‘8—<‘<Ð 1Ó2×8Ð8°bˆØÐ#Ð#r6   c                ó*  € VR
9  d   \        RV,          4      hV P                  4       pV'       g   R# V P                  P                  R4      p\        P
                  P                  V4      '       d&   \        P                  ! V4      P                  4       pMRpWBP                  4       8X  d   VRV,          3# VR8X  d   VRV,          3# \        VR4      '       d-   VP                  V P                  4      '       d   VRV,          3# RR	V,          3# )ÚcheckÚtrustz!Unexpected value for existing: %sNÚinstance_idz&restored from cache with run check: %szrestored from cache: %sÚcheck_instance_idzrestored from checked cache: %szcache invalid in datasource: %s)r
  r  )Nzno cache found)Ú
ValueErrorrñ   rW   rç   r    r¡   Úexistsr   Úload_text_fileÚstripÚget_instance_idÚhasattrr  rB   )r2   Úexistingrý   Ú
run_iid_fnÚrun_iids   &&   r3   Ú_restore_from_checked_cacheÚ Init._restore_from_checked_cacheZ  sü   € ØÐ-Ô-ÜÐ@À8ÕKÓLÐLà×%Ñ%Ó'ˆßØ+Ð+à—Z‘Z×+Ñ+¨MÓ:ˆ
Ü�7‰7�>‰>˜*×%Ò%Ü×)Ò)¨*Ó5×;Ñ;Ó=‰GàˆGà×(Ñ(Ó*Ô*ØÐ@À2ÕEÐFÐFØ˜Ô ØÐ1°BÕ6Ð7Ð7ä�rÐ.×/Ò/°B×4HÑ4HØ—‘÷5ò 5ð Ð=ÀÕBÐCÐCàÐ?À"ÕDÐEÐEr6   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r@   rE   ©r   rF   )rI   r>   s   "€r3   rJ   rj   t  s   ø€ ÷ .ñ .©G×,>Ñ,>ñ .r6   c           	     óF  € V P                   e   V P                   # \        P                  ! RRV,          V P                  R7      ;_uu_ 4       pV P	                  V4      w  r4WBn        \        V4      V n        \        P                  VP
                  4       R R R 4       X'       g¸    V P                  4       w  rV\        P                  ! V P                  V P                  V P                  \         P"                  ! V P$                  4      VVV P                  4      w  r7\&        P(                  ! V P                  P*                  4       \        P-                  RWs4       W0n         V P5                  4        V#   + '       g   i     Lç; i  \        P.                   d„   pTR8w  d   ThT P1                  4       pT'       d2   TP3                  4       '       d   \        P-                  RT4        R p?L’\&        P(                  ! T P                  P*                  4       ThR p?ii ; i)Nzcheck-cachez"attempting to read from cache [%s])rl   rm   ÚparentzLoaded datasource %s - %sr
  z3Restored fallback datasource from checked cache: %s)rA   r$   rv   rw   r  rm   rH   rt   rY   rZ   r  r   Úfind_sourcerB   r   rW   rQ   rR   rh   r   r«   rª   ÚinfoÚDataSourceNotFoundExceptionrñ   Úcheck_if_fallback_is_allowedr{   )	r2   r  Úmyreprý   Údescr  r  ÚdsnamerÔ   s	   &&       r3   Ú_get_data_sourceÚInit._get_data_sourcet  s�  € Ø�?‰?Ò&Ø—?‘?Ð"ä×$Ò$ØØ<¸xÕGØ—=‘=÷
õ 
ð Ø×7Ñ7¸ÓA‰HˆBØ $ÔÜ# B›xˆDÔÜ�I‰I�e×'Ñ'Ô(÷
÷ ðØ%)×%:Ñ%:Ó%<Ñ"�ô %×0Ò0Ø—H‘HØ—K‘KØ—J‘JÜ—M’M $§,¡,Ó/ØØØ—M‘Mó‘
�ô —’˜dŸj™j×6Ñ6Ô7Ü—‘Ð4°fÔAð Œð 	�‰ŒØˆ	÷U
÷ 
ûô4 ×6Ñ6ô Ø˜wÔ&Ø�GØ×-Ñ-Ó/�ß˜"×9Ñ9×;Ò;Ü—H‘HØMØ÷ñ ô
 —M’M $§*¡*×":Ñ":Ô;Ø�Gûðús8   ÁA	E5Â'B6F Å5F	ÆH Æ HÆ>HÇHÇ/,HÈH c                ó
   € . RO# )r   )r   r˜   rœ   r»   rz   s   &r3   Ú_get_instance_subdirsÚInit._get_instance_subdirs¤  s   € Ú-Ð-r6   c                ób   € V P                   P                  V4      pV'       g   \        R 4      hV# )zCNo instance directory is available. Has a datasource been fetched??)rW   Ú	get_ipathÚRuntimeError)r2   ÚsubnameÚinstance_dirs   && r3   Ú
_get_ipathÚInit._get_ipath§  s5   € ð —z‘z×+Ñ+¨GÓ4ˆßÜð3óð ð Ðr6   c                ó    <€ V ^8„  d   QhRS[ /# )r@   Únetcfgrà   )rI   r>   s   "€r3   rJ   rj   ³  s   ø€ ÷ <ñ <±ñ <r6   c                ól  € \         P                  P                  V P                  P                  4      '       g   R# V P                  P                  R4      pV P                  P                  R4      p\         P                  P                  V4      '       dI   V\        P                  ! \        P                  ! V4      4      8w  d   \        P                  ! W!RR7       M\        P                  ! W!RR7       \         P                  P                  V4      '       g   \        P                  ! W#4       R# R# )z¨Create /var/lib/cloud/instance/network-config.json

Only attempt once /var/lib/cloud/instance exists which is created
by Init.instancify once a datasource is detected.
NÚnetwork_configé€  ©rÍ   )r    r¡   ÚislinkrW   rª   rð   rç   r  r   Ú	load_jsonr  r   Ú
write_jsonÚsym_link)r2   r2  Úncfg_instance_pathÚnetwork_links   &&  r3   Ú_write_network_config_jsonÚInit._write_network_config_json³  sÕ   € ô �w‰w�~‰~˜dŸj™j×6Ñ6×7Ò7ñ Ø!ŸZ™Z×5Ñ5Ð6FÓGÐØ—z‘z×-Ñ-Ð.>Ó?ˆÜ�7‰7�>‰>Ð,×-Ò-àœŸšÜ×#Ò#Ð$6Ó7óô ô ×(Ò(Ø&°Uõøô ×$Ò$Ð%7ÀeÕLÜ�w‰w�~‰~˜l×+Ò+Ü�MŠMÐ,Ö;ñ ,r6   c                óÄ  € V P                  4       p\        V P                  P                  4      P	                  4       P                  4       pV\        V4      P                  4       8H  pV'       d   \        P                  R 4       MT\        P                  ! V P                  P                  4       \        P                  ! WP                  P                  4       . pV P                  4        F1  pVP                  \        P                  P                  W4      4       K3  	  \        P                   ! V4       V P                  P#                  R4      p\$        P&                  ! V P(                  4      : RV P(                  : 2pRp\        P                  P                  VR4      p	 \        P*                  ! V	4      P-                  4       pV'       g   Tp\        P0                  ! V	RV,          4       \        P0                  ! \        P                  P                  VR4      RV,          4       V P(                  P3                  4       p
\        P                  P                  VR4      pV P5                  4       p\        P0                  ! VRV
,          4       \        P0                  ! V P                  P7                  R4      RV
,          4       \        P0                  ! \        P                  P                  VR	4      RV,          4       V P9                  4        V'       d   W‡8X  d   \        P                  R
4       V
# V P;                  4        V
#   \.         d     EL”i ; i)z0Instance link already exists, not recreating it.r�   z: NrA   z%s
zprevious-datasourceúinstance-idr  zprevious-instance-idzJNot re-loading configuration, instance id and datasource have not changed.)r/  r   rW   rª   ÚresolveÚabsoluterY   r  r   r«   r:  r(  r©   r    r¡   r¢   rÃ   r[   r   r  rý   r  r  Ú	Exceptionrû   r  Úprevious_iidrç   rþ   r{   )r2   ÚidirÚdestinationÚalready_instancifiedÚdir_listÚdÚdprý   Úprevious_dsÚds_fnÚiidÚiid_fnrD  s   &            r3   Ú_reflect_cur_instanceÚInit._reflect_cur_instanceÍ  sZ  € ð �‰Ó ˆÜ˜4Ÿ:™:×3Ñ3Ó4×<Ñ<Ó>×GÑGÓIˆØ*¬d°4«j×.AÑ.AÓ.CÑCÐßÜ�H‰HÐGÕHä�MŠM˜$Ÿ*™*×2Ñ2Ô3Ü�MŠM˜$§
¡
× 8Ñ 8Ô9ð ˆØ×+Ñ+Ö-ˆAØ�O‰OœBŸG™GŸL™L¨Ó1Ö2ñ .ä×Ò˜Ô"ð �Z‰Z×!Ñ! &Ó)ˆô $×,Ò,¨T¯W©WÖ5°t·w³wÐ?ˆØˆÜ—‘—‘˜T <Ó0ˆð	Ü×-Ò-¨eÓ4×:Ñ:Ó<ˆK÷ ØˆKÜ�Š˜˜v¨�{Ô+Ü�ŠÜ�G‰G�L‰L˜Ð2Ó3°V¸{Õ5Kô	
ð
 �g‰g×%Ñ%Ó'ˆÜ—‘—‘˜b -Ó0ˆà×(Ñ(Ó*ˆÜ�Š˜ ¨¥Ô-Ü�Š˜Ÿ
™
×.Ñ.¨}Ó=¸vÈ½|ÔLÜ�ŠÜ�G‰G�L‰L˜Ð3Ó4°fÀÕ6Mô	
ð 	×ÑÔß KÔ$5Ü�H‰Hð6ôð ˆ
ð �K‰KŒMØˆ
øô? ô 	Úð	ús   Æ&$M ÍMÍMc                ó4   <€ V ^8„  d   QhRS[ P                  /# r  r  )rI   r>   s   "€r3   rJ   rj     s   ø€ ÷ 
ñ 
‘G×&Ñ&ñ 
r6   c                óT   € V P                   '       g   \        R4      hV P                   # )a  ds has a reference to the DataSource object

self.datasource can contain a DataSource or None
self.ds is preferred for any code path that is known to require an
initialized DataSource, basically any code besides the initial
bootstrapping of various objects.
zDatasource is not initialized.)rA   r,  rz   s   &r3   rý   ÚInit.ds
  s#   € ð ��ˆÜÐ?Ó@Ð@Ø�‰Ðr6   c                ó�  € V P                   e   V P                   # V P                  P                  R4      p\        P                  P                  VR4      p \        P                  ! V4      P                  4       V n         \        P                  RV P                   4       V P                   #   \         d    \        T n          LDi ; i)Nr�   r@  zprevious iid found to be %s)ru   rW   r[   r    r¡   r¢   r   r  r  rC  r+   rY   rZ   )r2   rJ  rN  s   &  r3   rD  ÚInit.previous_iid  sŸ   € Ø×ÑÒ)Ø×%Ñ%Ð%à�Z‰Z×!Ñ! &Ó)ˆÜ—‘—‘˜b -Ó0ˆð	9Ü!%×!4Ò!4°VÓ!<×!BÑ!BÓ!DˆDÔô 	�	‰	Ð/°×1CÑ1CÔDØ×!Ñ!Ð!øô	 ô 	9Ü!8ˆDÖð	9ús   Á)B, Â,CÃCc                ó|   € V P                  4       pV\        8H  ;'       g    WP                  P                  4       8g  # )z€Return true if this is a new instance.

If datasource has already been initialized, this will return False,
even on first boot.
)rD  r+   rý   r  )r2   Úpreviouss   & r3   Úis_new_instanceÚInit.is_new_instance%  s=   € ð ×$Ñ$Ó&ˆàÔ/Ñ/÷ 5ð 5ØŸ7™7×2Ñ2Ó4Ñ4ð	
r6   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r  r  )rI   r>   s   "€r3   rJ   rj   1  s   ø€ ÷ 8ñ 8©×);Ñ);ñ 8r6   c                ó&   € V P                  VR7      # )z9Load datasource from cache, otherwise discover datasource)r  )r%  )r2   r  s   &&r3   rƒ   Ú
Init.fetch1  s   € à×$Ñ$¨hÐ$Ó7Ð7r6   c                ó"   € V P                  4       # r/   )rO  rz   s   &r3   Ú
instancifyÚInit.instancify5  s   € Ø×)Ñ)Ó+Ð+r6   c           	     óÚ   € \         P                  ! V P                  V P                  V P                  V P
                  \        P                  ! V P                  4      V P                  R 7      # ))rw   )	r   ÚCloudrý   rW   rB   r   r   ÚRunnersrw   rz   s   &r3   ÚcloudifyÚInit.cloudify8  sF   € ä�{Š{Ø�G‰GØ�J‰JØ�H‰HØ�K‰KÜ�OŠO˜DŸJ™JÓ'Ø—]‘]ô
ð 	
r6   c                óþ  € V P                  V P                  P                  4       R 4       V P                  V P                  P	                  4       R 4       V P                  V P                  P                  4       R4       V P                  V P                  P                  4       R4       V P                  V P                  P                  4       R4       V P                  V P                  P                  4       R4       R# )ÚuserdataÚ
vendordataÚvendordata2N)
Ú_store_rawdatarý   Úget_userdata_rawÚ_store_processeddataÚget_userdataÚ_store_raw_vendordataÚget_vendordata_rawÚget_vendordataÚget_vendordata2_rawÚget_vendordata2rz   s   &r3   ÚupdateÚInit.updateC  sµ   € Ø×Ñ˜DŸG™G×4Ñ4Ó6¸
ÔCØ×!Ñ! $§'¡'×"6Ñ"6Ó"8¸*ÔEØ×"Ñ" 4§7¡7×#=Ñ#=Ó#?ÀÔNØ×!Ñ! $§'¡'×"8Ñ"8Ó":¸LÔIØ×"Ñ"Ø�G‰G×'Ñ'Ó)¨=ô	
ð 	×!Ñ! $§'¡'×"9Ñ"9Ó";¸]ÖKr6   c                óê   € \         P                  ! R RV P                  R7      ;_uu_ 4        V P                  P	                  V P                  4       R7       RRR4       R#   + '       g   i     R# ; i)zsetup-datasourcezsetting up datasource©r  )rX  N)r$   rv   rw   rý   ÚsetuprX  rz   s   &r3   Úsetup_datasourceÚInit.setup_datasourceM  sS   € Ü×$Ò$ØÐ 7ÀÇÁ÷
ö 
ð �G‰G�M‰M¨$×*>Ñ*>Ó*@ˆMÔA÷
÷ 
÷ 
ò 
ús   ¬+A!Á!A2	c                ó   € \         P                  ! R RV P                  R7      ;_uu_ 4        V P                  P	                  V P
                  V P                  4       R7       V P                  4        RRR4       R#   + '       g   i     R# ; i)zactivate-datasourcezactivating datasourceru  )rB   rX  N)r$   rv   rw   rý   ÚactivaterB   rX  rþ   rz   s   &r3   Úactivate_datasourceÚInit.activate_datasourceS  sp   € Ü×$Ò$Ø!Ø#Ø—=‘=÷
ö 
ð
 �G‰G×ÑØ—H‘H¨d×.BÑ.BÓ.Dð ô ð × Ñ Ô"÷
÷ 
÷ 
ò 
ús   ¬AA<Á<B	c                ón   € Vf   Rp\         P                  ! V P                  RV,          4      VR4       R # )Nr6   z%s_rawr5  )r   rû   r/  ©r2   r�   rA   s   &&&r3   ri  ÚInit._store_rawdata^  s*   € àŠ<ØˆDÜ�Š˜Ÿ™¨°:Õ(=Ó>ÀÀeÖLr6   c                ó  € VeD   \        V4      \        \        \        39  d%   \	        R\        \        V4      4      ,          4      h\        V\        4      '       d   \        P                  ! V4      pV P                  W4       R # )Nz'vendordata_raw is unsupported type '%s')	ÚtypeÚbytesri   rÉ   Ú	TypeErrorrÈ   r   Ú
json_dumpsri  r~  s   &&&r3   rm  ÚInit._store_raw_vendordatad  sd   € àÒ¤ T£
´5¼#¼tÐ2DÔ DÜØ9¼CÄÀTÃ
»OÕKóð ô �dœD×!Ò!Ü ×+Ò+¨DÓ1ˆDØ×Ñ˜DÖ-r6   c                ór   € Vf   Rp\         P                  ! V P                  V4      \        V4      R4       R # )Nr÷   r5  )r   rû   r/  ri   )r2   Úprocessed_datarA   s   &&&r3   rk  ÚInit._store_processeddatao  s.   € àÒ!ØˆNÜ�ŠØ�O‰O˜JÓ'¬¨^Ó)<¸eö	
r6   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r  )r   r   ÚHandler)rI   r>   s   "€r3   rJ   rj   w  s   ø€ ÷ ñ ©d±8×3CÑ3CÕ.Dñ r6   c                ó,  € Vf   / pVP                  RV P                  RV P                  /4       \        R/ VB p\	        R/ VB p\        R/ VB pVV\        \        3/ VB \        \        3/ VB \        \        3/ VB V\        R/ VBRVVV./B .pV# )NrW   rA   Úsub_handlersr»   )rr  rW   rý   r   r!   r   r"   r'   r(   r)   r    )r2   ÚoptsÚcloudconfig_handlerÚshellscript_handlerÚboothook_handlerÚdef_handlerss   &&    r3   Ú_default_handlersÚInit._default_handlersw  s¿   € ØŠ<ØˆDà�‰à˜Ÿ™Ø˜dŸg™gðô	
ô 5Ñ<°tÑ<ÐÜ4Ñ<°tÑ<ÐÜ.Ñ6°Ñ6ÐàØÜ(¬Ñ<°tÑ<Ü(¬Ñ>¸Ñ>Ü(¬Ñ:°TÑ:ØÜ$ñ Øñð (Ø'Ø$ðòð
ˆð  Ðr6   c                ó.   € V P                  R RRR/R7      # )Úscript_pathÚvendor_scriptsÚcloud_config_pathÚvendor_cloud_config©r�  ©r’  rz   s   &r3   Ú_default_vendordata_handlersÚ!Init._default_vendordata_handlers—  s+   € Ø×%Ñ%àÐ/Ø#Ð%:ðð &ó 
ð 	
r6   c                ó.   € V P                  R RRR/R7      # )r•  r–  r—  Úvendor2_cloud_configr™  rš  rz   s   &r3   Ú_default_vendordata2_handlersÚ"Init._default_vendordata2_handlersŸ  s+   € Ø×%Ñ%àÐ/Ø#Ð%;ðð &ó 
ð 	
r6   c                ód  aaaaa€ Vf   . pV P                   P                  R4      pV P                  R4      oVS3 FD  pV'       g   K  V\        P                  9  g   K$  \        P                  P                  ^ V4       KF  	  V3R lp\        P                  ! 4       oV! V4       V F6  pSP                  VRR7      p	V	'       g   K   \        P                  RW˜4       K8  	  V P                  4       oVVV3R lp
VVVVV3R lpVVV3R	 lp V
! 4        V! V4       V! 4        R#   T! 4        i ; i)
zJ
Generalized handlers suitable for use with either vendordata
or userdata
Nr   c                 ól  <€ V '       d&   \         P                  P                  V 4      '       g   R # \        P                  ! V 4      pVP                  4        F«  w  r# \        P                  ! VR.RR.4      w  rEV'       g   \        P                  RVVV4       KE  \        P                  ! V^ ,          4      p\        P                  ! V4      pSP                  V4      pV'       d   \        P                  RVVV4       K«  K­  	  R #   \         d!    \        P                   ! \        RT4        KÛ  i ; i)Nr÷   Ú
list_typesÚhandle_partzJCould not find a valid user-data handler named %s in file %s (searched %s)z(Added custom handler for %s [%s] from %sz"Failed to register handler from %s)r    r¡   Úisdirr   Úget_modules_from_dirÚitemsr   Úfind_modulerY   rÌ   Úimport_moduler   Úfixup_handlerÚregisterrZ   rC  Úlogexc)	r¡   Úpotential_handlersÚfnameÚmod_nameÚmod_locsÚlooked_locsÚmodÚtypesÚ
c_handlerss	   &       €r3   Úregister_handlers_in_dirÚ3Init._do_handlers.<locals>.register_handlers_in_dir¼  s  ø€ çœrŸw™wŸ}™}¨T×2Ò2ÙÜ!%×!:Ò!:¸4Ó!@ÐØ#5×#;Ñ#;Ö#=‘�ðÜ,4×,@Ò,@Ø  2 $¨°}Ð(Eó-Ñ)�H÷ $ÜŸ™ðAà$Ø!Ø'ôñ !Ü"×0Ò0°¸!µÓ=�CÜ"×0Ò0°Ó5�CØ&×/Ñ/°Ó4�EßÜŸ	™	ØFØ!ØØ!ö	ñ ó# $>øô0 !ô Ü—K’KÜÐAÀ5÷ðús   Á=DÂADÃ(DÄ'D3Ä2D3F)Ú	overwritez$Added default handler for %s from %sc                  óÆ   <€ SP                  4        FK  w  rVSP                  9   d   K  \        P                  ! VSS4       SP                  P	                  V4       KM  	  R # r/   )r§  Úinitializedr   Ú
call_beginr©   ©Ú_ctyper²  r´  r�   Ú	frequencys     €€€r3   Úinit_handlersÚ(Init._do_handlers.<locals>.init_handlersï  sQ   ø€ à)×/Ñ/Ö1‘�Ø˜*×0Ñ0Ô0ñ Ü×#Ò# C¨¨yÔ9Ø×&Ñ&×-Ñ-¨cÖ2ó  2r6   c                 ór   <€ R SRSRSRSR^ RV /p\         P                  ! S\         P                  VR7       R# )r   Ú
handlerdirr�   r½  ÚhandlercountÚexcluded)r�   N)r   ÚwalkÚwalker_callback)rÃ  Ú	part_datar´  r�   Údata_msgr½  rE  s   & €€€€€r3   Úwalk_handlersÚ(Init._do_handlers.<locals>.walk_handlersù  sD   ø€ ð ˜Jà˜dØ˜à˜Yð  Ø˜HðˆIô �MŠM˜(¤H×$<Ñ$<À9×Mr6   c                  ó$  <€ SP                  4        FL  w  rVSP                  9  d   K  SP                  P                  V4        \        P                  ! VSS4       KN  	  R#   \
         d!    \        P                  ! \        R T4        K|  i ; i)zFailed to finalize handler: %sN)	r§  r¹  Úremover   Úcall_endrC  r   r¬  rY   r»  s     €€€r3   Úfinalize_handlersÚ,Init._do_handlers.<locals>.finalize_handlers
  s{   ø€ à)×/Ñ/Ö1‘�Ø˜j×4Ñ4Ô4ñ Ø×&Ñ&×-Ñ-¨cÔ2ðLÜ×%Ò% c¨4°Ö;ó  2øô !ô LÜ—K’K¤Ð%EÀs×KðLús   ÁA$Á$'BÂB)rW   r[   r/  Úsysr¡   Úinsertr   ÚContentHandlersr«  rY   rZ   rc  )r2   rÇ  Úc_handlers_listr½  rÃ  ÚcdirrI  rµ  r²  r³  r¾  rÈ  rÍ  r´  r�   rE  s   &f&f&        @@@r3   Ú_do_handlersÚInit._do_handlers§  sý   ü€ ð ÒØˆHà�z‰z×#Ñ# JÓ/ˆØ�‰˜zÓ*ˆð ˜“ˆAß‰q�QœcŸh™hÖ&Ü—‘—‘  1Ö%ñ õ 	ôF ×,Ò,Ó.ˆ
ñ 	! Ô&ó
 #ˆCØ×'Ñ'¨°uÐ'Ó=ˆEß‰uÜ—	‘	Ð@À%ÖMñ #ð �}‰}‹ˆ÷	3÷	Nñ 	N÷"	Lð	 ÙŒOÙ˜(Ô#áÖøÑÕús   ÄD& Ä&	D/c                óš  € \         P                  ! R RV P                  R7      ;_uu_ 4        \        P                  ! V P
                  RR4      '       d   V P                  V4       M\        P                  R4       RRR4       \         P                  ! RRV P                  R7      ;_uu_ 4        V P                  R	V4       RRR4       \         P                  ! R
RV P                  R7      ;_uu_ 4        V P                  RV4       RRR4       V P                  4        \        P                  ! V P
                  4      p\        VR&   V P                  R4      VR&   \        P                   ! 4       VR&   \"        P$                  ! V P&                  P)                  R4      VRR7       V P&                  P)                  R4      p \        P*                  ! \        P,                  ! V4      4      pTR,          TR&   TR,          TR&   \"        P$                  ! TTRR7       R#   + '       g   i     EL­; i  + '       g   i     EL{; i  + '       g   i     ELI; i  \.        \0        3 d#   p\        P3                  RTT4        Rp?R# Rp?i\4        P6                  \8        3 d#   p\        P3                  RTT4        Rp?R# Rp?ii ; i)zconsume-user-datazreading and applying user-dataru  Úallow_userdataTz,allow_userdata = False: discarding user-dataNzconsume-vendor-dataz reading and applying vendor-datarg  zconsume-vendor-data2z!reading and applying vendor-data2rh  Ú_docr~   r�   r   Úcombined_cloud_configr5  r6  râ   zESkipping write of system_info/features to %s. Unable to read file: %szDSkipping write of system_info/features to %s. Invalid JSON found: %s)r$   rv   rw   r   rú   rB   Ú_consume_userdatarY   rZ   Ú_consume_vendordatar{   rQ   rR   ÚCOMBINED_CLOUD_CONFIG_DOCr�   r   Úget_featuresr   r9  rW   rç   r8  r  rÅ   ÚIOErrorrÌ   ÚjsonÚJSONDecodeErrorrƒ  )r2   r½  Úcombined_cloud_cfgÚjson_sensitive_fileÚinstance_jsonrÔ   s   &&    r3   Úconsume_dataÚInit.consume_data  sW  € ô ×$Ò$ØØ,Ø—=‘=÷
ö 
ô
 ×'Ò'¨¯©Ð2BÀD×IÒIØ×&Ñ& yÕ1ä—	‘	ÐHÔI÷
ô ×$Ò$Ø!Ø.Ø—=‘=÷
ö 
ð
 ×$Ñ$ \°9Ô=÷
ô ×$Ò$Ø"Ø/Ø—=‘=÷
ö 
ð
 ×$Ñ$ ]°IÔ>÷
ð 	�‰Œô
 "Ÿ]š]¨4¯8©8Ó4ÐÜ%>Ð˜6Ñ"ð -1×,=Ñ,=¸hÓ,GÐ˜=Ñ)ô *2×)>Ò)>Ó)@Ð˜:Ñ&Ü× Ò Ø�J‰J×"Ñ"Ð#:Ó;ØØõ	
ð
 #Ÿj™j×4Ñ4Ð5NÓOÐð	Ü ŸNšNÜ×#Ò#Ð$7Ó8óˆMð& (:¸-Õ'Hˆ�mÑ$Ø$6°zÕ$Bˆ�jÑ!Ü× Ò ØØØ÷	
÷O
÷ 
ð 
ú÷
÷ 
ð 
ú÷
÷ 
ð 
ûôH œÐ!ô 	Ü�K‰Kð+à#Øô	õ ûÜ×$Ñ$¤iÐ0ô 	Ü�K‰Kð*à#Øô	õ ûð	úsN   ¬AH Â/H4Ã5IÇ*I È H1	È4I	ÉI	ÉK
É-J
Ê
K
Ê'K
Ê(KËK
c                óJ  € VR8X  d;   V P                   P                  4       '       g   \        P                  R4       R# RpMLVR8X  d;   V P                   P	                  4       '       g   \        P                  R4       R# RpM\        R4      h\        P                  ! V P                  V P                   . V P                  R	R
7      pVP                  P                  V/ 4      p\        V\        4      '       g   RR	/p\        P                  RW54       VP                  R4      pVP                  RR4      p\        P                  ! V4      '       g   \        P                  RV4       R# \        V\         4      '       d   \"        P$                  ! RV R2RRR7       \        P                  RVV4       VR8X  d,   V P                   P'                  4       pV P)                  4       p	M*V P                   P+                  4       pV P-                  4       p	V P/                  W‰W'R7       R# )z8
Consume the vendordata and run the part handlers on it
rg  zno vendordata from datasourceNÚvendor_datarh  zno vendordata2 from datasourceÚvendor_data2z>vendor_source arg must be either 'vendordata' or 'vendordata2'F)rW   rA   rå   ræ   Úinclude_vendorÚenabledz$invalid %s setting. resetting to: %sÚdisabled_handlersz%s consumption is disabled.zUse of string 'z!' for 'vendor_data:enabled' fieldz23.1zUse boolean value instead.)Ú
deprecatedÚdeprecated_versionÚextra_messagez)%s will be consumed. disabled_handlers=%s)rÃ  )rý   rn  rY   rZ   rp  r,  r   rè   rr   rB   rO   rÈ   rG   rÌ   r   Úis_trueri   r   Ú	deprecatero  r›  rq  rŸ  rÔ  )
r2   Úvendor_sourcer½  Úcfg_nameÚ
_cc_mergerÚvdcfgrê  Úno_handlersÚvendor_data_msgrÒ  s
   &&&       r3   rÛ  ÚInit._consume_vendordatam  sÒ  € ð ˜LÔ(Ø—7‘7×-Ñ-×/Ò/Ü—	‘	Ð9Ô:ÙØ$‰HØ˜mÔ+Ø—7‘7×.Ñ.×0Ò0Ü—	‘	Ð:Ô;ÙØ%‰Häð$óð ô
 ×)Ò)Ø—+‘+Ø—w‘wØØ—X‘XØ ô
ˆ
ð —‘×"Ñ" 8¨RÓ0ˆä˜%¤×&Ò&Ø Ð&ˆEÜ�K‰KØ6¸ôð —)‘)˜IÓ&ˆØ—i‘iÐ 3°TÓ:ˆä�|Š|˜G×$Ò$Ü�I‰IÐ3°]ÔCÙä�gœs×#Ò#Ü×ÒØ,¨W¨Ið 6.ð .à#)Ø:õ	ô 	�	‰	Ø7ØØô	
ð ˜LÔ(Ø"Ÿg™g×4Ñ4Ó6ˆOØ"×?Ñ?ÓA‰Oà"Ÿg™g×5Ñ5Ó7ˆOØ"×@Ñ@ÓBˆOð 	×ÑØ¨ið 	ö 	
r6   c                ó€   € V P                   P                  R4      pV P                  4       pV P                  W#V4       R# )z0
Consume the userdata and run the part handlers
TN)rý   rl  r’  rÔ  )r2   r½  Úuser_data_msgrÒ  s   &&  r3   rÚ  ÚInit._consume_userdata»  s:   € ð Ÿ™×,Ñ,¨TÓ2ˆð ×0Ñ0Ó2ˆð 	×Ñ˜-¸)ÖDr6   c                ó8   <€ V ^8„  d   QhRS[ S[S[R3,          /# ©r@   rE   N)r   r   r   )rI   r>   s   "€r3   rJ   rj   É  s    ø€ ÷ ñ ±±e¹UÀDÐ6HÕ0Iñ r6   c                ó6   € V'       d   RV9   d
   VR,          # V# )zˆ
Network configuration can be passed as a dict under a "network" key, or
optionally at the top level. In both cases, return the config.
Únetworkr»   )r2   rB   s   &&r3   Ú_get_network_key_contentsÚInit._get_network_key_contentsÉ  s   € ÷
 �9 Ô#Ø�y•>Ð!Øˆ
r6   c                ód   <€ V ^8„  d   QhRS[ S[S[S[R3,          S[S[S[3,          3,          /# rü  )r   r   r   r   r*   ri   )rI   r>   s   "€r3   rJ   rj   Ò  s6   ø€ ÷ 2
ñ 2
á	‰u‘U™E 4Ð'Õ(©%Ñ0CÁSÐ0HÕ*IÐIÕ	Jñ2
r6   c           
     óø  € \         P                  P                  V P                  P	                  R 4      R4      p\         P                  P                  V4      '       d   RV3# \        P                  \        P                  ! 4       \        P                  \        P                  ! 4       \        P                  R\        P                  V P                  P                  R4      /pV P                   '       d[   V P"                  P$                  p\'        V P"                  R4      '       d(   V P"                  P(                  V\        P                  &   M\*        P,                  P$                  pV F«  p\/        V\        4      '       g   \0        P3                  RV4       K1  WB9  d   \0        P3                  RV4       KO  V P5                  W$,          4      p\6        P8                  ! V4      '       d   \0        P;                  RV4       RV3u # V'       g   K¨  WT3u # 	  V P                  P                  RR4      '       g   \0        P3                  R	4       V P<                  P?                  4       \        P@                  3# )
r�   zupgraded-networkNrþ  r4  z7data source specifies an invalid network cfg_source: %sz;data source specifies an unavailable network cfg_source: %sznetwork config disabled by %sTzEmpty network config found)!r    r¡   r¢   rW   r[   r  r*   ÚCMD_LINEr#   Úread_kernel_cmdline_configÚ	INITRAMFSÚread_initramfs_configÚDSÚ
SYSTEM_CFGrB   rO   rA   rý   Únetwork_config_sourcesr  r4  r   rF   rÈ   rY   rÌ   rÿ  r   Úis_disabled_cfgrZ   r   Úgenerate_fallback_configÚFALLBACK)r2   Údisable_fileÚavailable_cfgsÚorderÚ
cfg_sourceÚncfgs   &     r3   Ú_find_networking_configÚInit._find_networking_configÒ  sÛ  € ô —w‘w—|‘|Ø�J‰J× Ñ  Ó(Ð*<ó
ˆô �7‰7�>‰>˜,×'Ò'Ø˜,Ð'Ð'ô  ×(Ñ(¬'×*LÒ*LÓ*NÜ×)Ñ)¬7×+HÒ+HÓ+JÜ×"Ñ" DÜ×*Ñ*¨D¯H©H¯L©L¸Ó,Cð	
ˆð �?�?ˆ?Ø—G‘G×2Ñ2ˆEÜ�t—w‘wÐ 0×1Ò1Ø9=¿¹×9OÑ9O�Ô2×5Ñ5Ñ6øä×&Ñ&×=Ñ=ˆEãˆJÜ˜jÔ*=×>Ò>ô —‘ØMØôñ ØÔ/Ü—‘ð&àôñ
 Ø×1Ñ1°.Õ2LÓMˆDÜ×"Ò" 4×(Ò(Ü—	‘	Ð9¸:ÔFØ˜jÐ)Ò)ß‰tØÐ)Ò)ñ+  ð, �x‰x�|‰|˜I t×,Ò,Ü�K‰KÐ4Ô5à�K‰K×0Ñ0Ó2Ü×(Ñ(ð
ð 	
r6   c                óÜ   €  \         P                  R V4       V P                  P                  P	                  V4       R#   \
         d"   p\         P                  RT4        Rp?R# Rp?ii ; i)z applying net config names for %szFailed to rename devices: %sN)rY   rZ   r   Ú
networkingÚapply_network_config_namesrC  rÌ   )r2   r2  rÔ   s   && r3   Ú_apply_netcfg_namesÚInit._apply_netcfg_names  sP   € ð	;Ü�I‰IÐ8¸&ÔAØ�K‰K×"Ñ"×=Ñ=¸fÖEøÜô 	;Ü�K‰KÐ6¸×:Ò:ûð	;ús   ‚;? ¿A+Á
A&Á&A+c                ó    <€ V ^8„  d   QhRS[ /# r  )r-   )rI   r>   s   "€r3   rJ   rj     s   ø€ ÷ 
ñ 
±ñ 
r6   c                ó€   € \        \        P                  ! V P                  P	                  R 4      4      R\
        34      # )rœ   Úapply_network_config)r-   r   ÚFileSemaphoresrW   rç   r)   rz   s   &r3   Ú_get_per_boot_network_semaphoreÚ$Init._get_per_boot_network_semaphore  s4   € ÜÜ×"Ò" 4§:¡:×#9Ñ#9¸%Ó#@ÓAØ#¤XÐ.ó
ð 	
r6   c                ó    <€ V ^8„  d   QhRS[ /# r  )rH   )rI   r>   s   "€r3   rJ   rj     s   ø€ ÷ 0ñ 0©Tñ 0r6   c                ój   € V P                  4       pVP                  P                  ! VP                  !  # r/   )r  r0   Úhas_runr1   )r2   rœ   s   & r3   Ú_network_already_configuredÚ Init._network_already_configured  s)   € Ø×2Ñ2Ó4ˆØ�}‰}×$Ò$ c§h¡hÑ/Ð/r6   c                óR  a a	€ ^ RI HpHp S P                  4       w  rEVf   \        P                  RV4       R# V 3R lo	V	V 3R lpS P                  eh   S P                  4       '       gR   V! 4       '       gE   S	! \        P                  4      '       g)   \        P                  R4       S P                  V4       R# S P                  4       w  rEV'       d)   S P                  V4       V! VVP                  RRRR	7       S P                  P                  P!                  V4       S P                  V4       \        P                  R
VVV4       S P#                  4       p VP$                  P&                  ! VP(                  !  ;_uu_ 4        S P                  P+                  WAR7      uuRRR4       #   + '       g   i     R# ; i  \,        P.                   d"   p\        P1                  RT4        Rp?R# Rp?i\2         d%    \        P5                  RS P                  4        R# i ; i)zApply the network config.

Find the config, determine whether to apply it, apply it via
the distro, and optionally bring it up
)Ú
SchemaTypeÚvalidate_cloudconfig_schemaNz network config is disabled by %sc                 ó®   <€ \        SP                  SP                  V \        P                  R 7      ;'       d    SP                  P                  V .4      # ))rA   rB   rC   rD   )rd   rý   rB   r   ÚNETWORKÚupdate_metadata_if_supported)Ú
event_typer2   s   &€r3   Ú"event_enabled_and_metadata_updatedÚEInit.apply_network_config.<locals>.event_enabled_and_metadata_updated'  sM   ø€ Ü'ØŸ7™7Ø—H‘HØ",Ü ×(Ñ(ô	÷ Eð Eð
 —'‘'×6Ñ6¸
°|ÓDðEr6   c                  ój   <€ SP                  4       '       * ;'       d    S ! \        P                  4      # r/   )r"  r   ÚBOOT)r+  r2   s   €€r3   Úshould_run_on_boot_eventÚ;Init.apply_network_config.<locals>.should_run_on_boot_event/  s/   ø€ à×4Ñ4Ó6Ô6÷ Gð GÙ6´y·~±~ÓFðr6   zWNo network config applied. Neither a new instance nor datasource network update allowedFT)ÚconfigÚschema_typeÚstrictÚlog_detailsÚlog_deprecationsz5Applying network configuration from %s bringup=%s: %s)Úbring_upz@Unable to render networking. Network config is likely broken: %sz_distro '%s' does not implement apply_network_config. networking may not be configured properly.)Úcloudinit.config.schemar%  r&  r  rY   r  rA   rX  r   ÚBOOT_LEGACYrZ   r  r=  ÚNETWORK_CONFIGr   r  Úwait_for_physdevsr  r0   Úlockr1   r  r   ÚRendererNotFoundErrorrÐ   ÚNotImplementedErrorrÌ   )
r2   r6  r%  r&  r2  Úsrcr/  rœ   rÔ   r+  s
   f&       @r3   r  ÚInit.apply_network_config  sÅ  ù€ ÷	
ð
 ×2Ñ2Ó4‰ˆØŠ>Ü�H‰HÐ7¸Ô=Ùõ	Eö	ð �O‰OÒ'Ø×(Ñ(×*Ò*Ù,×.Ò.Ù6´y×7LÑ7L×MÒMä�I‰Ið9ôð
 ×$Ñ$ VÔ,Ùð ×2Ñ2Ó4‰ˆßØ×+Ñ+¨FÔ3Ù'ØØ&×5Ñ5ØØ!Ø!%õð 	�‰×Ñ×0Ñ0°Ô8ð 	× Ñ  Ô(ô 	�‰ØCØØØô		
ð ×2Ñ2Ó4ˆð	Ø—‘×#Ò# S§X¡X×.Ó.Ø—{‘{×7Ñ7Øð 8ó ÷ /×.×.Ó.ûô ×(Ñ(ô 	Ü�I‰Ið$àôõ
 ûÜ"ô 	Ü�K‰Kð=à—‘ôò
 ð	úsB   Å,G ÆF/Æ$
G Æ/G 	Æ:G Ç G ÇH&ÇG4Ç4H&È!H&È%H&)rq   rs   rr   ru   rA   rh   rt   rw   )NN)Fr/   )r
  )9r7   r8   r9   r:   r4   r{   Úpropertyr   rB   r�   rW   r¥   r°   r´   Ústaticmethodr¼   r³   rŽ   r×   rÛ   rñ   rþ   r  r  r%  r(  r/  r=  rO  rý   rD  rX  rƒ   r^  rc  rr  rw  r{  ri  rm  rk  r’  r›  rŸ  rÔ  r(   rä  rÛ  rÚ  rÿ  r  r  r  r"  r  r;   r<   r=   s   @r3   rf   rf   Œ   s›  ø‡ € ÷!ò !ò,ð ñó ðð  ñ/ó ð/òð ñó ðòô&ò&ð ÷ó ðò#ôJ2ò:÷&ð òEò	Oò$òF÷4.ð .ò`.ô
÷<ð <ò4;ðz ÷
ó ð
ò"ò

÷8ò 8ò,ò	
òLòBò	#òMò	.ò
÷ò ò@
ò
ôt ðl &2ô N
ð` <Hô L
ð\ +7ô E÷ð ÷2
ð 2
òh;÷
ð 
÷0ð 0÷Xð Xr6   rf   c                ó$   € V ^8„  d   QhR\         /# )r@   rŸ   )ri   )rI   s   "r3   rJ   rJ   r  s   € ÷ >ñ >¤ñ >r6   c                 ój   € \         P                  ! \        P                  P	                  V R 4      4      # )z	cloud.cfg)r   Ú	read_confr    r¡   r¢   )rŸ   s   &r3   Úread_runtime_configrE  r  s    € Ü�>Š>œ"Ÿ'™'Ÿ,™, w°Ó<Ó=Ð=r6   rä   c                ó0   € V ^8„  d   QhR\         R\        /# )r@   rŸ   rE   )ri   rG   )rI   s   "r3   rJ   rJ   v  s   € ÷ ñ œsð Ä4ñ r6   c                óÌ   € \         P                  ! \         P                  ! 4       \         P                  ! \        VR 7      \        V 4      \         P                  ! 4       .RR7      # )rã   T)Úreverse)r   rP   Úget_builtin_cfgÚread_conf_with_confdr%   rE  Úread_conf_from_cmdline)rŸ   rä   s   &$r3   ré   ré   v  sW   € Ü×Òô × Ò Ó"ä×%Ò%ÜÐ1Côô   Ó(ä×'Ò'Ó)ð	
ð ôð r6   )FrQ   rß  Úloggingr    rÏ  Ú
contextlibr   Úpathlibr   Útypingr   r   r   r   r	   r
   r   r   Ú	cloudinitr   r   r   r   r   r   r   r   r   r   r   r   Úcloudinit.configr   r   Úcloudinit.eventr   r   r   Úcloudinit.handlers.boot_hookr   Úcloudinit.handlers.cloud_configr   Ú!cloudinit.handlers.jinja_templater    Úcloudinit.handlers.shell_scriptr!   Ú,cloudinit.handlers.shell_script_by_frequencyr"   Úcloudinit.netr#   Úcloudinit.reportingr$   Úcloudinit.settingsr%   r&   r'   r(   r)   Úcloudinit.sourcesr*   Ú	getLoggerr7   rY   r+   r-   rÜ  rd   rf   rE  ré   r»   r6   r3   Ú<module>r]     sÃ   ðó Û Û Û 	Û 
Ý Ý ß I× IÓ I÷÷ ÷ ó ÷ *ß EÑ Eõ =Ý BÝ FÝ Bõõ "Ý &÷õ õ 2à×Ò˜Ó!€à3Ð ÷ñ ðFð õB÷Jcñ cõL>ð¸$÷ ñ r6   