+
    i                        ^ RI t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	 ^ RI
Ht ] P                  ! ]4      tRR/t^t^t^t ! R	 R
]P(                  4      t ! R R]4      t]]P.                  33]]P.                  ]P0                  33.tR tR# )    N)net)sourcesutil)NoDHCPLeaseError)EphemeralDHCPv4)upcloudmetadata_urlz'http://169.254.169.254/metadata/v1.jsonc                   V   a  ] tR t^t o RtRtR tR tR tR t	R t
]R 4       tR	tV tR
# )DataSourceUpCloudUpCloudFc                   \         P                  P                  WW#4       W n        \	        4       V n        \        P                  ! \        P                  ! VR R./ 4      \        .4      V n
        V P                  R,          V n        V P                  P                  R\        4      V n        V P                  P                  R\        4      V n        V P                  P                  R\"        4      V n        RV n        RV n        R# )
datasourcer   r	   retriestimeout
wait_retryN)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                ,    \         P                  ! 4       # N)	uc_helperread_sysinfor"   s   &r%   _get_sysinfoDataSourceUpCloud._get_sysinfo3   s    %%''r'   c                    \         P                  ! V P                  V P                  V P                  V P
                  R 7      # ))r   sec_betweenr   )r*   read_metadatar   r   r   r   r,   s   &r%   _read_metadata DataSourceUpCloud._read_metadata6   s3    &&!!LLLL	
 	
r'   c                   V P                  4       w  rV'       g   R # \        P                  RV4       V P                  '       dz    \        P	                  R4       \
        P                  ! 4       p\        P	                  RV4       \        V P                  V4      ;_uu_ 4        V P                  4       pRRR4       M& \        P	                  R4       V P                  4       pXV n        VP#                  RV4      V P$                  R&   VP#                  R	4      V P$                  R
&   VP#                  R4      V P$                  R&   VP#                  R4      V P$                  R&   VP#                  RR4      V P$                  R&   VP#                  RR4      V n        VP#                  RR4      V n        R#   + '       g   i     L; i  \        \        P                  3 d0   p\        P                  ! \        \        T4      4        Rp?R # Rp?ii ; i  \        P                   dF   p\        P                  ! \        \        T4      4       \        P                  RT4        Rp?R # Rp?ii ; i)Fz"Running on UpCloud. server_uuid=%szFinding a fallback NICz*Discovering metadata via DHCP interface %sNz7Discovering 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_dataDataSourceUpCloud._get_data>   s   $($5$5$7! 5{C"""		23002		FL$T[[#6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G $F35G ?%H 3G	>G G H!$HHI-(:I((I-c                J    \         P                  ! V P                  4       4      # 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                    V P                   '       d   V P                   # V P                  P                  R4      pV'       g   \        R4      h\        P
                  ! V4      V n         V P                   # )z
Configure the networking. This needs to be done each boot,
since the IP and interface information might have changed
due to reconfiguration.
r7   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   sj     '''!]]..y9!A   )?? 
 ###r'   )r    r   r   r   r   r!   r   r   rH   rG   r   N)__name__
__module____qualname____firstlineno__dsnamer@   r   r-   r2   rN   rS   propertyrY   __static_attributes____classdictcell__)__classdict__s   @r%   r   r      sA     F ""(
+ZO $ $r'   r   c                       ] tR t^tRtRtRtR# )DataSourceUpCloudLocalab  
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.
T N)r[   r\   r]   r^   __doc__r@   ra   rf   r'   r%   re   re      s     r'   re   c                 8    \         P                  ! V \        4      # r)   )r   list_from_dependsdatasources)dependss   &r%   get_datasource_listrl      s    $$Wk::r'   )logging	cloudinitr   rB   r   r   cloudinit.net.dhcpr   cloudinit.net.ephemeralr   cloudinit.sources.helpersr   r*   	getLoggerr[   r>   r   r   r   r   r   r   re   DEP_FILESYSTEMDEP_NETWORKrj   rl   rf   r'   r%   <module>ru      s     % # / 3 :!#%NO  

h$** h$V
. 
 g4467//1D1DEF;r'   