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: //usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceConfigDrive.cpython-38.pyc
U

Ӈg�,�@s�ddlZddlZddlmZmZmZmZddlmZm	Z	ddl
mZddlm
Z
ddlmZe�e�ZdZdeiZd	Zd
ZdZedd
�eD��ZGdd�dejej�Zdd�Zdd�Zddd�Zdd�Z ddd�Z!eZ"eej#ffgZ$dd�Z%dS)�N)�	lifecycle�sources�subp�util)�
EventScope�	EventType)�eni)�get_ibm_platform)�	openstackziid-dsconfigdrive�instance-id)ZvfatZiso9660)zconfig-2zCONFIG-2)�srZcdccs(|] }td�D]}d||fVqqdS)�z	/dev/%s%sN)�range)�.0�z�i�r�I/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceConfigDrive.py�	<genexpr>s
rcsreZdZdZejejejej	ej
hiZ�fdd�Zdd�Z
dd�Zdd	�Zed
d��Zedd
��Zdd�Z�ZS)�DataSourceConfigDriveZConfigDrivecs\tt|��|||�d|_tj�|jd�|_d|_d|_	d|_
tj|_
d|_d|_i|_dS)NZconfig_drive)�superr�__init__�source�os�path�join�seed_dir�version�ec2_metadata�_network_configr�UNSET�network_json�network_eni�
known_macs�files)�self�sys_cfg�distro�paths��	__class__rrr.szDataSourceConfigDrive.__init__cCs0tj�|�}d||j|jf}|d|j7}|S)Nz%s [%s,ver=%s]z[source=%s])r�
DataSource�__str__�dsmoderr)r%�rootZmstrrrrr,:szDataSourceConfigDrive.__str__c

Cs�d}i}i}|jdfD]N}tj�|�s(qzt|�}|}WqfWqtjk
rbt�t	d|�YqXq|�s|j
�d�}t|d�D]�}d}t�
�r�|�d�r�d}ztj|t|d�}|}WnNtjk
r�Yn:tjk
r�Yn&tjk
�rt�t	d|�YnX|r��qq�|�sd	S|�d
i�}t�|tg�}|�|�d�|j�d�|dd
k�rbtjndg�|_|jtjk�r~d	St|j�}|d}	||	k�r�t||j|jtjkd�|jtjk�r�t	�d||j�d	S||_||_ |�d�|_!|�d�|_"|d|_#|j$�%|�di��|�d�}
zt�&|
�|_'Wn6t(k
�rf}zt	�)d|�d|_'W5d}~XYnX|�d�}zt�&|�|_*Wn6t(k
�r�}zt	�)d|�d|_*W5d}~XYnX|�d�|_+|�d�|_,dS)Nz
/config-drivez#Failed reading config drive from %sZdatasource_list)�dslistz/dev/cdZcd9660)�mtypezBroken config drive: %sF�metadatar-r�r)r'�networkz&%s: not claiming datasource, dsmode=%szec2-metadataZuserdatar$Z
vendordataz"Invalid content in vendor-data: %sZvendordata2z#Invalid content in vendor-data2: %s�network_configZnetworkdataT)-rrr�isdir�read_config_driver
�NonReadabler�logexc�LOGr&�get�find_candidate_devsZis_BSD�
startswithZmount_cbZMountFailedErrorZBrokenMetadataZ
mergemanydict�DEFAULT_METADATAZ_determine_dsmodeZds_cfgrZDSMODE_PASSr-ZDSMODE_DISABLED�get_previous_iidr(�
on_first_bootr'�debugrr1rZuserdata_rawrr$�updateZconvert_vendordataZvendordata_raw�
ValueError�warningZvendordata2_rawr"r!)
r%�foundZmdZresultsZsdirr/Zdevr0Zprev_iidZcur_iidZvd�eZvd2rrr�	_get_data@s�

�
��


��


zDataSourceConfigDrive._get_datacCst�|���S�N)rZinstance_id_matches_system_uuidZget_instance_id)r%r&rrr�check_instance_id�sz'DataSourceConfigDrive.check_instance_idcCs~|jdkrx|jdtjfkr:t�d�tj|j|jd�|_n>|j	dk	rnt
�|j	�|_t�d�tj
dddd�n
t�d�|jS)	Nz(network config provided via network_json)r#z.network config provided via converted eni dataz(Eni network configuration in ConfigDrivez24.3z<You can use openstack's network configuration format instead)Z
deprecatedZdeprecated_versionZ
extra_messagez"no network configuration available)rr!rr r9r@r
Zconvert_net_jsonr#r"r�convert_eni_datarZ	deprecate�r%rrrr4�s"

�


�	
z$DataSourceConfigDrive.network_configcCsdS)Nr
rrJrrr�platform�szDataSourceConfigDrive.platformcCs$|j�d�rd}nd}d||jfS)z/Return the subplatform metadata source details.z/devzconfig-diskzseed-dirz%s (%s))rr<)r%Zsubplatform_typerrr�_get_subplatform�sz&DataSourceConfigDrive._get_subplatform)�__name__�
__module__�__qualname__ZdsnamerZNETWORKrZBOOT_NEW_INSTANCEZBOOTZBOOT_LEGACYZHOTPLUGZsupported_update_eventsrr,rFrH�propertyr4rKrL�
__classcell__rrr)rr!s"��	d

rcCs�t�|�}|jgif|jgifg}g}|D]J\}}}z|||�WStjk
rr}z|�|�W5d}~XYq*Xq*|d�dS)N���)r
ZConfigDriveReaderZread_v2Zread_v1r7�append)Z
source_dir�readerZfindersZexcpsZfunctor�args�kwargsrErrrr6�s


�r6cCsBtj�|�d�d�}zt�|��d�WStk
r<YdSXdS)N�datar�
)rrrZ	get_cpathrZload_text_file�rstrip�IOError)r(�fnamerrrr>�s
r>TcCs^t|t�stdt|���|rL|�dd�}|rL|rLt�d�|�t�	|��t
|�d��dS)zDPerforms any first-boot actions using data read from a config-drive.z/Config-drive data expected to be a dict; not %sr4�z-Updating network interfaces from config driver$N)�
isinstance�dict�	TypeError�typer:r9rCZapply_network_configrrI�write_injected_files)rWr'r3Znet_confrrrr?�s

�
r?c	Csx|rtt�dt|��|��D]V\}}|�tj�s:tj|}ztj||dd�Wqt	k
rpt�
td|�YqXqdS)NzWriting %s injected filesi�)�modezFailed writing file: %s)r9r@�len�itemsr<r�seprZ
write_filerZr8)r$�filenameZcontentrrrra�s
rac
	s|dkrg}|rBtD],}ztj|d�Wqtjk
r>YqXqg}tD]}|�t�d|��qJg�tD]}��t�d|��ql|jdd��jdd���fdd�|D�}�fd	d�|D�}t	�
d
||�|�rd|k�rt�\}}	|	|k�r|�|	�t	�
d|	|�|S)
aReturn a list of devices that may contain the config drive.

    The returned list is sorted by search order where the first item has
    should be searched first (highest priority)

    config drive v1:
       Per documentation, this is "associated as the last available disk on the
       instance", and should be VFAT.
       Currently, we do not restrict search list to "last available disk"

    config drive v2:
       Disk should be:
        * either vfat or iso9660 formatted
        * labeled with 'config-2' or 'CONFIG-2'
    N)rzTYPE=%szLABEL=%sT)�reversecsg|]}|�kr|�qSrr�r�d�Zby_labelrr�
<listcomp>*sz'find_candidate_devs.<locals>.<listcomp>cs"g|]}|�kst�|�s|�qSr)rZis_partitionrhrjrrrk.s
zdevices=%s dslist=%sZIBMCloudz5IBMCloud device '%s' (%s) removed from candidate list)
�OPTICAL_DEVICESrZfind_devs_withrZProcessExecutionError�FS_TYPES�extend�LABEL_TYPES�sortr9r@r	�remove)
Z
probe_opticalr/ZdeviceZ	by_fstypeZfs_typeZlabelZ
candidatesZdevicesZibm_platformZibm_pathrrjrr;s>
�


�r;cCst�|t�SrG)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_listKsrs)NT)TN)&ZloggingrZ	cloudinitrrrrZcloudinit.eventrrZ
cloudinit.netrZ$cloudinit.sources.DataSourceIBMCloudr	Zcloudinit.sources.helpersr
Z	getLoggerrMr9ZDEFAULT_IIDr=rmroZPOSSIBLE_MOUNTS�tuplerlZSourceMixinr+rr6r>r?rar;ZDataSourceConfigDriveNetZDEP_FILESYSTEMrrrsrrrr�<module>	s8
��,

B
�