Ë
    x[hÉ  ã                   ó  — d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  e j                  e«      ZddiZd	Zd
Zd
Z G d„ dej(                  «      Z G d„ de«      Zeej.                  ffeej.                  ej0                  ffgZd„ Zy)é    N)Únet)ÚsourcesÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4)ÚupcloudÚmetadata_urlz'http://169.254.169.254/metadata/v1.jsoné   é   c                   óB   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zy	)
ÚDataSourceUpCloudÚUpCloudFc                 ó  — 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"        «      | _        d | _        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   Ú_network_configÚmetadata_full)ÚselfÚsys_cfgr   Úpathss       úE/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceUpCloud.pyr   zDataSourceUpCloud.__init__"   sÂ   € Ü×Ñ×#Ñ# D¨'°6¸5ÔAØˆŒÜ›ˆŒÜ×(Ñ(ä×$Ñ$ W¨|¸YÐ.GÈÓLÜ!ðó
ˆŒð !%§¡¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒØ#ˆÔØ!ˆÕó    c                 ó*   — t        j                  «       S ©N)Ú	uc_helperÚread_sysinfo©r$   s    r'   Ú_get_sysinfozDataSourceUpCloud._get_sysinfo3   s   € Ü×%Ñ%Ó'Ð'r(   c                 ó„   — t        j                  | j                  | j                  | j                  | j
                  ¬«      S )N)r   Úsec_betweenr   )r+   Úread_metadatar   r   r   r   r-   s    r'   Ú_read_metadataz DataSourceUpCloud._read_metadata6   s3   € Ü×&Ñ&Ø×!Ñ!Ø—L‘LØŸ™Ø—L‘Lô	
ð 	
r(   c                 ó–  — | j                  «       \  }}|syt        j                  d|«       | j                  rp	 t        j	                  d«       t        j                  «       }t        j	                  d|«       t        | j                  |«      5  | j                  «       }d d d «       n&	 t        j	                  d«       | j                  «       }| _        |j#                  d|«      | j$                  d<   |j#                  d	«      | j$                  d
<   |j#                  d«      | j$                  d<   |j#                  d«      | j$                  d<   |j#                  dd«      | j$                  d<   |j#                  dd «      | _        |j#                  dd «      | _        y# 1 sw Y   ŒþxY w# t        t        j                  f$ r-}t        j                  t        t        |«      «       Y d }~yd }~ww xY w# t        j                  $ rC}t        j                  t        t        |«      «       t        j                  d|«       Y d }~yd }~ww xY w)NFz"Running on UpCloud. server_uuid=%szFinding a fallback NICz*Discovering metadata via DHCP interface %sz7Discovering metadata without DHCP-configured networkingzENo DHCP-enabled interfaces available, unable to fetch metadata for %sÚinstance_idzinstance-idÚhostnamezlocal-hostnameÚnetworkÚpublic_keyszpublic-keysÚregionÚdefaultÚavailability_zoneÚvendor_dataÚ	user_dataT)r.   ÚLOGÚinfoÚperform_dhcp_setupÚdebugÚcloudnetÚfind_fallback_nicr   r   r2   r   r   ÚInvalidMetaDataExceptionr   ÚlogexcÚstrr#   r   r   Úvendordata_rawÚuserdata_raw)r$   Ú
is_upcloudÚserver_uuidÚnicÚmdÚes         r'   Ú	_get_datazDataSourceUpCloud._get_data>   s×  € Ø$(×$5Ñ$5Ó$7Ñ!ˆ�[ñ Øä�‰Ð5°{ÔCà×"Ò"ðÜ—	‘	Ð2Ô3Ü×0Ñ0Ó2�Ü—	‘	ÐFÈÔLÜ$ T§[¡[°#Ó6ñ /Ø×,Ñ,Ó.�B÷/øðÜ—	‘	ØMôð ×(Ñ(Ó*�ð  ˆÔØ')§v¡v¨m¸[Ó'Iˆ�‰�mÑ$Ø*,¯&©&°Ó*<ˆ�‰Ð&Ñ'Ø#%§6¡6¨)Ó#4ˆ�‰�iÑ Ø')§v¡v¨mÓ'<ˆ�‰�mÑ$Ø-/¯V©V°H¸iÓ-Hˆ�‰Ð)Ñ*Ø Ÿf™f ]°DÓ9ˆÔØŸF™F ;°Ó5ˆÔà÷;/ð /ûä$¤g×&FÑ&FÐGò Ü—‘œC¤ Q£Ô(Üûðûô ×3Ñ3ò Ü—‘œC¤ Q£Ô(Ü—‘ð6àôô
 ûðúsH   ºAF) ÂFÂ F) Â*%G2 ÆF&Æ"F) Æ)G/Ç#G*Ç*G/Ç2IÈ9IÉIc                 óH   — t        j                  | j                  «       «      S r*   )r   Úinstance_id_matches_system_uuidÚget_instance_id)r$   r%   s     r'   Úcheck_instance_idz#DataSourceUpCloud.check_instance_idk   s   € Ü×6Ñ6°t×7KÑ7KÓ7MÓNÐNr(   c                 óÎ   — | j                   r| j                   S | j                  j                  d«      }|st        d«      ‚t	        j
                  |«      | _         | j                   S )z®
        Configure the networking. This needs to be done each boot,
        since the IP and interface information might have changed
        due to reconfiguration.
        r6   z/Unable to get network meta-data from server....)r"   r   r   ÚRuntimeErrorr+   Úconvert_network_config)r$   Úraw_network_configs     r'   Únetwork_configz DataSourceUpCloud.network_confign   sg   € ð ×ÒØ×'Ñ'Ð'à!Ÿ]™]×.Ñ.¨yÓ9ÐÙ!ÜØAóð ô  )×?Ñ?Øó 
ˆÔð ×#Ñ#Ð#r(   N)Ú__name__Ú
__module__Ú__qualname__Údsnamer?   r   r.   r2   rM   rQ   ÚpropertyrV   © r(   r'   r   r      s>   „ à€Fð Ðò"ò"(ò
ò+òZOð ñ$ó ñ$r(   r   c                   ó   — e Zd ZdZdZy)ÚDataSourceUpCloudLocalaz  
    Run 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)rW   rX   rY   Ú__doc__r?   r\   r(   r'   r^   r^   †   s   „ ñð Ñr(   r^   c                 ó6   — t        j                  | t        «      S r*   )r   Úlist_from_dependsÚdatasources)Údependss    r'   Úget_datasource_listrd   ›   s   € Ü×$Ñ$ W¬kÓ:Ð:r(   )ÚloggingÚ	cloudinitr   rA   r   r   Úcloudinit.net.dhcpr   Úcloudinit.net.ephemeralr   Úcloudinit.sources.helpersr   r+   Ú	getLoggerrW   r=   r   r   r    r!   r   r   r^   ÚDEP_FILESYSTEMÚDEP_NETWORKrb   rd   r\   r(   r'   ú<module>rm      s¢   ðó å %ß #Ý /Ý 3Ý :à€g×Ñ˜Ó!€à#Ð%NÐOÐ ð €
Ø€
Ø€ôh$˜×*Ñ*ô h$ôV
Ð.ô 
ð ˜g×4Ñ4Ð6Ð7Ø˜×/Ñ/°×1DÑ1DÐEÐFð€ó;r(   