
    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    ##D6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    &&!!LLLL	
 	
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 ((*  ')vvm['Im$*,&&*<&'#%66)#4i ')vvm'<m$-/VVHi-H)* ff]D9FF;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6t7K7K7M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    $$Wk::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//1D1DEF;r*   