Ë
    x[hÌ  ã                   óÄ   — d dl Z d dlmc mc mZ d dlmZmZmZ  e j                  e
«      ZddiZdZdZdZdZ G d„ d	ej"                  «      Zeej&                  ffgZd
„ Zy)é    N)Ú	lifecycleÚsourcesÚutilÚmetadata_urlz'http://169.254.169.254/metadata/v1.jsoné   é   Tc                   óZ   ‡ — e Zd ZdZd„ Zdeddfˆ fd„Zd„ Zd„ Zd	„ Z	d
„ Z
ed„ «       Zˆ xZS )ÚDataSourceDigitalOceanÚDigitalOceanc                 ón  — t         j                  j                  | |||«       || _        t	        «       | _        t        j                  t        j                  |ddgi «      t        g«      | _
        | j                  «        | j                  d   | _        | j                  j                  dt        «      | _        | j                  j                  dt         «      | _        | j                  j                  dt$        «      | _        | j                  j                  dt(        «      | _        d | _        d | _        y )NÚ
datasourcer   r   ÚretriesÚtimeoutÚ	use_ip4LLÚ
wait_retry)r   Ú
DataSourceÚ__init__ÚdistroÚdictÚmetadatar   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgÚ
_deprecateÚmetadata_addressÚgetÚ
MD_RETRIESr   Ú
MD_TIMEOUTr   ÚMD_USE_IPV4LLr   ÚMD_WAIT_RETRYr   Ú_network_configÚmetadata_full)ÚselfÚsys_cfgr   Úpathss       úJ/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceDigitalOcean.pyr   zDataSourceDigitalOcean.__init__    sç   € Ü×Ñ×#Ñ# D¨'°6¸5ÔAØˆŒÜ›ˆŒÜ×(Ñ(ä×$Ñ$Ø˜l¨NÐ;¸Róô "ð	ó
ˆŒð 	�‰ÔØ $§¡¨NÑ ;ˆÔØ—{‘{—‘ y´*Ó=ˆŒØ—{‘{—‘ y´*Ó=ˆŒØŸ™Ÿ™¨´mÓDˆŒØŸ+™+Ÿ/™/¨,¼ÓFˆŒØ#ˆÔØ!ˆÕó    Úci_pkl_versionÚreturnNc                 óD   •— t         ‰| �  |«       | j                  «        y ©N)ÚsuperÚ	_unpickler   )r$   r)   Ú	__class__s     €r'   r.   z DataSourceDigitalOcean._unpickle5   s   ø€ Ü‰Ñ˜.Ô)Ø�‰Õr(   c                 ó4   — t        j                  ddd¬«       y )Nr
   z23.2z.Deprecated in favour of DataSourceConfigDrive.)Ú
deprecatedÚdeprecated_versionÚextra_message)r   Ú	deprecate©r$   s    r'   r   z!DataSourceDigitalOcean._deprecate9   s   € Ü×ÑØ/Ø%ØJö	
r(   c                 ó*   — t        j                  «       S r,   )Ú	do_helperÚread_sysinfor5   s    r'   Ú_get_sysinfoz#DataSourceDigitalOcean._get_sysinfo@   s   € Ü×%Ñ%Ó'Ð'r(   c                 ó  — | j                  «       \  }}|syt        j                  d|«       d }| j                  rt	        j
                  | j                  «      }t	        j                  | j                  | j                  | j                  | j                  ¬«      }|| _        |j                  d|«      | j                  d<   |j                  d|«      | j                  d<   |j                  d«      | j                  d<   |j                  d	«      | j                  d
<   |j                  dd«      | j                  d<   |j                  dd «      | _        |j                  dd «      | _        |r t	        j"                  | j                  |«       y)NFz&Running on DigitalOcean. droplet_id=%s)r   Úsec_betweenr   Ú
droplet_idzinstance-idÚhostnamezlocal-hostnameÚ
interfacesÚpublic_keyszpublic-keysÚregionÚdefaultÚavailability_zoneÚvendor_dataÚ	user_dataT)r9   ÚLOGÚinfor   r7   Úassign_ipv4_link_localr   Úread_metadatar   r   r   r   r#   r   r   Úvendordata_rawÚuserdata_rawÚdel_ipv4_link_local)r$   Úis_dor<   Ú
ipv4LL_nicÚmds        r'   Ú	_get_dataz DataSourceDigitalOcean._get_dataC   s?  € Ø"×/Ñ/Ó1Ñˆ�
ñ Øä�‰Ð9¸:ÔFàˆ
Ø�>Š>Ü"×9Ñ9¸$¿+¹+ÓFˆJä×$Ñ$Ø×!Ñ!Ø—L‘LØŸ™Ø—L‘Lô	
ˆð  ˆÔØ')§v¡v¨l¸JÓ'Gˆ�‰�mÑ$Ø*,¯&©&°¸ZÓ*Hˆ�‰Ð&Ñ'Ø&(§f¡f¨\Ó&:ˆ�‰�lÑ#Ø')§v¡v¨mÓ'<ˆ�‰�mÑ$Ø-/¯V©V°H¸iÓ-Hˆ�‰Ð)Ñ*Ø Ÿf™f ]°DÓ9ˆÔØŸF™F ;°Ó5ˆÔáÜ×)Ñ)¨$¯+©+°zÔBàr(   c                 óJ   — t        j                  | j                  «       d«      S )Nzsystem-serial-number)r   Úinstance_id_matches_system_uuidÚget_instance_id)r$   r%   s     r'   Úcheck_instance_idz(DataSourceDigitalOcean.check_instance_ide   s$   € Ü×6Ñ6Ø× Ñ Ó"Ð$:ó
ð 	
r(   c                 ó  — | j                   r| j                   S | j                  j                  d«      }t        j	                  |«       |st        d«      ‚| j                  d   d   }t        j                  ||«      | _         | j                   S )zŸConfigure the networking. This needs to be done each boot, since
        the IP information may have changed due to snapshot and/or
        migration.
        r>   z'Unable to get meta-data from server....ÚdnsÚnameservers)	r"   r   r   rE   ÚdebugÚRuntimeErrorr#   r7   Úconvert_network_configuration)r$   r>   rV   s      r'   Únetwork_configz%DataSourceDigitalOcean.network_configj   sƒ   € ð ×ÒØ×'Ñ'Ð'à—]‘]×&Ñ& |Ó4ˆ
Ü�	‰	�*ÔÙÜÐHÓIÐIà×(Ñ(¨Ñ/°Ñ>ˆÜ(×FÑFØ˜ó 
ˆÔð ×#Ñ#Ð#r(   )Ú__name__Ú
__module__Ú__qualname__Údsnamer   Úintr.   r   r9   rO   rS   ÚpropertyrZ   Ú__classcell__)r/   s   @r'   r
   r
      sI   ø„ à€Fò"ð*¨ð °õ ò
ò(ò òD
ð
 ñ$ó ô$r(   r
   c                 ó6   — t        j                  | t        «      S r,   )r   Úlist_from_dependsÚdatasources)Údependss    r'   Úget_datasource_listrf   ‡   s   € Ü×$Ñ$ W¬kÓ:Ð:r(   )ÚloggingÚ&cloudinit.sources.helpers.digitaloceanr   ÚhelpersÚdigitaloceanr7   Ú	cloudinitr   r   Ú	getLoggerr[   rE   r   r   r   r!   r    r   r
   ÚDEP_FILESYSTEMrd   rf   © r(   r'   ú<module>ro      s‚   ðó ç :Ó :ß .Ñ .à€g×Ñ˜Ó!€ð Ð=ðÐ ð €
Ø€
Ø€Ø€ôa$˜W×/Ñ/ô a$ðL ˜g×4Ñ4Ð6Ð7ð€ó;r(   