BYPASS SHELL BY ./RAZORGANZ
Server: nginx/1.20.1
System: Linux iZdzfnv9mwfppeZ 5.10.134-19.2.al8.x86_64 #1 SMP Wed Oct 29 22:47:09 CST 2025 x86_64
User: apache (48)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/cloudinit/sources/__pycache__/DataSourceOpenStack.cpython-36.pyc
3

�q�h)�@sddlZddlmZddlmZddlmZmZmZddlm	Z	m
Z
ddlmZddl
mZddlmZdd	lmZeje�Zd
dgZdZd
eiZdZdZeegZdZdZdZeZ e eeeg7Z Gdd�dej!ej"�Z#Gdd�de#�Z$ddd�Z%e$ej&ffe#ej&ej'ffgZ(dd�Z)dS)�N)�dmi)�log)�sources�
url_helper�util)�
EventScope�	EventType)�NoDHCPLeaseError)�EphemeralDHCPv4)�DataSourceOracle)�	openstackzhttp://[fe80::a9fe:a9fe]zhttp://169.254.169.254ziid-dsopenstackzinstance-idzOpenStack NovazOpenStack ComputeZOpenTelekomCloudz
SAP CCloud VMZHUAWEICLOUDcs�eZdZdZejZdZej	e
je
je
j
e
jhiZ�fdd�Zdd�Zdd�Zd	d
�Zedd��Zd
d�Zdd�Zdd�Z�ZS)�DataSourceOpenStackZ	OpenStackFcsHtt|�j|||�d|_tj|j�|_d|_i|_	t
j|_t
j|_
dS)N)�superr
�__init__�metadata_addressrZfetch_ssl_details�paths�ssl_details�version�filesr�UNSET�ec2_metadata�network_json)�self�sys_cfg�distror)�	__class__��)/usr/lib/python3.6/DataSourceOpenStack.pyr>szDataSourceOpenStack.__init__cCs"tjj|�}d||j|jf}|S)Nz%s [%s,ver=%s])r�
DataSource�__str__�dsmoder)r�rootZmstrrrrrGszDataSourceOpenStack.__str__cCs|jjdt�}dd�|D�}t|�t|�krHtjdtt|�t|���t|�rV|}ntjd�t}g}i}x*|D]"}t	j
|d�}|j|�|||<qrW|j�}t
j
�}t	j||j|jdd�\}	}
|	r�tjd	||	�ntjd
|tt
j
�|��|j|	�|_t|	�S)NZ
metadata_urlscSsg|]}tj|�r|�qSr)rZis_resolvable_url)�.0�xrrr�
<listcomp>NszADataSourceOpenStack.wait_for_metadata_service.<locals>.<listcomp>z,Removed the following from metadata urls: %sz+Empty metadata url list! using default listrF)�urlsZmax_wait�timeoutZconnect_synchronouslyzUsing metadata source: '%s'z2Giving up on OpenStack md from %s after %s seconds)�ds_cfg�get�DEF_MD_URLS�set�LOG�debug�list�len�warningrZcombine_url�append�get_url_params�timeZwait_for_urlZmax_wait_seconds�timeout_seconds�intr�bool)rr%ZfilteredZmd_urlsZurl2baseZurlZmd_url�
url_paramsZ
start_timeZ	avail_urlZ	_responserrr�wait_for_metadata_serviceLs>


z-DataSourceOpenStack.wait_for_metadata_servicecCstj|j��S)N)rZinstance_id_matches_system_uuidZget_instance_id)rrrrr�check_instance_idusz%DataSourceOpenStack.check_instance_idcCsn|jtjkr|jStj|jjdd��r2d|_|jS|jtjkrLtj	d�dStj
d�tj|jdd�|_|jS)z@Return a network config dict for rendering ENI or netplan files.Zapply_network_configTNz<Unexpected call to network_config when network_json is None.z(network config provided via network_json)Z
known_macs)
�_network_configrrrZis_falser'r(rr+r/r,rZconvert_net_json)rrrr�network_configys
z"DataSourceOpenStack.network_configc,Cs�|jrry2t|j|j��tjtjd|jd�}WdQRXWq�t	t
jfk
rn}ztjtt
|��dSd}~Xq�Xn@y|j�}Wn2t
jk
r�}ztjtt
|��dSd}~XnX|j|jd�g�|_|jt
jkr�dS|jdi�}tj|tg�}||_|jd�|_|jd�|_|jd	�|_|d
|_|jj|jdi��|jd�}||_yt
j|�|_Wn6tk
�r�}ztjd
|�d|_WYdd}~XnX|jd�}||_ yt
j|�|_!Wn6tk
�r�}ztjd|�d|_!WYdd}~XnXdS)a
Crawl metadata, parse and persist that data for this instance.

        @return: True when metadata discovered indicates OpenStack datasource.
            False when unable to contact metadata service or when metadata
            format is invalid or disabled.
        zCrawl of metadata service)Zlogfunc�msg�funcNFr �metadatazec2-metadataZnetworkdataZuserdatarrZ
vendordataz"Invalid content in vendor-data: %sZvendordata2z#Invalid content in vendor-data2: %sT)"�perform_dhcp_setupr
rZfallback_interfacer�log_timer+r,�_crawl_metadatar	r�InvalidMetaDataExceptionZlogexc�strZ_determine_dsmoder(r ZDSMODE_DISABLEDZ
mergemanydict�DEFAULT_METADATAr=rrZuserdata_rawrr�updateZvendordata_pureZconvert_vendordataZvendordata_raw�
ValueErrorr/Zvendordata2_pureZvendordata2_raw)r�results�eZmdZvdZvd2rrr�	_get_data�sR


zDataSourceOpenStack._get_datacCs�y|j�stjd��Wn8tk
rN}ztjdjt|�d���WYdd}~XnX|j�}y,tjt	j
dt|jg|j
|j|jd�d�}Wnrtjk
r�}ztjt|���WYdd}~XnBtjtfk
r�}z dj|jd	�}tj|�|�WYdd}~XnX|S)
z�Crawl metadata service when available.

        @returns: Dictionary with all metadata discovered for this datasource.
        @raise: InvalidMetaDataException on unreadable or broken
            metadata.
        z No active metadata service foundz,IOError contacting metadata service: {error})�errorNz#Crawl of openstack metadata service)r�retriesr&)�args�kwargszBroken metadata address {addr})Zaddr)r7rrA�IOError�formatrBr1rr?r+r,�read_metadata_servicerrZnum_retriesr3rZNonReadableZBrokenMetadata)rrGr6�resultr;rrrr@�s2
 
z#DataSourceOpenStack._crawl_metadatacCspd|jjd�k}tj�sdStjd�}|tkr2dStjd�tkrDdS|rTtj	�rTdStj
d�jd�tkrldSdS)	z<Return True when a potential OpenStack platform is detected.ZOracleZdatasource_listTzsystem-product-namezchassis-asset-tag��product_nameF)rr(rZis_x86rZ
read_dmi_data�VALID_DMI_PRODUCT_NAMES�VALID_DMI_ASSET_TAGS�oracleZ_is_platform_viableZget_proc_env�DMI_PRODUCT_NOVA)rZ
accept_oraclerRrrr�	ds_detect�s
zDataSourceOpenStack.ds_detect)�__name__�
__module__�__qualname__Zdsnamerrr9r>rZNETWORKrZBOOT_NEW_INSTANCEZBOOTZBOOT_LEGACYZHOTPLUGZsupported_update_eventsrrr7r8�propertyr:rHr@rW�
__classcell__rr)rrr
,s 
	)9*r
c@seZdZdZdZdS)�DataSourceOpenStackLocalauRun in init-local using a dhcp discovery prior to metadata crawl.

    In init-local, no network is available. This subclass sets up minimal
    networking with dhclient on a viable nic so that it can talk to the
    metadata service. If the metadata service provides network configuration
    then render the network configuration for that instance based on metadata.
    TN)rXrYrZ�__doc__r>rrrrr]sr]�cCstj||||d�}|j�S)N)rr&rJ)rZMetadataReaderZread_v2)Zbase_urlrr&rJ�readerrrrrOsrOcCstj|t�S)N)rZlist_from_depends�datasources)Zdependsrrr�get_datasource_list#srb)Nr_r_)*r2Z	cloudinitrrZloggingrrrZcloudinit.eventrrZcloudinit.net.dhcpr	Zcloudinit.net.ephemeralr
Zcloudinit.sourcesrrUZcloudinit.sources.helpersrZ	getLoggerrXr+r)ZDEFAULT_IIDrCrVZDMI_PRODUCT_COMPUTErSZDMI_ASSET_TAG_OPENTELEKOMZDMI_ASSET_TAG_SAPCCLOUDZDMI_ASSET_TAG_HUAWEICLOUDrTZSourceMixinrr
r]rOZDEP_FILESYSTEMZDEP_NETWORKrarbrrrr�<module>s<
]