3
\¼meÝ ã @ s´ d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl m
Z d dl mZ e j
eƒZdZG dd „ d ej
ƒZd
d„ Zdd
„ ZG dd„ deƒZeejffeejejffgZdd„ ZdS )é N)ÚList)ÚdmiÚsources)Ú
EventScopeÚ EventType)Ú
DataSourceEc2)ÚDataSourceHostnamezAlibaba Cloud ECSc s^ e Zd ZU dZdgZdZg Zee e dd„ ƒZ
‡ fdd„Zdd d
„Zdd„ Z
d
d„ Z‡ ZS )ÚDataSourceAliYunZAliYunzhttp://100.100.100.200z
2016-01-01c C s dS )NzX-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|||ƒ | jtj jtjƒ d S )N) Úsuperr Ú__init__Zdefault_update_eventsr ZNETWORKÚaddr ZBOOT)r Zsys_cfgZdistroÚpaths)Ú __class__r
r r s zDataSourceAliYun.__init__Fc C s* | j jdƒ}d}|d kr d}d}t||ƒS )NÚhostnameFzlocalhost.localdomainT)ÚmetadataÚgetr )r ZfqdnZ
resolve_ipZ
metadata_onlyr Z
is_defaultr
r
r Úget_hostname" s zDataSourceAliYun.get_hostnamec C s t | jjdi ƒƒS )Nzpublic-keys)Úparse_public_keysr r )r r
r
r Úget_public_ssh_keys* s z$DataSourceAliYun.get_public_ssh_keysc C s t ƒ rtjjS tjjS d S )N)Ú
_is_aliyunÚEC2Z
CloudNamesZALIYUNZNO_EC2_METADATA)r r
r
r Ú_get_cloud_name- s z DataSourceAliYun._get_cloud_name)FFF)Ú__name__Ú
__module__Ú__qualname__ZdsnameZ
metadata_urlsZmin_metadata_versionZextended_metadata_versionsr ÚstrÚpropertyr
r r r r Ú
__classcell__r
r
)r r r s
r c C s t jdƒtkS )Nzsystem-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ƒ ƒ qt|tƒrF|j|ƒ qt|tƒr|jdg ƒ}t|tƒrv|j|jƒ ƒ qt|tƒr|j|ƒ qW |S )Nzopenssh-key) ÚitemsÚ
isinstancer ÚappendÚstripÚlistÚextendÚdictr )Zpublic_keysÚkeysZ_key_idZkey_bodyÚkeyr
r
r r 8 s
r c @ s e Zd ZdZdZdS )Ú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__Zperform_dhcp_setupr
r
r
r r, H s r, c C s t j| tƒS )N)r Zlist_from_dependsÚdatasources)Zdependsr
r
r Úget_datasource_list[ s r/ )ZloggingZtypingr Z cloudinitr r Zcloudinit.eventr r Zcloudinit.sourcesr r r Z getLoggerr ZLOGr" r r r r, ZDEP_FILESYSTEMZDEP_NETWORKr. r/ r
r
r
r Ú