Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceCloudSigma.cpython-38.pyc

U

�Ad�@s�ddlZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZmZe�
e�ZGdd	�d	ej�ZeZeejffgZd
d�ZdS)�N)�	b64decode)�dmi)�log)�sources)�DataSourceHostname)�SERIAL_PORT�Cepkoc@sNeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zddd
�Z	dd�Z
dd�ZdS)�DataSourceCloudSigmaz�
    Uses cepko in order to gather the server context from the VM.

    For more information about CloudSigma's Server Context:
    http://cloudsigma-docs.readthedocs.org/en/latest/server_context.html
    Z
CloudSigmacCs$t�|_d|_tj�||||�dS)N�)r�cepko�ssh_public_keyr�
DataSource�__init__)�selfZsys_cfgZdistro�paths�r�H/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceCloudSigma.pyrszDataSourceCloudSigma.__init__cCs>t�d�t�d�}|s&t�d�dSt�d|�d|��kS)z
        Uses dmi data to detect if this instance of cloud-init is running
        in the CloudSigma's infrastructure.
        z0determining hypervisor product name via dmi datazsystem-product-namez-system-product-name not available in dmi dataFzdetected hypervisor as %sZ
cloudsigma)�LOG�debugrZ
read_dmi_data�lower)rZsys_product_namerrr�is_running_in_cloudsigma"s


z-DataSourceCloudSigma.is_running_in_cloudsigmacCs�d}|��sdSz|j��j}|d}Wn tk
rHt�d�YdSX|�|�d�g�|_	|t
jkrldS|�dd��d�}|�d	d�|_
d	|kr�t|j
�|_
d
|�di�kr�|dd
|_||_|d|_d
S)zj
        Metadata is the whole server context and /meta/cloud-config is used
        as userdata.
        NF�metaz+CloudSigma: Unable to read from serial portzcloudinit-dsmode�
base64_fieldsr
�,zcloudinit-user-data�	cloudinitZvendor_datarT)rr�all�result�	ExceptionrrZ_determine_dsmode�get�dsmoderZDSMODE_DISABLED�splitZuserdata_rawrZvendordata_raw�metadatar)rrZserver_contextZserver_metarrrr�	_get_data0s.

�

zDataSourceCloudSigma._get_datacCsdtS)z/Return the subplatform metadata source details.z
cepko (%s))r�rrrr�_get_subplatformTsz%DataSourceCloudSigma._get_subplatformFcCsDt�d|jd�r&|jddd�}n|jd�d�d}t|d�S)	z�
        Cleans up and uses the server's name if the latter is set. Otherwise
        the first part from uuid is being used.
        z^[A-Za-z0-9 -_\.]+$�nameN�=�uuid�-rF)�re�matchr!r r)rZfqdnZ
resolve_ipZ
metadata_onlyZretrrr�get_hostnameXsz!DataSourceCloudSigma.get_hostnamecCs|jgS)N)rr#rrr�get_public_ssh_keyscsz(DataSourceCloudSigma.get_public_ssh_keyscCs
|jdS)Nr')r!r#rrr�get_instance_idfsz$DataSourceCloudSigma.get_instance_idN)FFF)�__name__�
__module__�__qualname__�__doc__Zdsnamerrr"r$r+r,r-rrrrr	s$
r	cCst�|t�S)zK
    Return a list of data sources that match this set of dependencies
    )rZlist_from_depends�datasources)Zdependsrrr�get_datasource_listtsr3)r)�base64rrrrZloggingrZcloudinit.sourcesrZ$cloudinit.sources.helpers.cloudsigmarrZ	getLoggerr.rr
r	ZDataSourceCloudSigmaNetZDEP_FILESYSTEMr2r3rrrr�<module>s
X
�