o
    x[h  ã                	   @   s  d dl Z d dlmZ d dlm  m  mZ d dlmZmZm	Z	m
Z
 e  e¡Zddddde
 ¡ e	 ¡ d	 e	 ¡ d
 f dœZG dd„ dejƒZeejffgZdd„ ZedkrŒd dlZe ¡ sgedƒ e d¡ ejdd�jZe eed ed ed ed ed ¡Zed Ze ¡ Z dS dS )é    N)ÚTuple)ÚsourcesÚstagesÚutilÚversionzhttp://169.254.169.254é   é
   é   z"Cloud-Init/%s - OS: %s Variant: %sÚsystemÚvariant)ÚurlÚretriesÚtimeoutÚwaitú
user-agentc                       s‚   e Zd ZU dZejjd Zeedf e	d< ‡ fdd„Z
edd„ ƒZd	d
„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZ‡  ZS )ÚDataSourceVultrÚVultr)zstartup-script.Úsensitive_metadata_keysc                    s<   t t| ƒ |||¡ t t |ddgi ¡tg¡| _d | _d S )NÚ
datasourcer   )	Úsuperr   Ú__init__r   ÚmergemanydictÚget_cfg_by_pathÚBUILTIN_DS_CONFIGÚds_cfgÚnetcfg)ÚselfÚsys_cfgÚdistroÚpaths©Ú	__class__© úC/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceVultr.pyr   %   s   þÿ
zDataSourceVultr.__init__c                   C   s   t  ¡ S ©N)ÚvultrÚis_vultrr"   r"   r"   r#   Ú	ds_detect/   s   zDataSourceVultr.ds_detectc                 C   sT   t  d¡ |  ¡ | _| jd | _|  | j¡ t  d| jd ¡ t  d| jd ¡ dS )NzMachine is a Vultr instanceú	user-dataz	SUBID: %szinstance-idzHostname: %súlocal-hostnameT)ÚLOGÚdebugÚget_metadataÚmetadataÚuserdata_rawÚget_datasource_data©r   r"   r"   r#   Ú	_get_data4   s   

zDataSourceVultr._get_datac                 C   sv   d|v rt  |d ¡ |d | _nt  |d ¡| _|d | _| jd dkr*d| jd< |d | _| jdkr9d | _d S d S )NÚcloud_interfacesÚ
interfacesúvendor-datar)   Ú Úguestr(   )r%   Úadd_interface_namesr   Úgenerate_network_configÚvendordata_rawr-   r.   )r   Úmdr"   r"   r#   r/   F   s   




ÿz#DataSourceVultr.get_datasource_datac              	   C   s>   t j| j| jd | jd | jd | jd | jd | j ¡ d�S )Nr   r   r   r   r   )Útmp_dir)r%   r,   r   r   Úget_tmp_exec_pathr0   r"   r"   r#   r,   [   s   ùzDataSourceVultr.get_metadatac                 C   s.   t  ¡ sdS t  ¡ rdS t  ¡ d }t |¡S )NFÚsubid)r%   r&   Úis_baremetalÚget_sysinfor   Úinstance_id_matches_system_uuid)r   r   r=   r"   r"   r#   Úcheck_instance_idg   s   
z!DataSourceVultr.check_instance_idc                 C   s   d S r$   r"   r0   r"   r"   r#   Úlaunch_indexs   s   zDataSourceVultr.launch_indexc                 C   s   | j S r$   )r   r0   r"   r"   r#   Únetwork_configw   s   zDataSourceVultr.network_config)Ú__name__Ú
__module__Ú__qualname__Údsnamer   Ú
DataSourcer   r   ÚstrÚ__annotations__r   Ústaticmethodr'   r1   r/   r,   rA   ÚpropertyrB   rC   Ú__classcell__r"   r"   r    r#   r      s   
 
ÿ


r   c                 C   s   t  | t¡S r$   )r   Úlist_from_dependsÚdatasources)Údependsr"   r"   r#   Úget_datasource_listƒ   s   rQ   Ú__main__zMachine is not a Vultr instanceé   T)Úreporterr   r   r   r   r   r4   )!ÚloggingÚtypingr   Úcloudinit.sources.helpers.vultrr   Úhelpersr%   Ú	cloudinitr   r   r   Ú	getLoggerrD   r*   Úversion_stringÚsystem_infor   rH   r   ÚDEP_FILESYSTEMrO   rQ   Úsysr&   ÚprintÚexitÚInitr   r,   r:   Úconfigr?   Úsysinfor"   r"   r"   r#   Ú<module>   sJ   


ýÿû
aÿ
úè