509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
\¼me�  ã               @   st   d dl Z d dljjjZd dlmZmZ e je	ƒZ
ddiZdZdZdZdZG dd	„ d	ejƒZeejffgZd
d„ ZdS )é    N)ÚsourcesÚutilÚmetadata_urlz'http://169.254.169.254/metadata/v1.jsoné   é   Tc                   s\   e Zd ZdZdd„ Zeddœ‡ fdd„Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
edd„ ƒZ‡  ZS )ÚDataSourceDigitalOceanÚDigitalOceanc             C   sœ   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 S )NZ
datasourcer   r   ÚretriesÚtimeoutÚ	use_ip4LLÚ
wait_retry)r   Ú
DataSourceÚ__init__ÚdistroÚdictÚmetadatar   ZmergemanydictZget_cfg_by_pathÚBUILTIN_DS_CONFIGZds_cfgÚ
_deprecateÚmetadata_addressÚgetÚ
MD_RETRIESr	   Ú
MD_TIMEOUTr
   ÚMD_USE_IPV4LLr   ÚMD_WAIT_RETRYr   Ú_network_config)ÚselfÚsys_cfgr   Úpaths© r   ú,/usr/lib/python3.6/DataSourceDigitalOcean.pyr       s    
zDataSourceDigitalOcean.__init__N)Úci_pkl_versionÚreturnc                s   t ƒ j|ƒ | jƒ  d S )N)ÚsuperÚ	_unpickler   )r   r    )Ú	__class__r   r   r#   4   s    z DataSourceDigitalOcean._unpicklec             C   s   t jdddd� d S )Nr   z23.2z.Deprecated in favour of DataSourceConfigDrive.)Z
deprecatedZdeprecated_versionZextra_message)r   Z	deprecate)r   r   r   r   r   8   s    z!DataSourceDigitalOcean._deprecatec             C   s   t jƒ S )N)Ú	do_helperZread_sysinfo)r   r   r   r   Ú_get_sysinfo?   s    z#DataSourceDigitalOcean._get_sysinfoc             C   sÚ   | j ƒ \}}|sdS tjd|ƒ d }| jr6tj| jƒ}tj| j| j	| j
| jd�}|| _|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|ƒ dS )NFz&Running on DigitalOcean. droplet_id=%s)r
   Zsec_betweenr	   Ú
droplet_idzinstance-idZhostnamezlocal-hostnameÚ
interfacesZpublic_keyszpublic-keysZregionÚdefaultZavailability_zoneZvendor_dataZ	user_dataT)r&   ÚLOGÚinfor   r%   Zassign_ipv4_link_localr   Zread_metadatar   r
   r   r	   Úmetadata_fullr   r   Zvendordata_rawZuserdata_rawZdel_ipv4_link_local)r   Zis_dor'   Z
ipv4LL_nicZmdr   r   r   Ú	_get_dataB   s.    

z DataSourceDigitalOcean._get_datac             C   s   t j| jƒ dƒS )Nzsystem-serial-number)r   Zinstance_id_matches_system_uuidZget_instance_id)r   r   r   r   r   Úcheck_instance_idd   s    z(DataSourceDigitalOcean.check_instance_idc             C   sP   | 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....ZdnsÚnameservers)	r   r   r   r*   ÚdebugÚRuntimeErrorr,   r%   Zconvert_network_configuration)r   r(   r/   r   r   r   Únetwork_configi   s    

z%DataSourceDigitalOcean.network_config)Ú__name__Ú
__module__Ú__qualname__Zdsnamer   Úintr#   r   r&   r-   r.   Úpropertyr2   Ú__classcell__r   r   )r$   r   r      s   "r   c             C   s   t j| tƒS )N)r   Zlist_from_dependsÚdatasources)Zdependsr   r   r   Úget_datasource_list†   s    r:   )ZloggingZ&cloudinit.sources.helpers.digitaloceanr   ZhelpersZdigitaloceanr%   Z	cloudinitr   Z	getLoggerr3   r*   r   r   r   r   r   r   r   ZDEP_FILESYSTEMr9   r:   r   r   r   r   Ú<module>	   s   
e