+
    ˜qgjx$  ã                   ó  € R t ^ RIt^ RIHu Hu Ht ^ RIHtH	t	HtH
t
Ht ^ RIHtHt ^ RIHt ^ RIHt ]P&                  ! ]4      tRRRR	R
R/t^<t^t^t^xt^tRtR t ! R R]P<                  4      tR t ]]PB                  33.t"R t#R# )z;Hetzner Cloud API Documentation
https://docs.hetzner.cloud/N)ÚdmiÚnetÚsourcesÚ
url_helperÚutil)Ú
EventScopeÚ	EventType)ÚNoDHCPLeaseError)ÚEphemeralIPNetworkÚmetadata_pathÚmetadataÚmetadata_private_networks_pathzmetadata/private-networksÚuserdata_pathÚuserdatazU
SUBSYSTEM=="net", ATTR{address}=="86:*", GOTO="cloudinit_hook"
GOTO="cloudinit_end"
c                  ó8   € R \         P                  ! 4        R2R3# )zhttp://[fe80::a9fe:a9fe%25z]/hetzner/v1/z"http://169.254.169.254/hetzner/v1/)r   Úfind_fallback_nic© ó    ÚE/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.pyÚbase_urls_v1r   '   s%   € à
$¤S×%:Ò%:Ó%<Ð$=¸]ÐKØ,ðð r   c                   óÂ   a a€ ] tR t^.t oRt]P                  ]P                  ]P                  ]P                  0/tR tV3R lV 3R lltR tR t]R 4       tRtVtV ;t# )	ÚDataSourceHetznerÚHetznerc                óL  € \         P                  P                  WW#4       W n        / V n        \
        P                  ! \
        P                  ! VR R./ 4      \        .4      V n	        V P                  R,          V n
        V P                  R,          V n        V P                  R,          V n        V P                  P                  R\        4      V n        V P                  P                  R\         4      V n        V P                  P                  R\$        4      V n        V P                  P                  R\(        4      V n        V P                  P                  R	\,        4      V n        \         P0                  V n        \         P4                  V n        R
V n        \:        V n        R
# )Ú
datasourcer   r   r   r   ÚretriesÚtimeoutÚ
wait_retryÚmax_waitÚ
sleep_timeN)r   Ú
DataSourceÚ__init__Údistror   r   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgr   r   r   ÚgetÚ
MD_RETRIESr   Ú
MD_TIMEOUTr   ÚMD_WAIT_RETRYr   ÚMD_MAX_WAITr   ÚMD_SLEEP_TIMEr   ÚUNSETÚ_network_configÚDSMODE_NETWORKÚdsmodeÚmetadata_fullÚEXTRA_HOTPLUG_UDEV_RULESÚextra_hotplug_udev_rules)ÚselfÚsys_cfgr"   Úpathss   &&&&r   r!   ÚDataSourceHetzner.__init__9   s&  € Ü×Ñ×#Ñ# D°6ÔAØŒØˆŒÜ×(Ò(ä×$Ò$ W¨|¸YÐ.GÈÓLÜ!ðó
ˆŒð "Ÿ[™[¨Õ9ˆÔØ.2¯k©kØ,õ/
ˆÔ+ð "Ÿ[™[¨Õ9ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒØŸ™Ÿ™¨
´KÓ@ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒÜ&Ÿ}™}ˆÔÜ×,Ñ,ˆŒØ!ˆÔä(@ˆÖ%r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )é   Úci_pkl_versionÚreturnN)Úint)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚDataSourceHetzner.__annotate__S   s   ø€ ÷ 
:ñ 
:©ð 
:°ñ 
:r   c                óª  <€ \         SV `  V4       \        V n        V P                  P                  R \        4      V n        V P                  P                  R\        4      V n	        V P                  P                  R\        4      V n        V P                  R,          V n        V P                  R,          V n        V P                  R,          V n        R# )r   r   r   r   r   r   N)ÚsuperÚ	_unpickler2   r3   r&   r'   r*   r   r+   r   r,   r   r   r   r   )r4   r:   Ú	__class__s   &&€r   rC   ÚDataSourceHetzner._unpickleS   s’   ø€ Ü‰Ñ˜.Ô)Ü(@ˆÔ%ØŸ+™+Ÿ/™/¨,¼ÓFˆŒØŸ™Ÿ™¨
´KÓ@ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒØ!Ÿ[™[¨Õ9ˆÔØ.2¯k©kØ,õ/
ˆÔ+ð "Ÿ[™[¨Õ9ˆÖr   c                ó†  € \        4       w  rV'       g   R # \        4       p \        V P                  \        P
                  ! 4       RRV Uu. uF(  pR\        P                  ! W@P                   R24      /NK*  	  upR7      ;_uu_ 4        \        P                  ! V Uu. uF#  p\        P                  ! W@P                  4      NK%  	  upV P                  V P                  V P                  R7      w  rE\        P                  RV4       \         P"                  ! VP%                  4       \&        \(        3R7      p\        P                  ! V Uu. uF#  p\        P                  ! W@P*                  4      NK%  	  upV P                  V P                  V P                  R7      w  rE\        P                  RV4       \         P"                  ! VP%                  4       \&        \(        3R7      VR	&   \        P                  ! V Uu. uF#  p\        P                  ! W@P,                  4      NK%  	  upV P                  V P                  V P                  R7      w  rG\        P                  R
V4       V'       g   \        P                  R4       RRR4       \         P2                  ! X4      T n        XT n        TR,          T P8                  R&   TR,          T P8                  R&   TP;                  RR4      T P8                  R&   TP;                  RR4      T P8                  R&   TP;                  R	. 4      T P8                  R	&   TP;                  RR4      T n        T P?                  4       T8w  d   \A        R4      hR# u upi u upi u upi u upi   + '       g   i     EL	; i  \.         d   p\        P1                  RT4       h Rp?ii ; i)FTÚurlz/instance-id)Ú	interfaceÚipv4Úipv6Úconnectivity_urls_data)r   r   r   zUsing metadata source: '%s')Úallowedz#Using private_networks source: '%s'úprivate-networkszUsing userdata source: '%s'zGot empty userdataNzBailing, DHCP Exception: %szinstance-idÚhostnamezlocal-hostnameúnetwork-configzpublic-keysÚvendor_dataz6SMBIOS serial does not match instance ID from metadata)!Úget_hcloud_datar   r
   r"   r   r   r   Úcombine_urlr   Ú	hc_helperÚget_metadatar   r   r   ÚLOGÚdebugr   Ú	load_yamlÚdecodeÚdictÚlistr   r   r	   ÚerrorÚmaybe_b64decodeÚuserdata_rawr1   r   r'   Úvendordata_rawÚget_instance_idÚRuntimeError)	r4   Ú
on_hetznerÚserialÚ	base_urlsrG   ÚcontentsÚmdÚudÚes	   &        r   Ú	_get_dataÚDataSourceHetzner._get_data_   s;  € Ü.Ó0ÑˆçÙä “Nˆ	ð7	Ü#Ø—‘Ü×/Ò/Ó1ØØñ  )ó(ñ  )˜ð	 œz×5Ò5Ø×$6Ñ$6Ð#7°|Ð!Dó óñ
  )ñ(÷ö ô !*× 6Ò 6ñ $-óá#,˜Cô #×.Ò.¨s×4FÑ4FÖGÙ#,ñð "Ÿ]™]Ø ŸL™LØ#Ÿ™ô!‘�ô —	‘	Ð7¸Ô=Ü—^’^ H§O¡OÓ$5ÄÄd¸|ÔL�Ü )× 6Ò 6ñ
 $-ó	ñ $-˜Cô #×.Ò.Ø×!DÑ!Döñ $-ñ	ð "Ÿ]™]Ø ŸL™LØ#Ÿ™ô
!‘�ô —	‘	Ð?ÀÔEÜ)-¯ªØ—O‘OÓ%´´d¨|ô*�Ð%Ñ&ô $×0Ò0ñ $-óá#,˜Cô #×.Ò.¨s×4FÑ4FÖGÙ#,ñð "Ÿ]™]Ø ŸL™LØ#Ÿ™ô‘�ô —	‘	Ð7¸Ô=ßÜ—I‘IÐ2Ô3÷gô~ !×0Ò0°Ó4ˆÔØˆÔð
 (*¨-Õ'8ˆ�‰�mÑ$Ø*,¨Z­.ˆ�‰Ð&Ñ'Ø*,¯&©&Ð1AÀ4Ó*Hˆ�‰Ð&Ñ'Ø')§v¡v¨m¸TÓ'Bˆ�‰�mÑ$Ø,.¯F©FÐ3EÀrÓ,Jˆ�‰Ð(Ñ)Ø Ÿf™f ]°DÓ9ˆÔð ×ÑÓ! VÔ+ÜØHóð ñ ùò[(ùòùòùò÷S÷ ð ûôh  ô 	Ü�I‰IÐ3°QÔ7Øûð	úst   ¢*N Á.M1Á:N Â
NÂ)M6ÃBNÅ)M;Å6BNÇ>)N È'ANÊN Í1N Í6NÎN	ÎN ÎN ÎO Î$N;Î;O c                óL   € \         P                  ! V P                  4       R 4      # )úsystem-serial-number)r   Úinstance_id_matches_system_uuidr_   )r4   r5   s   &&r   Úcheck_instance_idÚ#DataSourceHetzner.check_instance_id»   s$   € Ü×6Ò6Ø× Ñ Ó"Ð$:ó
ð 	
r   c                óT  € V P                   f:   \        P                  R\        P                  4       \        P                  V n         V P                   \        P                  8w  d   V P                   # V P
                  R,          pV'       g   \        R4      hV P
                  P                  R. 4      p. pV FC  pVP                  RRRVR,          R\        P                  ! VR,          4      R	R
RRR/./4       KE  	  VR,          P                  V4       Wn         V P                   # )z‡Configure the networking. This needs to be done each boot, since
the IP information may have changed due to snapshot and/or
migration.
z5Found None as cached _network_config. Resetting to %srO   z'Unable to get meta-data from server....rM   ÚtypeÚphysicalÚmac_addressÚnameÚsubnetsrI   TÚdhcpÚconfig)r.   rU   Úwarningr   r-   r   r`   r'   ÚappendrS   Úget_interface_name_from_macÚextend)r4   Ú
net_configÚprivate_networksÚprivate_networks_configÚprivate_networks   &    r   Únetwork_configÚ DataSourceHetzner.network_configÀ   s  € ð ×ÑÒ'Ü�K‰KØGÜ—‘ôô $+§=¡=ˆDÔ à×Ñ¤7§=¡=Ô0Ø×'Ñ'Ð'à—]‘]Ð#3Õ4ˆ
ßÜÐHÓIÐIàŸ=™=×,Ñ,Ð-?ÀÓDÐØ"$ÐÛ/ˆOØ#×*Ñ*à˜JØ! ?°=Õ#AØœI×AÒAØ'¨Õ6óð à" DØ" Fðð ðöñ  0ð  	�8Õ×#Ñ#Ð$;Ô<Ø)ÔØ×#Ñ#Ð#r   )r.   r"   r&   r0   r3   r   r   r1   r   r   r   r   r   r   r]   r^   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údsnamer   ÚNETWORKr   ÚBOOT_NEW_INSTANCEÚBOOTÚHOTPLUGÚdefault_update_eventsr!   rC   rh   rm   Úpropertyr   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)rD   r>   s   @@r   r   r   .   sp   ù‡ € Ø€Fð 	×ÑØ×'Ñ'Ø�N‰NØ×Ñð
ðÐòA÷4
:ó 
:òZòx
ð
 ñ($ó ÷($ð ($r   r   c                  óÆ   € \         P                  ! R 4      p V R8w  d   R# \         P                  ! R4      pV'       d   \        P                  RV4       RV3# \	        R4      h)zsystem-manufacturerr   rk   z#Running on Hetzner Cloud: serial=%sz+Hetzner Cloud detected, but no serial foundT)FN)r   Úread_dmi_datarU   rV   r`   )Úvendor_namerb   s     r   rQ   rQ   ì   s^   € Ü×#Ò#Ð$9Ó:€KØ�iÔØÐä×ÒÐ5Ó6€FßÜ�	‰	Ð7¸Ô@ð �ˆ<Ðô ÐHÓIÐIr   c                 ó8   € \         P                  ! V \        4      # )N)r   Úlist_from_dependsÚdatasources)Údependss   &r   Úget_datasource_listr–     s   € Ü×$Ò$ W¬kÓ:Ð:r   )$Ú__doc__ÚloggingÚ!cloudinit.sources.helpers.hetznerr   ÚhelpersÚhetznerrS   Ú	cloudinitr   r   r   r   Úcloudinit.eventr   r   Úcloudinit.net.dhcpr	   Úcloudinit.net.ephemeralr
   Ú	getLoggerr�   rU   r%   r(   r)   r*   r+   r,   r2   r   r    r   rQ   ÚDEP_FILESYSTEMr”   r–   r   r   r   Ú<module>r¢      s¯   ðñó ç 5Ó 5ß 9Õ 9ß 1Ý /Ý 6à×Ò˜Ó!€ð �ZØ$Ð&AØ�ZðÐ ð €
Ø€
Ø€Ø€Ø€ðÐ òô{$˜×*Ñ*ô {$ò|ð  ˜×/Ñ/Ð1Ð2ð€ô;r   