HEX
Server: nginx/1.28.3
System: Linux lightweb-s1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User: dawonefr-98 (1071)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceHetzner.cpython-310.pyc
o

�t�hx$�@s�dZddlZddlmmmZddlmZm	Z	mZm
Z
mZddlm
Z
mZddlmZddlmZe�e�Zddd	d
�ZdZdZdZd
ZdZdZdd�ZGdd�dej�Zdd�Z eej!ffgZ"dd�Z#dS)z;Hetzner Cloud API Documentation
https://docs.hetzner.cloud/�N)�dmi�net�sources�
url_helper�util)�
EventScope�	EventType)�NoDHCPLeaseError)�EphemeralIPNetwork�metadatazmetadata/private-networks�userdata)�
metadata_path�metadata_private_networks_path�
userdata_path�<��xzU
SUBSYSTEM=="net", ATTR{address}=="86:*", GOTO="cloudinit_hook"
GOTO="cloudinit_end"
cCsdt���d�dfS)Nzhttp://[fe80::a9fe:a9fe%25z
]/hetzner/v1/z"http://169.254.169.254/hetzner/v1/)r�find_fallback_nic�rr�E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceHetzner.py�base_urls_v1's�rcsdeZdZdZejejejej	hiZ
dd�Zdeddf�fdd�Z
d	d
�Zdd�Zed
d��Z�ZS)�DataSourceHetzner�HetznercCs�tj�||||�||_i|_t�t�|ddgi�tg�|_	|j	d|_
|j	d|_|j	d|_|j	�
dt�|_|j	�
dt�|_|j	�
dt�|_|j	�
d	t�|_|j	�
d
t�|_tj|_tj|_d|_t|_dS)N�
datasourcerr
rr�retries�timeout�
wait_retry�max_wait�
sleep_time)r�
DataSource�__init__�distrorr�
mergemanydict�get_cfg_by_path�BUILTIN_DS_CONFIG�ds_cfgr
rr�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!�pathsrrrr 9s,���
zDataSourceHetzner.__init__�ci_pkl_version�returnNcsjt��|�t|_|j�dt�|_|j�dt�|_	|j�dt
�|_|jd|_|jd|_
|jd|_dS)Nrrrr
rr)�super�	_unpickler1r2r%r&r)rr*rr+rr
rr)r3r6��	__class__rrr9Ss�zDataSourceHetzner._unpicklec	
s�t�\}}|s	dSt�}z�t�jt��dd�fdd�|D�d��xtj�fdd�|D��j�j	�j
d�\}}t�d|�t
j|��ttfd	�}tj�fd
d�|D��j�j	�j
d�\}}t�d|�t
j|��ttfd	�|d<tj�fd
d�|D��j�j	�j
d�\}}t�d|�|s�t�d�Wd�n1s�wYWnty�}zt�d|��d}~wwt
�|��_|�_|d�jd<|d�jd<|�dd��jd<|�dd��jd<|�dg��jd<|�dd��_���|kr�td��dS)NFTcs$g|]}dt�|�j�d��i�qS)�urlz/instance-id�r�combine_urlr
��.0r<�r3rr�
<listcomp>ls����z/DataSourceHetzner._get_data.<locals>.<listcomp>)�	interface�ipv4�ipv6�connectivity_urls_datac�g|]	}t�|�j��qSrr=r?rArrrBv���)rrrzUsing metadata source: '%s')�allowedcrGr)rr>rr?rArrrB�s���z#Using private_networks source: '%s'�private-networkscrGr)rr>rr?rArrrB�rHzUsing userdata source: '%s'zGot empty userdatazBailing, DHCP Exception: %szinstance-id�hostnamezlocal-hostname�network-configzpublic-keys�vendor_dataz6SMBIOS serial does not match instance ID from metadata)�get_hcloud_datarr
r!rr�	hc_helper�get_metadatarrr�LOG�debugr�	load_yaml�decode�dict�listr	�error�maybe_b64decode�userdata_rawr0rr&�vendordata_raw�get_instance_id�RuntimeError)	r3�
on_hetzner�serial�	base_urlsr<�contents�md�ud�errAr�	_get_data_s�

��
�
�	
�
�
�
�
�	
���4���zDataSourceHetzner._get_datacCst�|��d�S)N�system-serial-number)r�instance_id_matches_system_uuidr[)r3r4rrr�check_instance_id�s�z#DataSourceHetzner.check_instance_idc	Cs�|jdurt�dtj�tj|_|jtjkr|jS|jd}|s$td��|j�dg�}g}|D]}|�d|dt	�
|d�dd	d
�gd��q/|d�|�||_|jS)
z�Configure the networking. This needs to be done each boot, since
        the IP information may have changed due to snapshot and/or
        migration.
        Nz5Found None as cached _network_config. Resetting to %srLz'Unable to get meta-data from server....rJ�physical�mac_addressT�dhcp)rD�type)rkri�name�subnets�config)r-rQ�warningrr,rr\r&�appendrO�get_interface_name_from_mac�extend)r3�
net_config�private_networks�private_networks_config�private_networkrrr�network_config�s:
�
�����z DataSourceHetzner.network_config)�__name__�
__module__�__qualname__�dsnamer�NETWORKr�BOOT_NEW_INSTANCE�BOOT�HOTPLUG�default_update_eventsr �intr9rdrg�propertyrw�
__classcell__rrr:rr.s��\rcCs@t�d�}|dkrdSt�d�}|rt�d|�d|fStd��)Nzsystem-manufacturerr)FNrez#Running on Hetzner Cloud: serial=%sz+Hetzner Cloud detected, but no serial foundT)r�
read_dmi_datarQrRr\)�vendor_namer^rrrrN�s

�rNcCst�|t�S)N)r�list_from_depends�datasources)�dependsrrr�get_datasource_listsr�)$�__doc__�logging�!cloudinit.sources.helpers.hetznerr�helpers�hetznerrO�	cloudinitrrrr�cloudinit.eventrr�cloudinit.net.dhcpr	�cloudinit.net.ephemeralr
�	getLoggerrxrQr$r'r(r)r*r+r1rrrrN�DEP_FILESYSTEMr�r�rrrr�<module>s2
�?
�