o
    wÚ7e­  ã                   @   sx   d dl mZ d dlmZmZ d dlmZ d dlmZ dZ	G dd„ dejƒZ
dd	„ Zd
d„ Ze
ejejffgZdd„ ZdS )é    )ÚList)ÚdmiÚsources)ÚDataSourceEc2)ÚDataSourceHostnamezAlibaba Cloud ECSc                   @   sR   e Zd ZU dZdgZdZg Zee e	d< e
dd„ ƒZddd	„Zd
d„ Zdd„ ZdS )ÚDataSourceAliYunÚAliYunzhttp://100.100.100.200z
2016-01-01Úextended_metadata_versionsc                 C   s   dS )NzX-aliyun-ecs-metadata-token© ©Úselfr
   r
   úD/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAliYun.pyÚimdsv2_token_put_header   s   z(DataSourceAliYun.imdsv2_token_put_headerFc                 C   s*   | j  d¡}d}|d u rd}d}t||ƒS )NÚhostnameFzlocalhost.localdomainT)ÚmetadataÚgetr   )r   ÚfqdnÚ
resolve_ipÚmetadata_onlyr   Ú
is_defaultr
   r
   r   Úget_hostname   s   
zDataSourceAliYun.get_hostnamec                 C   s   t | j di ¡ƒS )Nzpublic-keys)Úparse_public_keysr   r   r   r
   r
   r   Úget_public_ssh_keys"   s   z$DataSourceAliYun.get_public_ssh_keysc                 C   s   t ƒ rtjjS tjjS ©N)Ú
_is_aliyunÚEC2Ú
CloudNamesÚALIYUNÚNO_EC2_METADATAr   r
   r
   r   Ú_get_cloud_name%   s   z DataSourceAliYun._get_cloud_nameN)FFF)Ú__name__Ú
__module__Ú__qualname__ÚdsnameÚmetadata_urlsÚmin_metadata_versionr	   r   ÚstrÚ__annotations__Úpropertyr   r   r   r   r
   r
   r
   r   r      s   
 

r   c                   C   s   t  d¡tkS )Nzsystem-product-name)r   Úread_dmi_dataÚALIYUN_PRODUCTr
   r
   r
   r   r   ,   s   r   c                 C   sŽ   g }|   ¡ D ]>\}}t|tƒr| | ¡ ¡ qt|tƒr"| |¡ qt|tƒrD| dg ¡}t|tƒr:| | ¡ ¡ qt|tƒrD| |¡ q|S )Nzopenssh-key)	ÚitemsÚ
isinstancer&   ÚappendÚstripÚlistÚextendÚdictr   )Úpublic_keysÚkeysÚ_key_idÚkey_bodyÚkeyr
   r
   r   r   0   s   





€r   c                 C   s   t  | t¡S r   )r   Úlist_from_dependsÚdatasources)Údependsr
   r
   r   Úget_datasource_listG   s   r:   N)Útypingr   Ú	cloudinitr   r   Úcloudinit.sourcesr   r   r   r*   r   r   r   ÚDEP_FILESYSTEMÚDEP_NETWORKr8   r:   r
   r
   r
   r   Ú<module>   s    ÿ