
    f                         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                   B    e Zd ZdZd Zd Zd Zed        Ze	d        Z
y)DataSourceNWCSNWCSc                 <   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*                  | _        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)selfsys_cfgr   pathss       B/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNWCS.pyr   zDataSourceNWCS.__init__   s    ##D'65A(($$W|V.DbI!
 !%N ;{{y*={{y*=++//,F&}},,    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RuntimeErrormetadata_fullr   r!   userdata_rawvendordata_raw)r)   mds     r,   	_get_datazDataSourceNWCS._get_data/   s     :788')-'8m$')-'8m$#%i=i *,Z.&'FF:t4 ff\48r-   c                    	 t         j                  d       t        | j                  t	        j
                         dt        dz   i      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_url_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   ProcessExecutionErrorr4   r   RequestExceptionerror)r)   es     r,   r3   zDataSourceNWCS.get_metadataB   s    	HH:; ++-;)@@'  %)) LL $ LL	   &&''	
 	 II(!,	s6   AB 
7B	B BB B -C CC c                    t         j                  d       | j                  9t         j                  dt        j
                         t        j
                  | _        | 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 configurationz5Found None as cached _network_config, resetting to %sr/   configz"Unable to get metadata from servermac_addresszOverriding %s with %sname)
r@   debugr&   warningr   r%   r   r4   get_interface_namerA   )r)   i
iface_names      r,   network_configzDataSourceNWCS.network_config]   s    		45'KKG $+==D 7==0'''}}Y'1CDD y)(3 	'A+Am,<=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_detectz   s    **+@AAAr-   N)__name__
__module____qualname__dsnamer   r9   r3   propertyrR   staticmethodrV   rU   r-   r,   r   r      s@    F-"&6 $ $8 B Br-   r   c                 V    t        j                         }| |vry |j                  |       S N)r   get_interfaces_by_macr!   )macmacs_to_nics     r,   rO   rO      s*    ++-K
+??3r-   c                 6    t        j                  | t              S r^   )r   list_from_dependsdatasources)dependss    r,   get_datasource_listrf      s    $$Wk::r-   c                     t        j                  | |||      }|j                         st        d| z        t	        j
                  |j                  j                               S )Nr>   zunable to read metadata at %s)r   readurlokr4   r	   	load_jsoncontentsdecode)r;   r   r?   r   responses        r,   rD   rD      sU    !!W+wH ;;=:S@AA>>(++22455r-   )   rn   r   )loggingrequestsr   	cloudinitr   r   r   r   r   r	   cloudinit.net.dhcpr
   cloudinit.net.ephemeralr   	getLoggerrW   r@   rC   r   r"   r#   r$   r   r   rO   rf   rD   DEP_FILESYSTEMrd   rU   r-   r,   <module>rv      s   
   ? ? / 3g!- K+-  

bBW'' bBJ ;6 g,,./r-   