Your IP : 216.73.217.13


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

U

�Ad��@s�ddlmZddlmZddlmZddlmZmZmZm	Z	m
Z
ddlmZddl
mZe�e�ZdZded	iZd
ZdZdZGdd
�d
ej�Zdd�Zdd�Zdd�Zddd�ZeejffgZdS)�)�
exceptions)�dmi)�log)�net�sources�subp�
url_helper�util)�NoDHCPLeaseError)�EphemeralDHCPv4zhttp://169.254.169.254/api/v1�metadata_urlz	/metadata��c@s4eZdZdZdd�Zdd�Zdd�Zedd	��Zd
S)�DataSourceNWCS�NWCScCs�tj�||||�||_t�|_t�t�|ddgi�t	g�|_
|j
d|_|j
�dt
�|_|j
�dt�|_|j
�dt�|_tj|_tj|_dS)NZ
datasourcerr�retries�timeout�
wait_retry)r�
DataSource�__init__�distro�dict�metadatar	Z
mergemanydictZget_cfg_by_path�BUILTIN_DS_CONFIGZds_cfg�metadata_address�get�
MD_RETRIESr�
MD_TIMEOUTr�
MD_WAIT_RETRYr�UNSET�_network_configZDSMODE_NETWORKZdsmode)�selfZsys_cfgr�paths�r#�B/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNWCS.pyrs��zDataSourceNWCS.__init__cCs�t�d�t�}|s"t�d�dSt�d�|��}|dkrDtd��||_|d|jd<|d|jd<|d|jd<|d	|jd
<|�dd�|_|�dd�|_	d
S)Nz'Detecting if machine is a NWCS instancezMachine is not a NWCS instanceFzMachine is a NWCS instancezfailed to get metadatazinstance-idzpublic-keys�networkZhostnamezlocal-hostnameZuserdataZ
vendordataT)
�LOG�info�
get_nwcs_data�get_metadata�	ExceptionZ
metadata_fullrrZuserdata_rawZvendordata_raw)r!Zon_nwcsZmdr#r#r$�	_get_data-s"


zDataSourceNWCS._get_datacCs�zTt�d�tt��dtdid��(t|j|j|j	|j
d�W5QR�WSQRXWn<ttj
ttjfk
r�}zt�d|��W5d}~XYnXdS)Nz#Attempting to get metadata via DHCP�urlz/metadata/instance-id)ZifaceZconnectivity_url_data�r�sec_betweenrzDHCP failure: %s)r&r'rrZfind_fallback_nic�BASE_URL_V1�
read_metadatarrrrr
rZProcessExecutionError�RuntimeErrorrZRequestException�error)r!�er#r#r$r)Is,
����zDataSourceNWCS.get_metadatacCs�t�d�|jdkr*t�dtj�tj|_|jtjkr<|jS|jddsRtd��|jddD].}t|d�}|r`t�	d|d|�||d<q`|jd|_|jS)	Nz Attempting network configurationz5Found None as cached _network_config, resetting to %sr%Zconfigz"Unable to get metadata from serverZmac_addresszOverriding %s with %s�name)
r&�debugr Zwarningrrrr*�get_interface_namer')r!�iZ
iface_namer#r#r$�network_configcs$

�
zDataSourceNWCS.network_configN)	�__name__�
__module__�__qualname__Zdsnamerr+r)�propertyr8r#r#r#r$rsrcCst�d�}|dkrdSdS)Nzsystem-manufacturerrFT)rZ
read_dmi_data)Zvendor_namer#r#r$r(�s
r(cCst��}||krdS|�|�S�N)rZget_interfaces_by_macr)ZmacZmacs_to_nicr#r#r$r6�sr6cCst�|t�Sr=)rZlist_from_depends�datasources)Zdependsr#r#r$�get_datasource_list�sr?�cCs6tj||||d�}|��s&td|��t�|j���S)Nr-zunable to read metadata at %s)rZreadurl�okr1r	Z	load_json�contents�decode)r,rr.rZresponser#r#r$r0�s�r0N)r@r@r
)ZrequestsrZ	cloudinitrrZloggingrrrrr	Zcloudinit.net.dhcpr
Zcloudinit.net.ephemeralrZ	getLoggerr9r&r/rrrrrrr(r6r?r0ZDEP_FILESYSTEMr>r#r#r#r$�<module>s(
�i	


�