+
    ˜qgjI,  ã                   óÚ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
Ht ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ]P<                  ! ]4      t Rt!RR lt" ! R R]PF                  4      t$ ! R R]$4      t%R]%]PL                  3/t'R t(R R lt)R R lt*R R lt+R R lt,R t-]R8X  d!   ]"! 4       P]                  4       t/]-! ]!]/4       R# R# )z)Handle reconfiguration on hotplug events.N)Ú	reportingÚstagesÚutil)Úinstall_hotplug)Ú
EventScopeÚ	EventType)Úloggers)Úread_sys_net_safe)Úparse_net_config_data)Úevents)Ú
DataSourceÚDataSourceNotFoundException©ÚInitzhotplug-hookc                óš  € V '       g!   \         P                  ! \        \        R7      p \        V n        V P                  RRRRR.R7       V P                  RR	R
7      pRVn        VP                  RRR7       VP                  RRR7      pVP                  RRRRRR7       VP                  RRRRR.R7       VP                  RRR7       V # )a  Build or extend an arg parser for hotplug-hook utility.

@param parser: Optional existing ArgumentParser instance representing the
    subcommand which will be extended to support the args of this utility.

@returns: ArgumentParser with proper argument configuration.
)ÚprogÚdescriptionz-sz--subsystemTzsubsystem to act onÚnet)ÚrequiredÚhelpÚchoiceszHotplug ActionÚhotplug_action)ÚtitleÚdestÚqueryz0Query if hotplug is enabled for given subsystem.)r   ÚhandlezHandle the hotplug event.z-dz	--devpathÚPATHzSysfs path to hotplugged device)r   Úmetavarr   z-uz--udevactionzSpecify action to take.ÚaddÚenablez%Enable hotplug for a given subsystem.)	ÚargparseÚArgumentParserÚNAMEÚ__doc__r   Úadd_argumentÚadd_subparsersr   Ú
add_parser)ÚparserÚ
subparsersÚparser_handles   &  ÚB/usr/lib/python3/dist-packages/cloudinit/cmd/devel/hotplug_hook.pyÚ
get_parserr+      s  € ÷ Ü×(Ò(¬dÄÔHˆä €FÔØ
×ÑØØØØ"Ø�ð ô ð ×&Ñ&ØÐ%5ð 'ó €Jð €JÔà×ÑØÐHð ô ð ×)Ñ)ØÐ2ð *ó €Mð ×ÑØØØØØ.ð ô ð ×ÑØØØØ&Ø�ð ô ð ×ÑØÐ>ð ô ð €Mó    c                   óº   a € ] tR t^Qt o R t]P                  R 4       t]]P                  R 4       4       t	]P                  V 3R lR l4       t
R tR tR tR	tV tR
# )ÚUeventHandlerc                óB   € Wn         W n        W0n        W@n        WPn        R # ©N)ÚidÚ
datasourceÚdevpathÚactionÚ
success_fn)Úselfr1   r2   r3   r4   r5   s   &&&&&&r*   Ú__init__ÚUeventHandler.__init__R   s   € ØŒØ&0ŒØŒØŒØ$Žr,   c                ó   € \        4       hr0   ©ÚNotImplementedError©r6   s   &r*   ÚapplyÚUeventHandler.applyY   ó   € ä!Ó#Ð#r,   c                ó   € \        4       hr0   r:   r<   s   &r*   ÚconfigÚUeventHandler.config]   s   € ô "Ó#Ð#r,   c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn©Úbool)ÚformatÚ__classdict__s   "€r*   Ú__annotate__ÚUeventHandler.__annotate__c   s   ø€ ÷ $ñ $¡ñ $r,   c                ó   € \        4       hr0   r:   r<   s   &r*   Údevice_detectedÚUeventHandler.device_detectedb   r?   r,   c                óÊ   € R pV P                   R8X  d   RpM\        RV P                   ,          4      hWP                  4       8w  d   \        RV P                  ,          4      hR # )Nr   TzUnknown action: %sz'Failed to detect %s in updated metadata)r4   Ú
ValueErrorrN   ÚRuntimeErrorr1   )r6   Údetect_presences   & r*   Údetect_hotplugged_deviceÚ&UeventHandler.detect_hotplugged_devicef   sZ   € ØˆØ�;‰;˜%ÔØ"‰OäÐ1°D·K±KÕ?Ó@Ð@à×2Ñ2Ó4Ô4ÜØ9¸D¿G¹GÕCóð ñ 5r,   c                ó"   € V P                  4       # r0   )r5   r<   s   &r*   ÚsuccessÚUeventHandler.successr   s   € Ø�‰Ó Ð r,   c                óÀ   € V P                   P                  \        P                  .4      pV'       g,   \	        R V P                   : R\        P                  : 24      hV# )zDatasource z not updated for event )r2   Úupdate_metadata_if_supportedr   ÚHOTPLUGrR   )r6   Úresults   & r*   Úupdate_metadataÚUeventHandler.update_metadatau   sO   € Ø—‘×=Ñ=Ü×ÑÐó
ˆ÷ Ýà—?”?¤I×$5Ó$5ð7óð ð ˆr,   )r4   r2   r3   r1   r5   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r7   ÚabcÚabstractmethodr=   ÚpropertyrA   rN   rT   rW   r]   Ú__static_attributes__Ú__classdictcell__)rJ   s   @r*   r.   r.   Q   st   ø‡ € ò%ð 	×Ññ$ó ð$ð Ø×Ññ$ó ó ð$ð 	×Ñ÷$ó ð$ò
ò!÷	ð 	r,   r.   c                   óZ   a a€ ] tR t^�t oV 3R ltR t]R 4       tV3R lR ltRt	Vt
V ;t# )Ú
NetHandlerc                ó|   <€ \        \        P                  P                  V4      R 4      p\        SV `  WQW#V4       R# )ÚaddressN)r	   ÚosÚpathÚbasenameÚsuperr7   )r6   r2   r3   r4   r5   r1   Ú	__class__s   &&&&& €r*   r7   ÚNetHandler.__init__‚   s/   ø€ äœrŸw™w×/Ñ/°Ó8¸)ÓDˆÜ‰Ñ˜¨¸*ÖEr,   c                óž  € V P                   P                  P                  V P                  R R7       \        P
                  P                  V P                  4      pV P                   P                  P                  4       pV P                  R8X  d>   VP                  V4      '       g%   \        RP                  V P                  4      4      hR# R# )F)Úbring_upr   zFailed to bring up device: {}N)r2   ÚdistroÚapply_network_configrA   rl   rm   rn   r3   Únetwork_activatorr4   Úbring_up_interfacerR   rI   )r6   Úinterface_nameÚ	activators   &  r*   r=   ÚNetHandler.apply‡   s¢   € Ø�‰×Ñ×3Ñ3Ø�K‰KØð 	4ô 	
ô Ÿ™×)Ñ)¨$¯,©,Ó7ˆØ—O‘O×*Ñ*×<Ñ<Ó>ˆ	Ø�;‰;˜%ÔØ×/Ñ/°×?Ò?Ü"Ø3×:Ñ:¸4¿<¹<ÓHóð ñ @ñ  r,   c                ó.   € V P                   P                  # r0   )r2   Únetwork_configr<   s   &r*   rA   ÚNetHandler.config”   s   € à�‰×-Ñ-Ð-r,   c                ó    <€ V ^8„  d   QhRS[ /# rD   rG   )rI   rJ   s   "€r*   rK   ÚNetHandler.__annotate__˜   s   ø€ ÷ ñ ¡ñ r,   c                ó  € \        V P                  4      pVP                  4        Uu. uF'  pVP                  R 4      V P                  8X  g   K%  VNK)  	  pp\
        P                  RV P                  V4       \        V4      ^ 8„  # u upi )Úmac_addresszIfaces with ID=%s : %s)r
   rA   Úiter_interfacesÚgetr1   ÚLOGÚdebugÚlen)r6   ÚnetstateÚifaceÚfounds   &   r*   rN   ÚNetHandler.device_detected˜   s|   € Ü(¨¯©Ó5ˆð "×1Ñ1Ô3ó
á3�Ø�y‰y˜Ó'¨4¯7©7Ñ2÷ ˆEÙ3ð 	ð 
ô
 	�	‰	Ð*¨D¯G©G°UÔ;Ü�5‹z˜A‰~Ðùò
s   ¨"BÁB© )r_   r`   ra   rb   r7   r=   re   rA   rN   rf   rg   Ú__classcell__)rp   rJ   s   @@r*   ri   ri   �   s3   ù‡ € õFò
ð ñ.ó ð.÷÷ ð r,   ri   r   c                 ó   €  \         V,          ^,          p\        P
                  ! T P                  T P                  \        P                  TR7      #   \         d!   p\        RP                  T4      4      ThRp?ii ; i)é   z4hotplug-hook: cannot handle events for subsystem: {}N)r2   ÚcfgÚevent_source_typeÚscope)
ÚSUBSYSTEM_PROPERTIES_MAPÚKeyErrorrR   rI   r   Úupdate_event_enabledr2   r�   r   r[   )Úhotplug_initÚ	subsystemr‘   Úes   &&  r*   Ú
is_enabledr˜   ¨   s~   € ðÜ(¨Õ3°AÕ6ˆô ×&Ò&Ø×*Ñ*Ø×ÑÜ#×+Ñ+Øô	ð øô ô ÜØB×IÑIØóó
ð ð		ûðús   ‚A ÁA=ÁA8Á8A=c                ó0   € V ^8„  d   QhR\         R\        /# )rE   r•   r–   )r   Ústr)rI   s   "r*   rK   rK   º   s   € ÷ ñ ¬ð ¼ñ r,   c                 ó"  € \         P                  R 4       V P                  RR7      pVP                  \        P
                  .4      '       g   \         P                  RV4       R# \        W4      '       g   \         P                  RV4       R# V# )zFetching datasourceÚtrust©Úexistingz*hotplug not supported for event of type %sNz(hotplug not enabled for event of type %s)r„   r…   ÚfetchÚget_supported_eventsr   r[   r˜   )r•   r–   r2   s   && r*   Úinitialize_datasourcer¡   º   sq   € Ü‡I�IÐ#Ô$Ø×#Ñ#¨WÐ#Ó5€Jà×*Ñ*¬I×,=Ñ,=Ð+>×?Ò?Ü�	‰	Ð>À	ÔJÙä�l×.Ò.Ü�	‰	Ð<¸iÔHÙØÐr,   c                ó(   € V ^8„  d   QhR\         RR/# )rE   r•   rF   Nr   )rI   s   "r*   rK   rK   È   s   € ÷ Cñ C¤ð CÈ$ñ Cr,   c                 ó2  € \        W4      pV'       g   R # \        V,          ^ ,          p\        P                  RV4       V! VVVV P                  R7      p\
        P
                  ! 4       pVP                  P                  '       g   \        W&V4       R # \
        P
                  ! 4       V,
          VP                  P                  8  dN   \        W&V4       \        P                  R4       \
        P                  ! VP                  P                  4       K‚  R # )NzCreating %s event handler)r2   r3   r4   r5   z>Gathering network configuration again due to IMDS limitations.)r¡   r’   r„   r…   Ú_write_to_cacheÚtimeÚhotplug_retry_settingsÚforce_retryÚtry_hotplugÚsleep_totalÚsleepÚsleep_period)r•   r3   r–   Ú
udevactionr2   Úhandler_clsÚevent_handlerÚstarts   &&&&    r*   Úhandle_hotplugr°   È   sÐ   € Ü& |Ó?€JßÙÜ*¨9Õ5°aÕ8€KÜ‡I�IÐ)¨9Ô5Ù#.ØØØØ×/Ñ/ô	$€Mô �IŠI‹K€EØ×,Ñ,×8×8Ð8Ü�I¨jÔ9ÙÜ
�)Š)‹+˜Õ
 
× AÑ A× MÑ MÔ
MÜ�I¨jÔ9Ü�	‰	ØLô	
ô 	�
Š
�:×4Ñ4×AÑAÖBñ Nr,   c                ó   € V ^8„  d   QhRR/# )rE   rF   Nr‹   )rI   s   "r*   rK   rK   à   s   € ÷ ñ ¸ñ r,   c           	      ón  € . R	Op\        R4      p\        V4       FÎ  w  rV\        P                  RV V\	        V4      4        \        P                  R4       VP                  4        VP                  '       g&   \        P                  R4       VP                  4        \        P                  R4       VP                  4        \        P                  R4       VP                  4         R# 	  Vh  \          d;   p\        P                  RT4       \        P                  ! T4       Tp Rp?EK  Rp?ii ; i)
rŽ   z#Bug while processing hotplug event.z!subsystem=%s update attempt %s/%szRefreshing metadataz$Detecting device in updated metadatazApplying config changezUpdating cachez,Exception while processing hotplug event. %sN)rŽ   é   é   é
   é   )Ú	ExceptionÚ	enumerater„   r…   r†   r]   Úskip_hotplug_detectrT   r=   rW   r¥   rª   )r–   r®   r2   Ú
wait_timesÚlast_exceptionÚattemptÚwaitr—   s   &&&     r*   r¨   r¨   à   sñ   € Ú"€JÜÐDÓE€NÜ" :Ö.‰ˆÜ�	‰	Ø/ØØÜ�
‹Oô		
ð	Ü�I‰IÐ+Ô,Ø×)Ñ)Ô+Ø×1×1Ð1Ü—	‘	Ð@ÔAØ×6Ñ6Ô8Ü�I‰IÐ.Ô/Ø×ÑÔ!Ü�I‰IÐ&Ô'Ø×!Ñ!Ô#Úñ# /ð. Ðøô ô 	Ü�I‰IÐDÀaÔHÜ�JŠJ�tÔØ�Nûð	ús   ÁB&C/Ã/D4Ã:.D/Ä/D4c                ó0   € V ^8„  d   QhR\         R\        /# )rE   r•   rF   )r   rH   )rI   s   "r*   rK   rK   ý   s   € ÷  ñ  ¤ð  ´Tñ  r,   c                 óü  € V P                  R R7      pV'       g   R# \        V,          ^,          p\        P                  VP	                  \        P                  .4      P                  V\        4       4      9   pV'       g!   \        RV 2\        P                  R7       R# \        P                  ! V P                  4      pVP                  VR,          9   d"   \        RV R2\        P                  R7       R# VR,          P                  VP                  4       \        P                  ! V P                  P!                  R	4      \"        P$                  ! V4      R
RR7       \'        VRV P(                  R7       R# )rœ   r�   Fz#hotplug not supported for event of )ÚfileÚscopesz)Not installing hotplug for event of type z. Reason: Already done.Tzhotplug.enabledÚwi   )ÚomodeÚmode)Únetwork_hotplug_enabledr�   )rŸ   r’   r   r[   r    rƒ   ÚsetÚprintÚsysÚstderrr   Úread_hotplug_enabled_fileÚpathsÚvalueÚappendÚ
write_fileÚ	get_cpathÚjsonÚdumpsr   r�   )r•   r–   r2   r‘   Úhotplug_supportedÚhotplug_enabled_files   &&    r*   Úenable_hotplugrÔ   ý   s9  € Ø×#Ñ#¨WÐ#Ó5€JßÙÜ$ YÕ/°Õ2€EÜ!×)Ñ)Ø×'Ñ'¬×):Ñ):Ð(;Ó<×@Ñ@ÀÌËÓNñÐ÷ ÜØ1°)°Ð=ÄCÇJÁJõ	
ñ Ü×9Ò9¸,×:LÑ:LÓMÐØ‡{�{Ð*¨8Õ4Ô4ÜØ7¸	°{ð C%ð %ä—‘õ	
ñ
 à˜Õ"×)Ñ)¨%¯+©+Ô6Ü‡O‚OØ×Ñ×$Ñ$Ð%6Ó7Ü�
Š
Ð'Ó(ØØõ	ô Ø¨D°l×6FÑ6Fõñ r,   c           	      ó`  € \         P                  ! V \        R R7      p\        . VR7      pVP	                  4        \
        P                  ! VP                  4       RVP                  9   d0   \        P                  ! VP                  P                  R4      4       \        P                  RT VP                  VP                  RV9   d   VP                  MRRV9   d   VP                   MR4       T;_uu_ 4         VP                  R8X  d-    \#        W1P                  4      p\'        X'       d   R
MR4       MÙVP                  R8X  d/   \-        VVP                   VP                  VP                  R7       Mš\.        P0                  ! 4       ^ 8w  d6   \(        P2                  P5                  R4       \(        P*                  ! ^4       \7        W1P                  R7      '       g   \(        P*                  ! ^4       \'        RVP                   24        RRR4       \        P                  R4       \        P<                  ! 4        R#   \$         d&    \'        R	4       \(        P*                  ! ^4        ELRi ; i  \8         d    \        P;                  R4       h i ; i  + '       g   i     L”; i)T)Úreporting_enabled)Úds_depsÚreporterr   zh%s called with the following arguments: {hotplug_action: %s, subsystem: %s, udevaction: %s, devpath: %s}r¬   Nr3   r   z9Unable to determine hotplug state. No datasource detectedÚenabledÚdisabledr   )r•   r3   r–   r¬   z9Root is required. Try prepending your command with sudo.
)r•   r–   z)Enabled cloud-init hotplug for subsystem=z*Received fatal exception handling hotplug!zExiting hotplug handler)r   ÚReportEventStackr#   r   Úread_cfgr   Úsetup_loggingr�   r   Úupdate_configurationrƒ   r„   r…   r   r–   r¬   r3   r¡   r   rÇ   rÈ   Úexitr°   rl   ÚgetuidrÉ   ÚwriterÔ   r·   Ú	exceptionÚflush_events)ÚnameÚargsÚhotplug_reporterr•   r2   s   &&   r*   Úhandle_argsrç      s  € ô ×.Ò.ØŒg¨ôÐô  Ð-=Ô>€LØ×ÑÔä×Ò˜,×*Ñ*Ô+Ø�l×&Ñ&Ô&Ü×&Ò& |×'7Ñ'7×';Ñ';¸KÓ'HÔIä‡I�Ið	JàØ×ÑØ�‰Ø'¨4Ô/ˆ�Š°TØ! TÔ)ˆ�Š¨tô÷ 
Ò	ð&	Ø×"Ñ" gÔ-ð	 Ü!6Ø$§n¡nó"�Jô §:‘i°:Õ>Ø×$Ñ$¨Ô0ÜØ!-Ø ŸL™LØ"Ÿn™nØ#Ÿ™ö	ô —9’9“; !Ô#Ü—J‘J×$Ñ$ð#ôô —H’H˜Q”KÜ%Ø!-¿¹÷ó ô —H’H˜Q”KÜð!Ø!%§¡Ð 0ð2õ÷A 
ôR ‡I�IÐ'Ô(Ü×ÒÖøôG 3ô  Üð#ôô —H’H˜Q—Kð ûô< ô 	Ü�M‰MÐFÔGØð	ú÷K 
×	úsa   Ã9JÃ;I8ÄIÄ"I8Ä7JÄ8>I8Å6JÅ7BI8ÈJÉ,I5É1I8É4I5É5I8É8"JÊJÊJ-	Ú__main__r0   )0r#   rc   r    rÐ   Úloggingrl   rÈ   r¥   Ú	cloudinitr   r   r   Ú#cloudinit.config.cc_install_hotplugr   Úcloudinit.eventr   r   Úcloudinit.logr   Úcloudinit.netr	   Úcloudinit.net.network_stater
   Úcloudinit.reportingr   Úcloudinit.sourcesr   r   Úcloudinit.stagesr   Ú	getLoggerr_   r„   r"   r+   ÚABCr.   ri   ÚNETWORKr’   r˜   r¡   r°   r¨   rÔ   rç   Ú
parse_argsrå   r‹   r,   r*   Ú<module>r÷      sÛ   ðñ 0Û 
Û Û Û Û 	Û 
Û ç -Ñ -Ý ?ß 1Ý !Ý +Ý =Ý &ß EÝ !à×Ò˜Ó!€Ø€ô3ôl-�C—G‘Gô -ô`�ô ðF 
ˆJ˜
×*Ñ*Ð+ðÐ ò
õ$õCõ0õ: òFBðJ ˆzÔÙ‹<×"Ñ"Ó$€DÙ��dÖñ r,   