ó
    x[h�  ã                   óø   • S r SSKrSSKJs  Js  Jr  SSKJrJ	r	JrJ
r
  SSKJr  SSKJr  \R                  " \5      rSr\S-   \S-   S	.rS
rSrSr " S S\R.                  5      rS r\\R4                  44/rS rg)z;Hetzner Cloud API Documentation
https://docs.hetzner.cloud/é    N)ÚdmiÚnetÚsourcesÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4z!http://169.254.169.254/hetzner/v1z	/metadataz	/userdata)Úmetadata_urlÚuserdata_urlé<   é   c                   ó:   • \ rS rSrSrS rS rS r\S 5       r	Sr
g)	ÚDataSourceHetzneré   ÚHetznerc                 óp  • [         R                  R                  XX#5        X l        [	        5       U l        [        R                  " [        R                  " USS/0 5      [        /5      U l
        U R                  S   U l        U R                  S   U l        U R                  R                  S[        5      U l        U R                  R                  S[         5      U l        U R                  R                  S[$        5      U l        [         R(                  U l        [         R,                  U l        S U l        g )NÚ
datasourcer   r	   r
   ÚretriesÚtimeoutÚ
wait_retry)r   Ú
DataSourceÚ__init__ÚdistroÚdictÚmetadatar   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgÚmetadata_addressÚuserdata_addressÚgetÚ
MD_RETRIESr   Ú
MD_TIMEOUTr   ÚMD_WAIT_RETRYr   ÚUNSETÚ_network_configÚDSMODE_NETWORKÚdsmodeÚmetadata_full)ÚselfÚsys_cfgr   Úpathss       ÚE/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.pyr   ÚDataSourceHetzner.__init__"   sÞ   € Ü×Ñ×#Ñ# D°6ÔAØŒÜ›ˆŒÜ×(Ò(ä×$Ò$ W¨|¸YÐ.GÈÓLÜ!ðó
ˆŒð !%§¡¨NÑ ;ˆÔØ $§¡¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒÜ&Ÿ}™}ˆÔÜ×,Ñ,ˆŒØ!ˆÕó    c                 óˆ  • [        5       u  pU(       d  g [        U R                  [        R                  " 5       S[
        S-   0/S9   [        R                  " U R                  U R                  U R                  U R                  S9n[        R                  " U R                  U R                  U R                  U R                  S9nS S S 5        ["        R$                  " W5      U l        WU l        US   U R*                  S'   US   U R*                  S	'   UR-                  S
S 5      U R*                  S
'   UR-                  SS 5      U R*                  S'   UR-                  SS 5      U l        U R1                  5       U:w  a  [3        S5      eg! , (       d  f       NÉ= f! [         a  n[        R!                  SU5        e S nAff = f)NFÚurlz/metadata/instance-id)ÚifaceÚconnectivity_urls_data)r   Úsec_betweenr   zBailing, DHCP Exception: %szinstance-idÚhostnamezlocal-hostnameúnetwork-configzpublic-keysÚvendor_dataz6SMBIOS serial does not match instance ID from metadataT)Úget_hcloud_datar   r   r   Úfind_fallback_nicÚBASE_URL_V1Ú	hc_helperÚread_metadatar   r   r   r   Úread_userdatar    r   ÚLOGÚerrorr   Úmaybe_b64decodeÚuserdata_rawr)   r   r!   Úvendordata_rawÚget_instance_idÚRuntimeError)r*   Ú
on_hetznerÚserialÚmdÚudÚes         r-   Ú	_get_dataÚDataSourceHetzner._get_data5   s“  € Ü.Ó0ÑˆæØð	Ü Ø—‘Ü×+Ò+Ó-ð œ{Ð-DÑDðð(óô ×,Ò,Ø×)Ñ)Ø ŸL™LØ $§¡Ø ŸL™Lñ	�ô ×,Ò,Ø×)Ñ)Ø ŸL™LØ $§¡Ø ŸL™Lñ	�÷ô@ !×0Ò0°Ó4ˆÔØˆÔð
 (*¨-Ñ'8ˆ�‰�mÑ$Ø*,¨Z©.ˆ�‰Ð&Ñ'Ø*,¯&©&Ð1AÀ4Ó*Hˆ�‰Ð&Ñ'Ø')§v¡v¨m¸TÓ'Bˆ�‰�mÑ$Ø Ÿf™f ]°DÓ9ˆÔð ×ÑÓ! VÓ+ÜØHóð ð ÷eõ ûô*  ó 	Ü�I‰IÐ3°QÔ7Øûð	ús6   –2F ÁA?F
ÃF Æ

FÆF ÆF Æ
GÆ%F<Æ<Gc                 óL   • [         R                  " U R                  5       S5      $ )Núsystem-serial-number)r   Úinstance_id_matches_system_uuidrC   )r*   r+   s     r-   Úcheck_instance_idÚ#DataSourceHetzner.check_instance_idp   s$   € Ü×6Ò6Ø× Ñ Ó"Ð$:ó
ð 	
r/   c                 óH  • U R                   c9  [        R                  S[        R                  5        [        R                  U l         U R                   [        R                  :w  a  U R                   $ U R
                  S   nU(       d  [        S5      eXl         U R                   $ )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 %sr6   z'Unable to get meta-data from server....)r&   r>   Úwarningr   r%   r   rD   )r*   Ú_net_configs     r-   Únetwork_configÚ DataSourceHetzner.network_configu   s‚   € ð ×ÑÑ'Ü�K‰KØGÜ—‘ôô $+§=¡=ˆDÔ à×Ñ¤7§=¡=Ó0Ø×'Ñ'Ð'à—m‘mÐ$4Ñ5ˆÞÜÐHÓIÐIà*Ôà×#Ñ#Ð#r/   )r&   r   r   r(   r   r   r)   r   r   r    rA   rB   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údsnamer   rJ   rO   ÚpropertyrT   Ú__static_attributes__© r/   r-   r   r      s+   † à€Fò"ò&9òv
ð
 ñ$ó ó$r/   r   c                  óÀ   • [         R                  " S5      n U S:w  a  g[         R                  " S5      nU(       a  [        R                  SU5        SU4$ [	        S5      e)Nzsystem-manufacturerr   )FNrM   z#Running on Hetzner Cloud: serial=%sz+Hetzner Cloud detected, but no serial foundT)r   Úread_dmi_datar>   ÚdebugrD   )Úvendor_namerF   s     r-   r8   r8   �   s[   € Ü×#Ò#Ð$9Ó:€KØ�iÓØä×ÒÐ5Ó6€FÞÜ�	‰	Ð7¸Ô@ð �&ˆ>Ðô ÐHÓIÐIr/   c                 ó8   • [         R                  " U [        5      $ )N)r   Úlist_from_dependsÚdatasources)Údependss    r-   Úget_datasource_listrf   ¤   s   € Ü×$Ò$ W¬kÓ:Ð:r/   )Ú__doc__ÚloggingÚ!cloudinit.sources.helpers.hetznerr   ÚhelpersÚhetznerr;   Ú	cloudinitr   r   r   Úcloudinit.net.dhcpr   Úcloudinit.net.ephemeralr   Ú	getLoggerrV   r>   r:   r   r"   r#   r$   r   r   r8   ÚDEP_FILESYSTEMrd   rf   r]   r/   r-   Ú<module>rq      sš   ðñó ç 5Ó 5ß -Ó -Ý /Ý 3à×Ò˜Ó!€à1€ð   +Ñ-Ø +Ñ-ñÐ ð
 €
Ø€
Ø€ôn$˜×*Ñ*ô n$òbð  ˜×/Ñ/Ð1Ð2ð€ó;r/   