Spamworldpro Mini Shell
Spamworldpro


Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.21
Disable Function : NONE
Directory :  /lib/python3/dist-packages/cloudinit/sources/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-310.pyc
o

}��fE�	@sVdZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
ddlmZm
Z
mZmZmZmZmZddlZddlmZddlmZddlmZdd	lmZmZmZmZmZdd
l m!Z!e�"e#�Z$dZ%dZ&d
Z'ddddddd�Z(de)fdd�Z*	d;deee)de
e)effdd�Z+Gdd�de�Z,Gdd�de�Z-Gdd�de�Z.de)de/fdd �Z0Gd!d"�d"ej1�Z2de3fd#d$�Z4	%d<d&ej5d'e)d(e3fd)d*�Z6	%d<d&ej5d'e)d(e3dej7fd+d,�Z8Gd-d.�d.e�Z9Gd/d0�d0�Z:e&e9j;fd1e)d2e9de/fd3d4�Z<e2ej=ffgZ>d5d6�Z?e#d7k�r)ddl@Z@d8ZAe@jBeAd9�ZCeC�D�eEe�Fe<e9j;d:���dSdS)=a�Datasource for LXD, reads /dev/lxd/sock representation of instance data.

Notes:
 * This datasource replaces previous NoCloud datasource for LXD.
 * Older LXD images may not have updates for cloud-init so NoCloud may
   still be detected on those images.
 * Detect LXD datasource when /dev/lxd/sock is an active socket file.
 * Info on dev-lxd API: https://documentation.ubuntu.com/lxd/en/latest/dev-lxd/
�N)�Flag�auto)�JSONDecodeError)�Any�Dict�List�Optional�Tuple�Union�cast)�HTTPAdapter)�HTTPConnection)�HTTPConnectionPool)�
atomic_helper�sources�subp�
url_helper�util)�find_fallback_nicz
/dev/lxd/sockz1.0z
http://lxd�	user-data�network-config�vendor-data)�cloud-init.user-datazcloud-init.network-config�cloud-init.vendor-data�user.user-datazuser.network-config�user.vendor-data�returnc
Cs�d}t�d�rIz
t�dg�\}}Wntjy,}zt�d|�|WYd}~Sd}~ww|��dvrIt��dd}|dkrAdS|d	krGd
SdS|S)N�eth0zsystemd-detect-virtzHUnable to run systemd-detect-virt: %s. Rendering default network config.)�kvm�qemu�uname��ppc64le�enp0s5�s390x�enc9�enp5s0)r�which�ProcessExecutionError�LOG�warning�stripr�system_info)�default_name�	virt_type�_�err�arch�r2�A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceLXD.py�_get_fallback_interface_name/s(
���r4�nicscCsFt�}|rt�d|�n	t�}t�d|�dd|ddd�gd�gd	�S)
zCReturn network config V1 dict representing instance network config.zCLXD datasource generating network from discovered active device: %szVLXD datasource generating network from systemd-detect-virt platform default device: %s��physical�dhcpr)�type�control)r9�name�subnets)�version�config)rr)�debugr4)r5�primary_nicr2r2r3�generate_network_configIs$��
���rAc�$eZdZ�fdd�Zdd�Z�ZS)�SocketHTTPConnectioncst��d�||_d|_dS�N�	localhost)�super�__init__�socket_path�sock��selfrH��	__class__r2r3rGps
zSocketHTTPConnection.__init__cCs$t�tjtj�|_|j�|j�dS�N)�socket�AF_UNIX�SOCK_STREAMrI�connectrH�rKr2r2r3rRuszSocketHTTPConnection.connect)�__name__�
__module__�__qualname__rGrR�
__classcell__r2r2rLr3rCosrCcrB)�SocketConnectionPoolcs||_t��d�dSrD)rHrFrGrJrLr2r3rG{szSocketConnectionPool.__init__cCs
t|j�SrN)rCrHrSr2r2r3�	_new_conns
zSocketConnectionPool._new_conn)rTrUrVrGrYrWr2r2rLr3rXzsrXc@s"eZdZddd�Z	ddd�ZdS)�LXDSocketAdapterNcCstt�SrN)rX�LXD_SOCKET_PATH)rK�url�proxiesr2r2r3�get_connection�szLXDSocketAdapter.get_connectioncCs|�|j|�SrN)r^r\)rK�request�verifyr]�certr2r2r3�get_connection_with_tls_context�sz0LXDSocketAdapter.get_connection_with_tls_contextrN)NN)rTrUrVr^rbr2r2r2r3rZ�s
�rZ�
metadata_typec
Csxt|t�r|S|dur
iSzt�|�}Wnty+}zt�dj||d��|�d}~ww|dur:t�dj||d���|S)a6Convert raw instance data from str, bytes, YAML to dict

    :param metadata_type: string, one of as: meta-data, vendor-data, user-data
        network-config

    :param metadata_value: str, bytes or dict representing or instance-data.

    :raises: InvalidMetaDataError on invalid instance-data content.
    NzAInvalid {md_type}. Expected str, bytes or dict but found: {value})�md_type�valuez:Invalid {md_type} format. Expected YAML but found: {value})�
isinstance�dictr�	load_yaml�AttributeErrorr�InvalidMetaDataException�format)rc�metadata_value�parsed_metadata�excr2r2r3�_raw_instance_data_to_dict�s.

�������rocs�eZdZUdZejZeee	fe
d<ejZeeee	fe
d<ej
jdZee	dfe
d<dZded	d
f�fdd�Zed	efd
d��Zd	efdd�Zd	e	fdd�Zd	e	fdd�Zed	efdd��Z�ZS)�
DataSourceLXD�LXD�_network_config�_crawled_metadata)�user.meta-datarrrr.�sensitive_metadata_keysT�ci_pkl_versionrNcst��|�d|_dS)NT)rF�	_unpickle�skip_hotplug_detect)rKrvrLr2r3rw�s
zDataSourceLXD._unpicklecCst�S)z@Check platform environment to report if this datasource may run.)�is_platform_viabler2r2r2r3�	ds_detect�szDataSourceLXD.ds_detectcCs�tjtjdtd�|_td|j�d��|_|j�di�}|�di�}|r(td|�}d|jvr3|jd|_	d|jvrAtd|jd�|_
d|jvrL|jd|_d	S)
z=Crawl LXD socket API instance data and return True on successzCrawl of metadata service)�logfunc�msg�func�	meta-datar>rtrrrT)r�log_timer)r?�
read_metadatarsro�get�metadata�userdata_rawrr�vendordata_raw)rKr>�
user_metadatar2r2r3�	_get_data�s.���


�
zDataSourceLXD._get_datacCsdjttd�S)z.Return subplatform details for this datasourcez"LXD socket API v. {ver} ({socket}))�verrO)rk�LXD_SOCKET_API_VERSIONr[rSr2r2r3�_get_subplatform�s�zDataSourceLXD._get_subplatformcCsBttjd�}|�di�}t|t�st�|�}|�d�|j�d�kS)z%Return True if instance_id unchanged.��
metadata_keysr~zinstance-id)	r��MetaDataKeys�	META_DATAr�rfrgrrhr�)rK�sys_cfg�response�mdr2r2r3�check_instance_id�s


zDataSourceLXD.check_instance_idcCs�|jtjkr?|jtjkr|��t|jt�r?|j�d�r(t�	d�|jd|_n|j�d�r?dd�|jd�
�D�}t|�|_|jtjkrNt�	d�t�|_tt|j�S)z�Network config read from LXD socket config/user.network-config.

        If none is present, then we generate fallback configuration.
        rz,LXD datasource using provided network config�devicescSs g|]\}}|ddkr|�qS)r9�nicr2)�.0�k�vr2r2r3�
<listcomp>s
�z0DataSourceLXD.network_config.<locals>.<listcomp>z8LXD datasource generating network config using fallback.)
rrr�UNSETrsr�rfrgr�r)r?�itemsrAr)rKr�r2r2r3�network_config�s(
��
�zDataSourceLXD.network_config)rTrUrV�dsnamerr�rrr
r�str�__annotations__rsr�
DataSourcerur	rx�intrw�staticmethod�boolrzr�r�r��propertyrgr�rWr2r2rLr3rp�s"

��
rpcCs"tj�t�rt�t�t�j�SdS)z=Return True when this platform appears to have an LXD socket.F)�os�path�existsr[�stat�S_ISSOCK�lstat�st_moder2r2r2r3rysryT�sessionr\�do_raisec
Csrt|||�}|jst�d||j|j�d��iSz|��WSty8}zt	�
dj||j�d�d��|�d}~ww)N�Skipping %s on [HTTP:%d]:%s�utf-8zFUnable to process LXD config at {url}. Expected JSON but found: {resp})r\�resp)�_do_request�okr)r?�status_code�content�decode�jsonrrrjrk)r�r\r��url_responsernr2r2r3�_get_json_responses,
�
�����r�cCs�tddd�D]}|�|�}d|jkr!t�d�t�d|j||�qt�d|j|�|r?|js?t	�
dj|j||j�
d	�d
���|S)N�r���i�g�������?z,[GET] [HTTP:%d] %s, retrying %d more time(s)z[GET] [HTTP:%d] %sz3Invalid HTTP response [{code}] from {route}: {resp}r�)�code�router�)�ranger�r��time�sleepr)r*r?r�rrjrkr�r�)r�r\r��retriesr�r2r2r3r�0s*


�

��r�c@s0eZdZe�Ze�Ze�Ze�ZeeBeBZdS)r�N)	rTrUrVr�NONE�CONFIG�DEVICESr��ALLr2r2r2r3r�Msr�c@sDeZdZefdefdd�Zdejdefdd�Z	de
defd	d
�ZdS)�_MetaDataReader�api_versioncCs||_t�t|j�|_dSrN)r�r�combine_url�LXD_URL�_version_url)rKr�r2r2r3rGVsz_MetaDataReader.__init__r�rc

Cs�dii}t�|jd�}t||�}t|�D]L}t�t|�}t||dd�}|j�d�}|j	s6t
�d||j|�q|�
d�d}	||d|	<|	tvr`t|	|vrT||t|	<qt
�d|	|	�d	d
d��q|S)a�Iterate on LXD API config items. Promoting CONFIG_KEY_ALIASES

        Any CONFIG_KEY_ALIASES which affect cloud-init behavior are promoted
        as top-level configuration keys: user-data, network-data, vendor-data.

        LXD's cloud-init.* config keys override any user.* config keys.
        Log debug messages if any user.* keys are overridden by the related
        cloud-init.* key.
        r>F�r�r�r��/r�z,Ignoring LXD config %s in favor of %s value.�userz
cloud-initr6)rr�r�r��sortedr�r�r�r�r�r)r?r��
rpartition�CONFIG_KEY_ALIASESr*�replace)
rKr�r>�
config_url�
config_routes�config_route�config_route_url�config_route_response�
response_text�cfg_keyr2r2r3�_process_configZs:

����z_MetaDataReader._process_configr�cCs�t���T}|�|jt��d|ji}tj|vr)t�	|jd�}t
||�j�d�|d<tj
|vr6|�|�|��tj|vrOt�	|jd�}t||dd�}|rO||d<|Wd�S1s[wYdS)N�_metadata_api_versionr~r�r�Fr�)�requests�Session�mountr�rZr�r�r�rr�r�r�r�r��updater�r�r�)rKr�r�r��md_router\r�r2r2r3�__call__�s*


���

$�z_MetaDataReader.__call__N)rTrUrVr�r�rGr�r�rgr�r�r�r2r2r2r3r�Us6r�r�r�cCst|d�|d�S)a8Fetch metadata from the /dev/lxd/socket routes.

    Perform a number of HTTP GETs on known routes on the devlxd socket API.
    Minimally all containers must respond to <LXD_SOCKET_API_VERSION>/meta-data
    when the LXD configuration setting `security.devlxd` is true.

    When `security.devlxd` is false, no /dev/lxd/socket file exists. This
    datasource will return False from `is_platform_viable` in that case.

    Perform a GET of <LXD_SOCKET_API_VERSION>/config` and walk all `user.*`
    configuration keys, storing all keys and values under a dict key
        LXD_SOCKET_API_VERSION: config {...}.

    In the presence of the following optional user config keys,
    create top level aliases:
      - user.user-data -> user-data
      - user.vendor-data -> vendor-data
      - user.network-config -> network-config

    :param api_version:
        LXD API version to operated with.
    :param metadata_keys:
        Instance of `MetaDataKeys` indicating what keys to fetch.
    :return:
        A dict with the following optional keys: meta-data, user-data,
        vendor-data, network-config, network_mode, devices.

        Below <LXD_SOCKET_API_VERSION> is a dict representation of all raw
        configuration keys and values provided to the container surfaced by
        the socket under the /1.0/config/ route.
    )r�r�)r�)r�r�r2r2r3r��s#�r�cCst�|t�SrN)r�list_from_depends�datasources)�dependsr2r2r3�get_datasource_list�sr��__main__z*Query LXD metadata and emit a JSON object.)�descriptionr�rN)T)G�__doc__�loggingr�rOr�r��enumrr�json.decoderr�typingrrrrr	r
rr��requests.adaptersr�urllib3.connectionr
�urllib3.connectionpoolr�	cloudinitrrrrr�
cloudinit.netr�	getLoggerrTr)r[r�r�r�r�r4rArCrXrZrgror�rpr�ryr�r��Responser�r�r�r�r��DEP_FILESYSTEMr�r��argparser��ArgumentParser�parser�
parse_args�print�
json_dumpsr2r2r2r3�<module>s�
$
�
�
�

�&	f���
�����
�R���
�
*�
��

Spamworldpro Mini