U
    Ó‡g  ã                	   @   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 ¡ sÐe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 )é    N)ÚTuple)ÚsourcesÚstagesÚutilÚversionzhttp://169.254.169.254é   é
   é   z"Cloud-Init/%s - OS: %s Variant: %sÚsystemZ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 )NZ
datasourcer   )	Úsuperr   Ú__init__r   ZmergemanydictZ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   sr   d|kr"t  |d ¡ |d | _nt  |d ¡| _|d | _| jd dkrTd| jd< |d | _| jdkrnd | _d S )NZcloud_interfacesZ
interfacesúvendor-datar%   Ú Zguestr$   )r!   Zadd_interface_namesr   Zgenerate_network_configZ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   )Ztmp_dir)r!   r(   r   r   Zget_tmp_exec_pathr,   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"   Zis_baremetalÚget_sysinfor   Zinstance_id_matches_system_uuid)r   r   r1   r   r   r   Úcheck_instance_idg   s    z!DataSourceVultr.check_instance_idc                 C   s   d S r    r   r,   r   r   r   Úlaunch_indexs   s    zDataSourceVultr.launch_indexc                 C   s   | j S r    )r   r,   r   r   r   Únetwork_configw   s    zDataSourceVultr.network_config)Ú__name__Ú
__module__Ú__qualname__Zdsnamer   Ú
DataSourcer   r   ÚstrÚ__annotations__r   Ústaticmethodr#   r-   r+   r(   r3   Úpropertyr4   r5   Ú__classcell__r   r   r   r   r      s   

ÿ


r   c                 C   s   t  | t¡S r    )r   Zlist_from_dependsÚdatasources)Zdependsr   r   r   Úget_datasource_listƒ   s    r@   Ú__main__zMachine is not a Vultr instanceé   T)Zreporterr   r   r   r   r   r.   )!ZloggingÚtypingr   Zcloudinit.sources.helpers.vultrr   Zhelpersr!   Z	cloudinitr   r   r   Z	getLoggerr6   r&   Zversion_stringZsystem_infor   r9   r   ZDEP_FILESYSTEMr?   r@   Úsysr"   ÚprintÚexitZInitr   r(   r0   Zconfigr2   Zsysinfor   r   r   r   Ú<module>   sF   


ýÿûa
ÿ

ú