
    }fp                         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                   ^     e Zd ZdZd Zdeddf fdZd Zd Ze	d	        Z
ed
        Z xZS )DataSourceNWCSNWCSc                 J   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*                  | _        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   UNSET_network_configDSMODE_NETWORKdsmodemetadata_full)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&}},,!    ci_pkl_versionreturnNc                 h    t         |   |       | j                  st        j                  | _        y y N)super	_unpickler&   r   r%   )r*   r/   	__class__s     r-   r4   zDataSourceNWCS._unpickle0   s*    .)###*==D  $r.   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RuntimeErrorr)   r   r!   userdata_rawvendordata_raw)r*   mds     r-   	_get_datazDataSourceNWCS._get_data5   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   ProcessExecutionErrorr<   r   RequestExceptionerror)r*   es     r-   r;   zDataSourceNWCS.get_metadataH   s    	HH:; ++-;)@@'  %)) LL $ LL	   &&''	
 	 II(!,	s6   AB 
7B	B BB B -C CC c                    t         j                  d       | 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 configurationr7   configz"Unable to get metadata from servermac_addresszOverriding %s with %sname)	rG   debugr&   r   r%   r   r<   get_interface_namerH   )r*   i
iface_names      r-   network_configzDataSourceNWCS.network_configc   s    		45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_detecty   s    **+@AAAr.   )__name__
__module____qualname__dsnamer   intr4   r@   r;   propertyrX   staticmethodr\   __classcell__)r5   s   @r-   r   r      sT    F"$1 1 1
&6 $ $* B Br.   r   c                 V    t        j                         }| |vry |j                  |       S r2   )r   get_interfaces_by_macr!   )macmacs_to_nics     r-   rU   rU   ~   s*    ++-K
+??3r.   c                 6    t        j                  | t              S r2   )r   list_from_dependsdatasources)dependss    r-   get_datasource_listrm      s    $$Wk::r.   c                     t        j                  | |||      }|j                         st        d| z        t	        j
                  |j                  j                               S )NrE   zunable to read metadata at %s)r   readurlokr<   r	   	load_jsoncontentsdecode)rB   r   rF   r   responses        r-   rK   rK      sU    !!W+wH ;;=:S@AA>>(++22455r.   )   ru   r   )loggingrequestsr   	cloudinitr   r   r   r   r   r	   cloudinit.net.dhcpr
   cloudinit.net.ephemeralr   	getLoggerr]   rG   rJ   r   r"   r#   r$   r   r   rU   rm   rK   DEP_FILESYSTEMrk   r[   r.   r-   <module>r}      s   
   ? ? / 3g!- K+-  

aBW'' aBH ;6 g,,./r.   