HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceNoCloud.cpython-310.pyc
o

�Ad�1�@s�ddlZddlZddlmZddlmZddlmZmZddlm	Z	e�
e�ZGdd�dej
�Zddd	�Zdd
d�Zddd
�Zdd�ZGdd�de�ZeejffeejejffgZdd�ZdS)�N)�dmi)�log)�sources�util)�enic@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zed
d��Z	dd
�Z
dd�Zdd�Zedd��Z
dS)�DataSourceNoCloud�NoCloudcCsJtj�||||�d|_tj�|jd�tj�|jd�g|_d|_d|_	dS)N�nocloudznocloud-net)�/zfile://)
r�
DataSource�__init__�seed�os�path�join�seed_dir�	seed_dirs�supported_seed_starts��self�sys_cfg�distro�paths�r�E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNoCloud.pyrs�
zDataSourceNoCloud.__init__cCstj�|�}d||j|jfS)Nz%s [seed=%s][dsmode=%s])rr�__str__r
�dsmode)r�rootrrrr$szDataSourceNoCloud.__str__cCs|t�d�}|�t�d��t�d|���}|�t�d|����|�t�d|��tt|�t|�@�}|jdd�|S)Nz	TYPE=vfatzTYPE=iso9660zLABEL=%szLABEL_FATBOOT=%sT)�reverse)r�find_devs_with�extend�upper�lower�list�set�sort)r�label�fslist�
label_list�devlistrrr�_get_devices(s
zDataSourceNoCloud._get_devicescCs�d|jd�}g}idddd�}zi}t�d�}|r*t||�r*|�d�t|d|i�}Wnty;t�t	d�Yd	Swzi}t|�rO|�d
�t|d|i�}Wnty`t�t	d�Yd	Swddgd
dgd�}|j
D]'}ztj|fi|��}|�|�t	�d|�t||�}Wn	t
y�Yqmw|j�d�r�|�d�|jd|dd<d|jvr�d|jvr�t||j�}|�d�dd�}	|j�dd�}
|
du�r6|�|
�D]b}z4t	�d|�z	t�||	|�}Wnt
y�t	�d||
�YWq�wt||�}t	�d|�|�|�Wn,t�y$}z|jtjk�r�WYd}~q�d}~wtj�y5t�t	d|�Yq�wt|�dk�r?d	Sd|dv�r�|dd}
d	}|jD]
}|
�|��r]|}n�qQ|�skt	�d|
|�d	St�|
�}
tj|
dd�\}}}t	�d|
�t�|d|g�|d<||d<||d
<|�|
�t�|d|g�|d<|�|d�d �g�|_|jtjk�r�t	�d!||j�d	Sd"� |�|_!|d|_"|d|_#|d
|_$|d|_%|d�d#�|_&d$S)%Nr	)�instance-idr�)�	meta-data�	user-data�vendor-data�network-configzsystem-serial-numberrr-zUnable to parse dmi dataF�cmdlinez!Unable to parse command line datar.r/r0)�required�optionalzUsing seeded data from %s�seedfrom�ds_config_seedfrom�	ds_configcSstj|fi|��S�N)r�pathprefix2dict)�mp�datarrr�_pp2d_callbackusz3DataSourceNoCloud._get_data.<locals>._pp2d_callback�fs_label�cidatazAttempting to use data from %sz)device %s with label=%s not a valid seed.zUsing data from %sz(Failed to mount %s when looking for datarz Seed from %s not supported by %s)�timeoutzUsing seeded cache data from %srz&%s: not claiming datasource, dsmode=%s�,znetwork-interfacesT)'rr�
read_dmi_data�load_cmdline_data�append�_merge_new_seed�	Exceptionr�logexc�LOGrr8�debug�
ValueError�ds_cfg�getr*�mount_cb�warning�OSError�errno�ENOENT�MountFailedError�lenr�
startswith�sub_dmi_vars�read_seeded�
mergemanydict�_determine_dsmoder�DSMODE_DISABLEDrr
�metadata�userdata_raw�vendordata_raw�_network_config�_network_eni)r�defaults�found�mydata�md�serial�pp2d_kwargsr�seededr;r&�dev�er4�	seedfound�proto�md_seed�ud�vdrrr�	_get_data4s���

��
���


�


���

����
�

�

���



zDataSourceNoCloud._get_datacCs.t|d�sd|_|jst��rdnd|_|jS)N�_platform_type�lxdr	)�hasattrrlr�is_lxd�rrrr�
platform_type�s

zDataSourceNoCloud.platform_typecCstjS)z=Return unknown when 'cloud-name' key is absent from metadata.)r�METADATA_UNKNOWNrprrr�_get_cloud_name�sz!DataSourceNoCloud._get_cloud_namecCs$|j�d�r	d}nd}d||jfS)z/Return the subplatform metadata source details.z/devzconfig-diskzseed-dirz%s (%s))r
rR)r�subplatform_typerrr�_get_subplatform�sz"DataSourceNoCloud._get_subplatformcCs:|��}|sdSt|d|jg�}t|d�}|sdS||kS)Nr)�dirs)�get_instance_id�getattrr�_quick_read_instance_id)rr�currentrv�quick_idrrr�check_instance_id�s
z#DataSourceNoCloud.check_instance_idcCs(|jdur|jdurt�|j�|_|jSr7)r[r\r�convert_eni_datarprrr�network_config�s

z DataSourceNoCloud.network_configN)�__name__�
__module__�__qualname__�dsnamerrr*rk�propertyrqrsrur|r~rrrrrs

rc	Cs�|durg}d}i}t|�r||vr||S|D].}|durqztj|dgd�}t�|d�}|r<||vr<||WSWqtyFYqwdS)Nr+r-)r2)rArr8�	load_yamlrH)rv�iid_key�fill�dr:r`rrrry�s&��rycCsHdtjfdtjfg}|D]\}}t|||�r!d|vr||d<dSqdS)Nz
ds=nocloudzds=nocloud-netrTF)r�DSMODE_LOCAL�DSMODE_NETWORK�parse_cmdline_data)r�r1�pairs�idstrrrrrrAs��rAc	Cs�|durt��}d|}d||vsd||vsdSd}|��D]
}|�|�r-|�dd�}q |d�d�}t|�dkrB|dd�}nd}d	d
dd�}|D]+}|dkrSqLz
|�dd�\}	}
Wn
tyj|}	d}
Ynw|	|vrs||	}	|
||	<qLd
S)Nz %s z %s;Fr,�=��;rzlocal-hostnamer+r4)�h�i�sT)r�get_cmdline�splitrRrQrD)�ds_idr�r1�argline�tok�tmp�kvpairs�s2l�item�k�vrrrr�)s8
��
r�cCs�|��}|�di�}t|dt�st�|d�}t�|d|g�|d<|�d�r2t�|�d��|d<d|vr<|d|d<d|vrF|d|d<|S)Nr-r0r.r/)�copyrJ�
isinstance�dictrr�rU)�currc�ret�newmdrrrrCQs
rCc@seZdZdd�ZdS)�DataSourceNoCloudNetcCst�||||�d|_dS)N)zhttp://zhttps://)rrrrrrrrds
zDataSourceNoCloudNet.__init__N)rr�r�rrrrrr�csr�cCst�|t�Sr7)r�list_from_depends�datasources)�dependsrrr�get_datasource_listqsr�r7)rNr�	cloudinitrr�loggingrr�
cloudinit.netr�	getLoggerrrFrrryrAr�rCr��DEP_FILESYSTEM�DEP_NETWORKr�r�rrrr�<module>s$


i

(
�