name : DataSourceNoCloud.cpython-39.opt-1.pyc
a

'�Dg�?�@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�G/usr/lib/python3.9/site-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_devicescCsd|jd�}g}idddd�}z8i}t�d�}|rTt||�rT|�d�t|d|i�}Wn tyvt�t	d�Yd	S0z(i}t|�r�|�d
�t|d|i�}Wn ty�t�t	d�Yd	S0ddgd
dgd�}|j
D]X}z>tj|fi|��}|�|�t	�d|�t||�}W�q4Wq�t
�y0Yq�0q�|j�d��r^|�d�|jd|dd<d|jv�r�d|jv�r�t||j�}|�d�dd�}	|j�dd�}
|
du�r�|
��dk�r�tjdddd�|�|
�D]�}zvt	�d|�zt�||	|�}Wn*t
�y"t	�d||
�YW�q�Yn0t||�}t	�d|�|�|�W�q�WnXt�y�}z|jtjk�rp�WYd}~n,d}~0tj�y�t�t	d|�Yn0�q�t|�d k�r�d	Sd|dv�rx|dd}
d	}|jD]}|
�|��r�|}�q�q�|�s|�|
�d	St�|
�}
tj|
dd!�\}}}}t	�d"|
�t� |d|g�|d<||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|fi|��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)�timeoutzUsing 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�errno�ENOENTZMountFailedError�lenr�
startswith�_log_unusable_seedfromZsub_dmi_vars�read_seeded�
mergemanydictZ_determine_dsmoderZDSMODE_DISABLEDrr�metadataZuserdata_rawZvendordata_rawrr)r�defaults�foundZmydata�md�serialZpp2d_kwargsr�seededr>r0�dev�er:Z	seedfound�proto�md_seed�ud�vd�networkrrr�	_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)rH�infor�rr:rrrrS�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))rrR)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)rr�currentrkZquick_idrrr�check_instance_ids
z#DataSourceNoCloud.check_instance_idcCs8|jdur2|jdur2tjdddd�t�|j�|_|jS)Nz$Eni network configuration in NoCloudr?z,You can use network v1 or network v2 insteadr@)rrrrLrZconvert_eni_datar&rrr�network_configs

�z DataSourceNoCloud.network_config)�__name__�
__module__�__qualname__�dsnamerr#r1rc�propertyrd�strrSrirjrorp�
__classcell__rrr'rrs
&

rc	Cs�|durg}d}i}t|�r,||vr,||S|D]^}|dur>q0z<tj|dgd�}t�|d�}|rx||vrx||WSWq0ty�Yq00q0dS)Nr2r3)r9)rDrr<�	load_yamlrJ)rkZiid_key�fill�dr=rYrrrrms"rmcCs�dtjfdtjfg}|D]j\}}t|||�s.qd|vr<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_datarKrR)ryr8�pairsZidstrr$r:rrrrD5s&�
�
rDc	Cs�|durt��}d|}d||vs4d||vs4dSd}|��D]}|�|�r@|�dd�}q@|d�d�}t|�dkr�|dd�}nd}d	d
dd�}|D]V}|dkr�q�z|�dd�\}	}
Wnty�|}	d}
Yn0|	|vr�||	}	|
||	<q�d
S)Nz %s z %s;Fr!�=��;rzlocal-hostnamer2r:)�h�i�sT)rZget_cmdline�splitrRrQrG)Zds_idryr8Zargline�tok�tmpZkvpairsZs2l�item�k�vrrrr|Vs4


r|cCs�|��}|�di�}t|dt�s0t�|d�}t�|d|g�|d<|�d�rdt�|�d��|d<d|vrx|d|d<d|vr�|d|d<|S)Nr3r6r4r5)�copyrK�
isinstance�dictrrxrU)Zcurr[�retZnewmdrrrrF~s
rFc@s*eZdZdd�Zed�dd�Zdd�ZdS)	�DataSourceNoCloudNetcCst�||||�d|_dS)Nr{)rrrrrrrr�szDataSourceNoCloudNet.__init__recCst�d||j|�dS)rfz6%s only uses seeds starting with %s - %s is not valid.N)rHrMrrhrrrrS�s�z+DataSourceNoCloudNet._log_unusable_seedfromcCs�ttjdddd�}dt��kr(|�dSt�t�d�p8d���}||j	��dfvrpt
�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)rrrLrZ
parse_cmdlineZparse_cmdline_or_dmirrCr,rtrHrIrrK)rZlog_deprecatedrZrrr�	ds_detect�s@�
������zDataSourceNoCloudNet.ds_detectN)rqrrrsrrvrSr�rrrrr��s		r�cCst�|t�Sr;)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list�sr��__main__)�argv)�levelrzseeded: zud: zvd: z	network: )N)N)N)%rOZloggingr�	functoolsrZ	cloudinitrrrrZ
cloudinit.netrZ	getLoggerrqrHrrrmrDr|rFr�ZDEP_FILESYSTEMZDEP_NETWORKr�r��sysr�ZbasicConfig�DEBUGr:rTr_r`rarb�printrrrr�<module>s6



!
(E
�


© 2025 Cubjrnet7