HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceNoCloud.cpython-38.pyc
U

��0h�?�@s8ddlZddlZddlZddlmZddlmZmZmZm	Z	ddl
mZe�e
�ZGdd�dej�Zddd�Zdd	d
�Zddd�Zd
d�ZGdd�de�ZeejffeejejffgZdd�Ze
dk�r4ddlmZejejd�edZe	�e�\Z Z!Z"Z#e$de ���e$de!���e$de"���e$de#���dS)�N)�partial)�dmi�	lifecycle�sources�util)�enicsveZdZdZdd�Z�fdd�Zdd�Zdd	�Zed
d��Z	e
d�d
d�Zdd�Zdd�Z
dd�Zedd��Z�ZS)�DataSourceNoCloud�NoCloudcCsVtj�||||�d|_tj�|jd�tj�|jd�g|_d|_d|_	d|_
d|_dS)N�nocloud�nocloud-net)�/�file://)r�
DataSource�__init__�seed�os�path�join�seed_dir�	seed_dirs�supported_seed_starts�_network_config�_network_eni��self�sys_cfgZdistro�paths�r�E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNoCloud.pyrs�zDataSourceNoCloud.__init__csDt���d|jr d|j�d�nd|jtjkr>d|j�d�ndS)z@append seed and dsmode info when they contain non-default values� z[seed=�]�z[dsmode=)�super�__str__r�dsmoder�DSMODE_NETWORK�r��	__class__rrr#&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)rZfind_devs_with�extend�upper�lower�list�set�sort)r�labelZfslistZ
label_listZdevlistrrr�_get_devices3s
zDataSourceNoCloud._get_devicescCsd|jd�}g}idddd�}z8i}t�d�}|rTt||�rT|�d�t|d|i�}Wn"tk
rxt�t	d�Yd	SXz(i}t|�r�|�d
�t|d|i�}Wn"tk
r�t�t	d�Yd	SXddgd
dgd�}|j
D]V}z:tj|f|�}|�|�t	�d|�t||�}W�q6Wq�t
k
�r2Yq�Xq�|j�d��r`|�d�|jd|dd<d|jk�r�d|jk�r�t||j�}|�d�dd�}	|j�dd�}
|
dk	�r�|
��dk�r�tjdddd�|�|
�D]�}zxt	�d|�zt�||	|�}Wn,t
k
�r&t	�d||
�YW�q�YnXt||�}t	�d|�|�|�W�q�WnXtk
�r�}z|jtjk�rv�W5d}~XYn&tjk
�r�t�t	d|�YnX�q�t|�d k�r�d	Sd|dk�rt|dd}
d	}|jD]}|
�|��r�|}�q�q�|�s|�|
�d	St�|
�}
tj|
dd!�\}}}}t	�d"|
�t� |d|g�|d<||d<||d
<|�|
�t� |d|g�|d<|�!|d�d#�g�|_|jt"j#k�r�t	�d$||j�d	Sd%�$|�|_%|d|_&|d|_'|d
|_(|d|_)|d�d&�|_*d'S)(Nr
)�instance-idr$r!)�	meta-data�	user-data�vendor-data�network-config�system-serial-numberrr3zUnable to parse dmi dataF�cmdlinez!Unable to parse command line datar4r5r6)�requiredZoptionalzUsing seeded data from %s�seedfromZds_config_seedfromZ	ds_configcSstj|f|�S�N)r�pathprefix2dict)Zmp�datarrr�_pp2d_callback�sz3DataSourceNoCloud._get_data.<locals>._pp2d_callbackZfs_labelZcidatazCustom fs_label keys�24.3z(This key isn't supported by ds-identify.�Z
deprecatedZdeprecated_versionZ
extra_messagezAttempting 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 datar)ZtimeoutzUsing seeded cache data from %sr$z&%s: not claiming datasource, dsmode=%s�,znetwork-interfacesT)+r$r�
read_dmi_data�load_cmdline_data�append�_merge_new_seed�	ExceptionrZlogexc�LOGrr<�debug�
ValueErrorZds_cfg�getr,r�	deprecater1Zmount_cb�warning�OSError�errnoZENOENTZMountFailedError�lenr�
startswith�_log_unusable_seedfromZsub_dmi_vars�read_seeded�
mergemanydictZ_determine_dsmoderZDSMODE_DISABLEDrrZmetadataZuserdata_rawZvendordata_rawrr)r�defaults�foundZmydata�md�serialZpp2d_kwargsr�seededr>r0Zdev�er:Z	seedfound�proto�md_seed�ud�vd�_rrr�	_get_data?s���


�





���

�




�

���



zDataSourceNoCloud._get_datacCs|jst��rdnd|_|jS)NZlxdr
)Z_platform_typerZis_lxdr&rrr�
platform_type�szDataSourceNoCloud.platform_type�r:cCst�d||j|�dS)�!Stage-specific level and message.zN%s only uses seeds starting with %s - will try to use %s in the network stage.N)rG�infor�rr:rrrrQ�s�z(DataSourceNoCloud._log_unusable_seedfromcCstjS)z=Return unknown when 'cloud-name' key is absent from metadata.)rZMETADATA_UNKNOWNr&rrr�_get_cloud_name�sz!DataSourceNoCloud._get_cloud_namecCs$|j�d�rd}nd}d||jfS)z/Return the subplatform metadata source details.z/devzconfig-diskzseed-dirz%s (%s))rrP)rZsubplatform_typerrr�_get_subplatform�sz"DataSourceNoCloud._get_subplatformcCs:|��}|sdSt|d|jg�}t|d�}|s2dS||kS)Nr)�dirs)Zget_instance_id�getattrr�_quick_read_instance_id)rrZcurrentrgZquick_idrrr�check_instance_id�s
z#DataSourceNoCloud.check_instance_idcCs8|jdkr2|jdk	r2tjdddd�t�|j�|_|jS)Nz$Eni network configuration in NoCloudr?z,You can use network v1 or network v2 insteadr@)rrrrKrZconvert_eni_datar&rrr�network_configs

�z DataSourceNoCloud.network_config)�__name__�
__module__�__qualname__�dsnamerr#r1r_�propertyr`�strrQrerfrjrk�
__classcell__rrr'rrs
%

rc	Cs�|dkrg}d}i}t|�r,||kr,||S|D]`}|dkr>q0z<tj|dgd�}t�|d�}|rx||krx||WSWq0tk
r�Yq0Xq0dS)Nr2r3)r9)rCrr<�	load_yamlrI)rgZiid_key�fill�dr=rVrrrris"ricCs�dtjfdtjfg}|D]j\}}t|||�s.qd|kr<dS|�d�}|rv|�d�r`tj|d<q~|�d�r~tj|d<n||d<dSdS)	Nz
ds=nocloudzds=nocloud-netr$Tr:�zhttp://zhttps://zftp://zftps://)r
rF)rZDSMODE_LOCALr%�parse_cmdline_datarJrP)rtr8ZpairsZidstrr$r:rrrrC4s&�
�
rCc	Cs�|dkrt��}d|}d||ks4d||ks4dSd}|��D]}|�|�r@|�dd�}q@|d�d�}t|�dkr�|dd�}nd}d	d
dd�}|D]X}|dkr�q�z|�dd�\}	}
Wntk
r�|}	d}
YnX|	|kr�||	}	|
||	<q�d
S)Nz %s z %s;Fr!�=��;rzlocal-hostnamer2r:)�h�i�sT)rZget_cmdline�splitrPrOrF)Zds_idrtr8Zargline�tokZtmpZkvpairsZs2l�item�k�vrrrrwUs4


rwcCs�|��}|�di�}t|dt�s0t�|d�}t�|d|g�|d<|�d�rdt�|�d��|d<d|krx|d|d<d|kr�|d|d<|S)Nr3r6r4r5)�copyrJ�
isinstance�dictrrsrS)ZcurrXZretZnewmdrrrrE}s
rEc@s*eZdZdd�Zed�dd�Zdd�ZdS)	�DataSourceNoCloudNetcCst�||||�d|_dS)Nrv)rrrrrrrr�szDataSourceNoCloudNet.__init__racCst�d||j|�dS)rbz6%s only uses seeds starting with %s - %s is not valid.N)rGrLrrdrrrrQ�s�z+DataSourceNoCloudNet._log_unusable_seedfromcCs�ttjdddd�}dt��kr(|�dSt�t�d�p8d���}||j	��dfkrpt
�d	|�|dkrl|�dS|j�
d
i��
di��
d�r�t
�d
|�dSdS)z�Check dmi and kernel command line for dsname

        NoCloud historically used "nocloud-net" as its dsname
        for network timeframe (DEP_NETWORK), which supports http(s) urls.
        For backwards compatiblity, check for that dsname.
        z!The 'nocloud-net' datasource namez24.1zgUse 'nocloud' instead, which uses the seedfrom protocolscheme (http// or file://) to decide how to run.r@rTr7r!zJMachine is configured by dmi serial number to run on single datasource %s.Z
datasourcer	r:zMMachine is configured by system configuration to run on single datasource %s.F)rrrKrZ
parse_cmdlineZparse_cmdline_or_dmirrBr,rorGrHrrJ)rZlog_deprecatedrWrrr�	ds_detect�sB�
������zDataSourceNoCloudNet.ds_detectN)rlrmrnrrqrQr�rrrrr��s		r�cCst�|t�Sr;)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list�sr��__main__)�argv)�levelryzseeded: zud: zvd: z	network: )N)N)N)%rNZloggingr�	functoolsrZ	cloudinitrrrrZ
cloudinit.netrZ	getLoggerrlrGrrrirCrwrEr�ZDEP_FILESYSTEMZDEP_NETWORKr�r��sysr�ZbasicConfig�DEBUGr:rRr[r\r]Znetwork�printrrrr�<module>s6
	

!
(E
�