509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
\¼me�  ã               @   s°   d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZ e jeƒZdZded iZd	Zd
Zd
ZG dd„ dejƒZdd„ Zdd„ Zddd„ZeejffgZdS )é    N)Ú
exceptions)ÚdmiÚnetÚsourcesÚsubpÚ
url_helperÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4zhttp://169.254.169.254/api/v1Úmetadata_urlz	/metadataé   é   c               @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zedd	„ ƒZe	d
d„ ƒZ
dS )ÚDataSourceNWCSÚNWCSc             C   sŽ   t jj| |||ƒ || _tƒ | _tjtj|ddgi ƒt	gƒ| _
| j
d | _| j
jdtƒ| _| j
jdtƒ| _| j
jdtƒ| _t j| _t j| _d S )NZ
datasourcer   r   ÚretriesÚtimeoutÚ
wait_retry)r   Ú
DataSourceÚ__init__ÚdistroÚdictÚmetadatar   ZmergemanydictZget_cfg_by_pathÚBUILTIN_DS_CONFIGZds_cfgÚmetadata_addressÚgetÚ
MD_RETRIESr   Ú
MD_TIMEOUTr   ÚMD_WAIT_RETRYr   ÚUNSETÚ_network_configZDSMODE_NETWORKZdsmode)ÚselfZsys_cfgr   Úpaths© r"   ú$/usr/lib/python3.6/DataSourceNWCS.pyr      s    
zDataSourceNWCS.__init__c             C   sv   | j ƒ }|d krtdƒ‚|| _|d | jd< |d | jd< |d | jd< |d | jd< |jdd ƒ| _|jdd ƒ| _d	S )
Nzfailed to get metadatazinstance-idzpublic-keysÚnetworkZhostnamezlocal-hostnameZuserdataZ
vendordataT)Úget_metadataÚRuntimeErrorZmetadata_fullr   r   Zuserdata_rawZvendordata_raw)r    Zmdr"   r"   r#   Ú	_get_data/   s    zDataSourceNWCS._get_datac             C   sŒ   yJt jdƒ t| jtjƒ dtd id�� t| j| j	| j
| jd�S Q R X W n< ttjttjfk
r† } zt jd|ƒ ‚ W Y d d }~X nX d S )Nz#Attempting to get metadata via DHCPÚurlz/metadata/instance-id)ZifaceZconnectivity_url_data)r   Úsec_betweenr   zDHCP failure: %s)ÚLOGÚinfor
   r   r   Zfind_fallback_nicÚBASE_URL_V1Úread_metadatar   r   r   r   r	   r   ZProcessExecutionErrorr&   r   ZRequestExceptionÚerror)r    Úer"   r"   r#   r%   B   s$    
zDataSourceNWCS.get_metadatac             C   s¦   t jdƒ | jd kr*t jdtjƒ tj| _| jtjkr<| jS | jd d sRtdƒ‚x@| jd d D ].}t|d ƒ}|rbt j	d|d |ƒ ||d< qbW | jd | _| jS )	Nz Attempting network configurationz5Found None as cached _network_config, resetting to %sr$   Úconfigz"Unable to get metadata from serverZmac_addresszOverriding %s with %sÚname)
r*   Údebugr   Zwarningr   r   r   r&   Úget_interface_namer+   )r    ÚiZ
iface_namer"   r"   r#   Únetwork_config]   s"    

zDataSourceNWCS.network_configc               C   s   dt jdƒkS )Nr   zsystem-manufacturer)r   Zread_dmi_datar"   r"   r"   r#   Ú	ds_detectz   s    zDataSourceNWCS.ds_detectN)Ú__name__Ú
__module__Ú__qualname__Zdsnamer   r'   r%   Úpropertyr5   Ústaticmethodr6   r"   r"   r"   r#   r      s   r   c             C   s   t jƒ }| |krd S |j| ƒS )N)r   Zget_interfaces_by_macr   )ZmacZmacs_to_nicr"   r"   r#   r3      s    r3   c             C   s   t j| tƒS )N)r   Zlist_from_dependsÚdatasources)Zdependsr"   r"   r#   Úget_datasource_list‰   s    r=   é   c             C   s6   t j| |||d�}|jƒ s&td|  ƒ‚tj|jjƒ ƒS )N)r   r)   r   zunable to read metadata at %s)r   ZreadurlÚokr&   r   Z	load_jsonÚcontentsÚdecode)r(   r   r)   r   Zresponser"   r"   r#   r-   �   s
    r-   )r>   r>   r   )ZloggingZrequestsr   Z	cloudinitr   r   r   r   r   r   Zcloudinit.net.dhcpr	   Zcloudinit.net.ephemeralr
   Z	getLoggerr7   r*   r,   r   r   r   r   r   r   r3   r=   r-   ZDEP_FILESYSTEMr<   r"   r"   r"   r#   Ú<module>   s    
e

