
    x[h                         S SK r S SKJr  S SKJrJrJrJrJrJ	r	  S SK
Jr  S SKJr  \ R                  " \5      rSrS\S-   0rS	rS
rS
r " S S\R,                  5      rS rS rSS jr\\R6                  44/rg)    N)
exceptions)dminetsourcessubp
url_helperutil)NoDHCPLeaseError)EphemeralDHCPv4zhttp://169.254.169.254/api/v1metadata_urlz	/metadata      c                   j   ^  \ rS rSrSrS rS\SS4U 4S jjrS rS	 r	\
S
 5       r\S 5       rSrU =r$ )DataSourceNWCS   NWCSc                 H   [         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        [         R&                  U l        [         R*                  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   UNSET_network_configDSMODE_NETWORKdsmodemetadata_full)selfsys_cfgr   pathss       B/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceNWCS.pyr   DataSourceNWCS.__init__   s    ##D6A(($$W|V.DbI!
 !%N ;{{y*={{y*=++//,F&}},,!    ci_pkl_versionreturnNc                 r   > [         TU ]  U5        U R                  (       d  [        R                  U l        g g N)super	_unpickler'   r   r&   )r+   r1   	__class__s     r.   r6   DataSourceNWCS._unpickle0   s*    .)###*==D  $r0   c                 8   U R                  5       nUc  [        S5      eXl        US   U R                  S'   US   U R                  S'   US   U R                  S'   US   U R                  S'   UR	                  SS 5      U l        UR	                  SS 5      U l        g	)
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_dataDataSourceNWCS._get_data5   s     :788')-'8m$')-'8m$#%i=i *,Z.&'FF:t4 ff\48r0   c                     [         R                  S5        [        U R                  [        R
                  " 5       S[        S-   0/S9   [        U R                  U R                  U R                  U R                  S9sS S S 5        $ ! , (       d  f       g = f! [        [        R                  [        [         R"                  4 a  n[         R%                  SU5        e S nAff = f)Nz#Attempting to get metadata via DHCPurlz/metadata/instance-id)ifaceconnectivity_urls_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>   DataSourceNWCS.get_metadataH   s    	HH:; ++- {-DD( %)) LL $ LL	  " &&''	
 	 II(!,	s6   AB 	4B=	B 
BB B .C"CC"c                    [         R                  S5        U R                  [        R                  :w  a  U R                  $ U R
                  S   S   (       d  [        S5      eU R
                  S   S    H8  n[        US   5      nU(       d  M  [         R                  SUS   U5        X!S'   M:     U R
                  S   U l        U R                  $ )Nz Attempting network configurationr:   configz"Unable to get metadata from servermac_addresszOverriding %s with %sname)	rK   debugr'   r   r&   r   r?   get_interface_namerL   )r+   i
iface_names      r.   network_configDataSourceNWCS.network_confige   s    		457==0'''}}Y'1CDD y)(3A+Am,<=Jz0!F)ZH&&	 4  $}}Y7###r0   c                  4    S[         R                  " S5      :H  $ )Nr   zsystem-manufacturer)r   read_dmi_data r0   r.   	ds_detectDataSourceNWCS.ds_detect{   s    **+@AAAr0   )r'   r   r    r)   r   r!   r*   r   r   r@   rA   r   )__name__
__module____qualname____firstlineno__dsnamer   intr6   rC   r>   propertyr]   staticmethodrb   __static_attributes____classcell__)r7   s   @r.   r   r      sT    F"$1 1 1
&: $ $* B Br0   r   c                 Z    [         R                  " 5       nX;  a  g UR                  U 5      $ r4   )r   get_interfaces_by_macr"   )macmacs_to_nics     r.   rZ   rZ      s(    ++-K
??3r0   c                 8    [         R                  " U [        5      $ r4   )r   list_from_dependsdatasources)dependss    r.   get_datasource_listrv      s    $$Wk::r0   c                     [         R                  " XX#S9nUR                  5       (       d  [        SU -  5      e[        R
                  " UR                  R                  5       5      $ )NrI   zunable to read metadata at %s)r   readurlokr?   r	   	load_jsoncontentsdecode)rF   r   rJ   r   responses        r.   rO   rO      sS    !!+H ;;==:S@AA>>(++22455r0   )   r~   r   )loggingrequestsr   	cloudinitr   r   r   r   r   r	   cloudinit.net.dhcpr
   cloudinit.net.ephemeralr   	getLoggerrd   rK   rN   r   r#   r$   r%   r   r   rZ   rv   rO   DEP_FILESYSTEMrt   ra   r0   r.   <module>r      s   
   ? ? / 3!- K+-  

cBW'' cBL ;6 g,,./r0   