Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceNoCloud.cpython-38.pyc

U

�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)�DataSourceNoCloudZNoCloudcCsJtj�||||�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_cfgZdistro�paths�r�E/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNoCloud.pyrs�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)rZfind_devs_with�extend�upper�lower�list�set�sort)r�labelZfslistZ
label_listZdevlistrrr�_get_devices(s
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�|�|
�D]�}zxt	�d|�zt�||	|�}Wn,t
k
�rt	�d||
�YW�q�YnXt||�}t	�d|�|�|�W�q�WnXtk
�rh}z|jtjk�rX�W5d}~XYn&tjk
�r�t�t	d|�YnX�q�t|�dk�r�d	Sd|dk�rX|dd}
d	}|jD]}|
�|��r�|}�q�q�|�s�t	�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)r*)�requiredZoptionalzUsing seeded data from %s�seedfromZds_config_seedfromZ	ds_configcSstj|f|�S�N)r�pathprefix2dict)Zmp�datarrr�_pp2d_callbackusz3DataSourceNoCloud._get_data.<locals>._pp2d_callbackZfs_labelZcidatazAttempting 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)ZtimeoutzUsing seeded cache data from %srz&%s: not claiming datasource, dsmode=%s�,znetwork-interfacesT)'rrZ
read_dmi_data�load_cmdline_data�append�_merge_new_seed�	ExceptionrZlogexc�LOGrr/�debug�
ValueErrorZds_cfg�getr$Zmount_cbZwarning�OSError�errnoZENOENTZMountFailedError�lenr�
startswithZsub_dmi_varsZread_seeded�
mergemanydictZ_determine_dsmoderZDSMODE_DISABLEDrrZmetadataZuserdata_rawZvendordata_raw�_network_config�_network_eni)r�defaults�foundZmydata�md�serialZpp2d_kwargsr�seededr1r#Zdev�er-Z	seedfound�protoZmd_seedZudZvdrrr�	_get_data4s���


�





��

�



�

���



zDataSourceNoCloud._get_datacCs.t|d�sd|_|js(t��r"dnd|_|jS)N�_platform_typeZlxdr)�hasattrrJrZis_lxd�rrrr�
platform_type�s

zDataSourceNoCloud.platform_typecCstjS)z=Return unknown when 'cloud-name' key is absent from metadata.)rZMETADATA_UNKNOWNrLrrr�_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))rr>)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)rrZcurrentrPZquick_idrrr�check_instance_id�s
z#DataSourceNoCloud.check_instance_idcCs(|jdkr"|jdk	r"t�|j�|_|jSr.)r@rArZconvert_eni_datarLrrr�network_config�s

z DataSourceNoCloud.network_configN)�__name__�
__module__�__qualname__Zdsnamerrr$rI�propertyrMrNrOrSrTrrrrrs

rc	Cs�|dkrg}d}i}t|�r,||kr,||S|D]`}|dkr>q0z<tj|dgd�}t�|d�}|rx||krx||WSWq0tk
r�Yq0Xq0dS)Nr%r')r,)r3rr/�	load_yamlr9)rPZiid_key�fill�dr0rDrrrrR�s"rRcCsHdtjfdtjfg}|D]*\}}t|||�rd|kr<||d<dSqdS)Nz
ds=nocloudzds=nocloud-netrTF)rZDSMODE_LOCALZDSMODE_NETWORK�parse_cmdline_data)rZr+ZpairsZidstrrrrrr3s�r3c	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-hostnamer%r-)�h�i�sT)rZget_cmdline�splitr>r=r6)Zds_idrZr+Zargline�tokZtmpZkvpairsZs2l�item�k�vrrrr\)s4


r\cCs�|��}|�di�}t|dt�s0t�|d�}t�|d|g�|d<|�d�rdt�|�d��|d<d|krx|d|d<d|kr�|d|d<|S)Nr'r*r(r))�copyr:�
isinstance�dictrrYr?)ZcurrFZretZnewmdrrrr5Qs
r5c@seZdZdd�ZdS)�DataSourceNoCloudNetcCst�||||�d|_dS)N)zhttp://zhttps://)rrrrrrrrdszDataSourceNoCloudNet.__init__N)rUrVrWrrrrrrkcsrkcCst�|t�Sr.)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_listqsrm)N)N)N)r<r
Z	cloudinitrrZloggingrrZ
cloudinit.netrZ	getLoggerrUr7r
rrRr3r\r5rkZDEP_FILESYSTEMZDEP_NETWORKrlrmrrrr�<module>s"
i


(
�