+
    ix$                        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&   ##D6A(($$W|Y.GL!
 "[[9.2kk,/
+ "[[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.2kk,/
+ "[[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 #..s4F4FG#, "]] LL#! 		7=^^HOO$5d|L ) 6 6
 $-	 $-C #..!D!D $-	 "]] LL#
! 		?E)-OO%d|*%& $00 $-#,C #..s4F4FG#, "]] LL# 		7=II23g~ !004
 (*-'8m$*,Z.&'*,&&1A4*H&'')vvmT'Bm$,.FF3Er,J() ff]D9 !V+H  [(S  h   	II3Q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                   # )zConfigure 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    'KK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 	''NN
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6F		7@ < HIIr   c                 8    \         P                  ! V \        4      # )N)r   list_from_dependsdatasources)dependss   &r   get_datasource_listr     s    $$Wk::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   