Ë
    x[h¡  ã                   óð   — 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z   iZd	Zd
Zd
Z G d„ dej,                  «      Zd„ Zd„ Zdd„Zeej6                  ffgZy)é    N)Ú
exceptions)ÚdmiÚnetÚsourcesÚsubpÚ
url_helperÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4zhttp://169.254.169.254/api/v1Úmetadata_urlz	/metadataé   é   c                   ó^   ‡ — e Zd ZdZd„ Zdeddfˆ fd„Zd„ Zd„ Ze	d	„ «       Z
ed
„ «       Zˆ xZS )ÚDataSourceNWCSÚNWCSc                 óJ  — 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 | _        y )NÚ
datasourcer   r   ÚretriesÚtimeoutÚ
wait_retry)r   Ú
DataSourceÚ__init__ÚdistroÚdictÚmetadatar	   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgÚmetadata_addressÚgetÚ
MD_RETRIESr   Ú
MD_TIMEOUTr   ÚMD_WAIT_RETRYr   ÚUNSETÚ_network_configÚDSMODE_NETWORKÚdsmodeÚmetadata_full)ÚselfÚsys_cfgr   Úpathss       úB/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNWCS.pyr   zDataSourceNWCS.__init__   sÓ   € Ü×Ñ×#Ñ# D¨'°6¸5ÔAØˆŒÜ›ˆŒÜ×(Ñ(ä×$Ñ$ W¨|¸VÐ.DÀbÓIÜ!ðó
ˆŒð !%§¡¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒÜ&Ÿ}™}ˆÔÜ×,Ñ,ˆŒØ!ˆÕó    Úci_pkl_versionÚreturnNc                 óh   •— t         ‰| �  |«       | j                  st        j                  | _        y y ©N)ÚsuperÚ	_unpickler&   r   r%   )r*   r/   Ú	__class__s     €r-   r4   zDataSourceNWCS._unpickle0   s*   ø€ Ü‰Ñ˜.Ô)Ø×#Ò#Ü#*§=¡=ˆDÕ ð $r.   c                 ó8  — | j                  «       }|€t        d«      ‚|| _        |d   | j                  d<   |d   | j                  d<   |d   | j                  d<   |d   | j                  d<   |j	                  dd «      | _        |j	                  dd «      | _        y	)
Nzfailed to get metadatazinstance-idzpublic-keysÚnetworkÚhostnamezlocal-hostnameÚuserdataÚ
vendordataT)Úget_metadataÚRuntimeErrorr)   r   r!   Úuserdata_rawÚvendordata_raw)r*   Úmds     r-   Ú	_get_datazDataSourceNWCS._get_data5   s�   € Ø×ÑÓ ˆàˆ:ÜÐ7Ó8Ð8àˆÔà')¨-Ñ'8ˆ�‰�mÑ$Ø')¨-Ñ'8ˆ�‰�mÑ$Ø#% i¡=ˆ�‰�iÑ Ø*,¨Z©.ˆ�‰Ð&Ñ'àŸF™F :¨tÓ4ˆÔà Ÿf™f \°4Ó8ˆÔàr.   c                 óÈ  — 	 t         j                  d«       t        | j                  t	        j
                  «       dt        dz   ig¬«      5  t        | j                  | j                  | j                  | j                  ¬«      cd d d «       S # 1 sw Y   y xY w# t        t        j                  t        t         j"                  f$ r}t         j%                  d|«       ‚ d }~ww xY w)Nz#Attempting to get metadata via DHCPÚurlz/metadata/instance-id)ÚifaceÚconnectivity_urls_data©r   Úsec_betweenr   zDHCP failure: %s)ÚLOGÚinfor   r   r   Úfind_fallback_nicÚBASE_URL_V1Úread_metadatar    r   r   r   r
   r   ÚProcessExecutionErrorr<   r   ÚRequestExceptionÚerror)r*   Úes     r-   r;   zDataSourceNWCS.get_metadataH   sÂ   € ð	Ü�H‰HÐ:Ô;ä Ø—‘Ü×+Ñ+Ó-ð œ{Ð-DÑDðð(ôñ ô %Ø×)Ñ)Ø ŸL™LØ $§¡Ø ŸL™Lô	÷÷ ò ûô" Ü×&Ñ&ÜÜ×'Ñ'ð	
ò 	ô �I‰IÐ(¨!Ô,Øûð	ús6   ‚A	B Á7BÂ	B ÂBÂB ÂB Â-C!ÃCÃC!c                 ó†  — t         j                  d«       | j                  t        j                  k7  r| j                  S | j
                  d   d   st        d«      ‚| j
                  d   d   D ]2  }t        |d   «      }|sŒt         j                  d|d   |«       ||d<   Œ4 | j
                  d   | _        | j                  S )Nz Attempting network configurationr7   Úconfigz"Unable to get metadata from serverÚmac_addresszOverriding %s with %sÚname)	rG   Údebugr&   r   r%   r   r<   Úget_interface_namerH   )r*   ÚiÚ
iface_names      r-   Únetwork_configzDataSourceNWCS.network_confige   s¸   € ä�	‰	Ð4Ô5à×Ñ¤7§=¡=Ò0Ø×'Ñ'Ð'à�}‰}˜YÑ'¨Ò1ÜÐCÓDÐDð —‘˜yÑ)¨(Ñ3ò 	'ˆAÜ+¨A¨mÑ,<Ó=ˆJâÜ—‘Ð0°!°F±)¸ZÔHØ&��&’	ð	'ð  $Ÿ}™}¨YÑ7ˆÔà×#Ñ#Ð#r.   c                  ó2   — dt        j                  d«      k(  S )Nr   zsystem-manufacturer)r   Úread_dmi_data© r.   r-   Ú	ds_detectzDataSourceNWCS.ds_detect{   s   € àœ×*Ñ*Ð+@ÓAÑAÐAr.   )Ú__name__Ú
__module__Ú__qualname__Údsnamer   Úintr4   r@   r;   ÚpropertyrX   Ústaticmethodr\   Ú__classcell__)r5   s   @r-   r   r      sT   ø„ à€Fò"ð$1¨ð 1°õ 1ò
ò&ð: ñ$ó ð$ð* ñBó ôBr.   r   c                 óV   — t        j                  «       }| |vry |j                  | «      S r2   )r   Úget_interfaces_by_macr!   )ÚmacÚmacs_to_nics     r-   rU   rU   €   s*   € Ü×+Ñ+Ó-€Kà
�+ÑØà�?‰?˜3ÓÐr.   c                 ó6   — t        j                  | t        «      S r2   )r   Úlist_from_dependsÚdatasources)Údependss    r-   Úget_datasource_listrm   Š   s   € Ü×$Ñ$ W¬kÓ:Ð:r.   c                 óÊ   — t        j                  | |||¬«      }|j                  «       st        d| z  «      ‚t	        j
                  |j                  j                  «       «      S )NrE   zunable to read metadata at %s)r   ÚreadurlÚokr<   r	   Ú	load_jsonÚcontentsÚdecode)rB   r   rF   r   Úresponses        r-   rK   rK   Ž   sU   € Ü×!Ñ!Ø�W¨+¸wô€Hð �;‰;Œ=ÜÐ:¸SÑ@ÓAÐAä�>‰>˜(×+Ñ+×2Ñ2Ó4Ó5Ð5r.   )é   ru   r   )ÚloggingÚrequestsr   Ú	cloudinitr   r   r   r   r   r	   Úcloudinit.net.dhcpr
   Úcloudinit.net.ephemeralr   Ú	getLoggerr]   rG   rJ   r   r"   r#   r$   r   r   rU   rm   rK   ÚDEP_FILESYSTEMrk   r[   r.   r-   ú<module>r}      s•   ðó
 å ç ?× ?Ý /Ý 3à€g×Ñ˜Ó!€à-€ð �K +Ñ-ðÐ ð €
Ø€
Ø€ôcB�W×'Ñ'ô cBòL ò;ó6ð �g×,Ñ,Ð.Ð/ð�r.   