U
    L¬÷d­  ã                   @   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 )ÚDataSourceAliYunZ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 kr d}d}t||ƒS )NÚhostnameFzlocalhost.localdomainT)ÚmetadataÚgetr   )r   ZfqdnZ
resolve_ipZmetadata_onlyr   Z
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 d S ©N)Ú
_is_aliyunÚEC2Z
CloudNamesZALIYUNZNO_EC2_METADATAr
   r	   r	   r   Ú_get_cloud_name%   s    z DataSourceAliYun._get_cloud_nameN)FFF)Ú__name__Ú
__module__Ú__qualname__ZdsnameZmetadata_urlsZ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   Zread_dmi_dataÚALIYUN_PRODUCTr	   r	   r	   r   r   ,   s    r   c                 C   sŽ   g }|   ¡ D ]|\}}t|tƒr.| | ¡ ¡ qt|tƒrD| |¡ qt|tƒr| dg ¡}t|tƒrt| | ¡ ¡ qt|tƒr| |¡ q|S )Nzopenssh-key)	ÚitemsÚ
isinstancer   ÚappendÚstripÚlistÚextendÚdictr   )Zpublic_keysÚkeysZ_key_idZkey_bodyÚkeyr	   r	   r   r   0   s    




r   c                 C   s   t  | t¡S r   )r   Zlist_from_dependsÚdatasources)Zdependsr	   r	   r   Úget_datasource_listG   s    r)   N)Útypingr   Z	cloudinitr   r   Zcloudinit.sourcesr   r   r   r   r   r   r   ZDEP_FILESYSTEMZDEP_NETWORKr(   r)   r	   r	   r	   r   Ú<module>   s    ÿ