
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me                 @   s   d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z d dl	mZ e jeZdZG dd	 d	ej
Zd
d Zdd ZG dd deZeejffeejejffgZdd ZdS )    N)List)dmisources)
EventScope	EventType)DataSourceEc2)DataSourceHostnamezAlibaba Cloud ECSc                   s^   e Zd ZU dZdgZdZg Zee e	dd Z
 fddZdd	d
Zdd Zdd Z  ZS )DataSourceAliYunZAliYunzhttp://100.100.100.200z
2016-01-01c             C   s   dS )NzX-aliyun-ecs-metadata-token )selfr
   r
   &/usr/lib/python3.6/DataSourceAliYun.pyimdsv2_token_put_header   s    z(DataSourceAliYun.imdsv2_token_put_headerc                s,   t t| j||| | jtj jtj d S )N)	superr	   __init__Zdefault_update_eventsr   ZNETWORKaddr   ZBOOT)r   Zsys_cfgZdistropaths)	__class__r
   r   r      s    zDataSourceAliYun.__init__Fc             C   s*   | j 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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_METADATA)r   r
   r
   r   _get_cloud_name-   s    z DataSourceAliYun._get_cloud_name)FFF)__name__
__module____qualname__ZdsnameZmetadata_urlsZmin_metadata_versionZextended_metadata_versionsr   strpropertyr   r   r   r   r   __classcell__r
   r
   )r   r   r	      s   

r	   c               C   s   t jdtkS )Nzsystem-product-name)r   Zread_dmi_dataALIYUN_PRODUCTr
   r
   r
   r   r   4   s    r   c             C   s   g }x| j  D ]|\}}t|tr0|j|j  qt|trF|j| qt|tr|jdg }t|trv|j|j  qt|tr|j| qW |S )Nzopenssh-key)	items
isinstancer   appendstriplistextenddictr   )Zpublic_keyskeysZ_key_idZkey_bodykeyr
   r
   r   r   8   s    




r   c               @   s   e Zd ZdZdZdS )DataSourceAliYunLocalay  Datasource run at init-local which sets up network to query metadata.

    In init-local, no network is available. This subclass sets up minimal
    networking with dhclient on a viable nic so that it can talk to the
    metadata service. If the metadata service provides network configuration
    then render the network configuration for that instance based on metadata.
    TN)r   r   r   __doc__Zperform_dhcp_setupr
   r
   r
   r   r,   H   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typingr   Z	cloudinitr   r   Zcloudinit.eventr   r   Zcloudinit.sourcesr   r   r   Z	getLoggerr   ZLOGr"   r	   r   r   r,   ZDEP_FILESYSTEMZDEP_NETWORKr.   r/   r
   r
   r
   r   <module>   s   
$
