ó
    x[hÉ  ã                   ó  • S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  \ R                  " \5      rSS0rS	rS
rS
r " S S\R(                  5      r " S S\5      r\\R.                  44\\R.                  \R0                  44/rS rg)é    N)Únet)ÚsourcesÚutil)ÚNoDHCPLeaseError)ÚEphemeralDHCPv4)ÚupcloudÚmetadata_urlz'http://169.254.169.254/metadata/v1.jsoné   é   c                   óJ   • \ rS rSrSrSrS rS rS rS r	S r
\S	 5       rS
rg)ÚDataSourceUpCloudé   ÚUpCloudFc                 ó  • [         R                  R                  XX#5        X l        [	        5       U l        [        R                  " [        R                  " USS/0 5      [        /5      U l
        U R                  S   U l        U R                  R                  S[        5      U l        U R                  R                  S[        5      U l        U R                  R                  S["        5      U l        S U l        S U l        g )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   ÚDataSourceUpCloud.__init__"   s¼   € Ü×Ñ×#Ñ# D°6ÔAØŒÜ›ˆŒÜ×(Ò(ä×$Ò$ W¨|¸YÐ.GÈÓLÜ!ðó
ˆŒð !%§¡¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒØ#ˆÔØ!ˆÕó    c                 ó,   • [         R                  " 5       $ ©N)Ú	uc_helperÚread_sysinfo©r%   s    r(   Ú_get_sysinfoÚDataSourceUpCloud._get_sysinfo3   s   € Ü×%Ò%Ó'Ð'r*   c                 ó€   • [         R                  " U R                  U R                  U R                  U R
                  S9$ )N)r   Úsec_betweenr   )r-   Úread_metadatar   r   r   r   r/   s    r(   Ú_read_metadataÚ DataSourceUpCloud._read_metadata6   s3   € Ü×&Ò&Ø×!Ñ!Ø—L‘LØŸ™Ø—L‘Lñ	
ð 	
r*   c                 ó¼  • U R                  5       u  pU(       d  g[        R                  SU5        U R                  (       aq   [        R	                  S5        [
        R                  " 5       n[        R	                  SU5        [        U R                  U5         U R                  5       nS S S 5        O& [        R	                  S5        U R                  5       nWU l        UR#                  SU5      U R$                  S'   UR#                  S	5      U R$                  S
'   UR#                  S5      U R$                  S'   UR#                  S5      U R$                  S'   UR#                  SS5      U R$                  S'   UR#                  SS 5      U l        UR#                  SS 5      U l        g! , (       d  f       NÜ= f! [        [        R                  4 a.  n[        R                  " [        [        U5      5         S nAgS nAff = f! [        R                   aD  n[        R                  " [        [        U5      5        [        R                  SU5         S nAgS nAff = f)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)r0   ÚLOGÚinfoÚperform_dhcp_setupÚdebugÚcloudnetÚfind_fallback_nicr   r   r5   r   r   ÚInvalidMetaDataExceptionr   ÚlogexcÚstrr$   r   r   Úvendordata_rawÚuserdata_raw)r%   Ú
is_upcloudÚserver_uuidÚnicÚmdÚes         r(   Ú	_get_dataÚDataSourceUpCloud._get_data>   sÐ  € Ø$(×$5Ñ$5Ó$7Ñ!ˆö Øä�‰Ð5°{ÔCà×"×"ðÜ—	‘	Ð2Ô3Ü×0Ò0Ó2�Ü—	‘	ÐFÈÔLÜ$ T§[¡[°#Õ6Ø×,Ñ,Ó.�B÷ 7Ð6ðÜ—	‘	Ø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ˆÔà÷; 7Õ6ûä$¤g×&FÑ&FÐGó Ü—’œC¤ Q£Ô(Üûðûô ×3Ñ3ó Ü—’œC¤ Q£Ô(Ü—‘ð6àôô
 ûðúsO   ÁAF8 ÂF'Â*F8 Â4%H Æ'
F5Æ1F8 Æ5F8 Æ8H Ç$G;Ç;H ÈIÈ:IÉIc                 óJ   • [         R                  " U R                  5       5      $ r,   )r   Úinstance_id_matches_system_uuidÚget_instance_id)r%   r&   s     r(   Úcheck_instance_idÚ#DataSourceUpCloud.check_instance_idk   s   € Ü×6Ò6°t×7KÑ7KÓ7MÓNÐNr*   c                 óä   • U R                   (       a  U R                   $ U R                  R                  S5      nU(       d  [        S5      e[        R
                  " U5      U l         U R                   $ )zŽ
Configure the networking. This needs to be done each boot,
since the IP and interface information might have changed
due to reconfiguration.
r:   z/Unable to get network meta-data from server....)r#   r   r   ÚRuntimeErrorr-   Úconvert_network_config)r%   Úraw_network_configs     r(   Únetwork_configÚ DataSourceUpCloud.network_confign   sg   € ð ××Ø×'Ñ'Ð'à!Ÿ]™]×.Ñ.¨yÓ9ÐÞ!ÜØAóð ô  )×?Ò?Øó 
ˆÔð ×#Ñ#Ð#r*   )r#   r   r   r   r   r$   r   r   rK   rJ   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚdsnamerC   r   r0   r5   rQ   rV   Úpropertyr\   Ú__static_attributes__© r*   r(   r   r      s>   † à€Fð Ðò"ò"(ò
ò+òZOð ñ$ó ó$r*   r   c                   ó   • \ rS rSrSrSrSrg)ÚDataSourceUpCloudLocalé†   ab  
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.
Tre   N)r^   r_   r`   ra   Ú__doc__rC   rd   re   r*   r(   rg   rg   †   s   † ñð Ór*   rg   c                 ó8   • [         R                  " U [        5      $ r,   )r   Úlist_from_dependsÚdatasources)Údependss    r(   Úget_datasource_listrn   ›   s   € Ü×$Ò$ W¬kÓ:Ð:r*   )ÚloggingÚ	cloudinitr   rE   r   r   Úcloudinit.net.dhcpr   Úcloudinit.net.ephemeralr   Úcloudinit.sources.helpersr   r-   Ú	getLoggerr^   rA   r   r    r!   r"   r   r   rg   ÚDEP_FILESYSTEMÚDEP_NETWORKrl   rn   re   r*   r(   Ú<module>rw      s    ðó å %ß #Ý /Ý 3Ý :à×Ò˜Ó!€à#Ð%NÐOÐ ð €
Ø€
Ø€ôh$˜×*Ñ*ô h$ôV
Ð.ô 
ð ˜g×4Ñ4Ð6Ð7Ø˜×/Ñ/°×1DÑ1DÐEÐFð€ó;r*   