HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-311.pyc
�

܍~cJA�	�T�dZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZmZddlZddlmZddlmZddlmZdd	lmZdd
lmZmZmZmZddlmZej e!��Z"dZ#d
Z$dZ%ddddddd�Z&de'fd�Z(	d4de
ee'dee'e
ffd�Z)Gd�de��Z*Gd�de��Z+Gd�de��Z,de'de-fd�Z.Gd�d ej/��Z0de1fd!�Z2	d5d#ej3d$e'd%e1fd&�Z4	d5d#ej3d$e'd%e1dej5fd'�Z6Gd(�d)e��Z7Gd*�d+��Z8e$e7j9fd,e'd-e7de-fd.�Z:e0ej;ffgZ<d/�Z=e!d0krUddl>Z>d1Z?e>j@e?�2��ZAeA�B��eCejDe:e7j9�3������dSdS)6a�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://linuxcontainers.org/lxd/docs/master/dev-lxd
�N)�Flag�auto)�JSONDecodeError)�Any�Dict�List�Optional�Union�cast)�HTTPAdapter)�HTTPConnection)�HTTPConnectionPool)�log)�sources�subp�
url_helper�util)�find_fallback_nicz
/dev/lxd/sockz1.0z
http://lxd�	user-data�network-config�vendor-data)zcloud-init.user-datazcloud-init.network-configzcloud-init.vendor-data�user.user-datazuser.network-config�user.vendor-data�returnc�f�d}tjd��r�	tjdg��\}}n9#tj$r'}t�d|��|cYd}~Sd}~wwxYw|���dvr1t
j��dd}|dkrdS|d	krd
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�archs     �A/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceLXD.py�_get_fallback_interface_namer2.s����L��z�'�(�(� �	 ��9�&;�%<�=�=�L�I�q�q���)�	 �	 �	 ��K�K�5��
�
�
�
 �����������
	 �����?�?���!
�
�
��#�%�%�g�.�q�1�D��y� � ��x������v��x��s�1�A'�A"�A'�"A'�nicsc���t��}|rt�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)r8�name�subnets)�version�config)rr(�debugr2)r3�primary_nics  r1�generate_network_configr@Hs���$�%�%�K��
��	�	�
��	
�	
�	
�	
�3�4�4���	�	�
+��	
�	
�	
��#�#�%+��?�?�@�
�
�
�	�	�	�c�$��eZdZ�fd�Zd�Z�xZS)�SocketHTTPConnectionc�X��t���d��||_dS�N�	localhost)�super�__init__�socket_path��selfrI�	__class__s  �r1rHzSocketHTTPConnection.__init__os)���
������%�%�%�&����rAc��tjtjtj��|_|j�|j��dS�N)�socket�AF_UNIX�SOCK_STREAM�sock�connectrI�rKs r1rSzSocketHTTPConnection.connectss9���M�&�.�&�2D�E�E��	��	���$�*�+�+�+�+�+rA)�__name__�
__module__�__qualname__rHrS�
__classcell__�rLs@r1rCrCnsG�������'�'�'�'�'�,�,�,�,�,�,�,rArCc�$��eZdZ�fd�Zd�Z�xZS)�SocketConnectionPoolc�X��||_t���d��dSrE)rIrGrHrJs  �r1rHzSocketConnectionPool.__init__ys)���&���
������%�%�%�%�%rAc�*�t|j��SrN)rCrIrTs r1�	_new_connzSocketConnectionPool._new_conn}s��#�D�$4�5�5�5rA)rUrVrWrHr^rXrYs@r1r[r[xsG�������&�&�&�&�&�6�6�6�6�6�6�6rAr[c��eZdZdd�ZdS)�LXDSocketAdapterNc�*�tt��SrN)r[�LXD_SOCKET_PATH)rK�url�proxiess   r1�get_connectionzLXDSocketAdapter.get_connection�s��#�O�4�4�4rArN)rUrVrWre�rAr1r`r`�s(������5�5�5�5�5�5rAr`�
metadata_typec�6�t|t��r|S|�iS	tj|��}n<#t$r/}tjd�||�����|�d}~wwxYw|�)tjd�||������|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)rg�metadata_value�parsed_metadata�excs    r1�_raw_instance_data_to_dictrt�s����.�$�'�'�������	���.��8�8���������.�
��v�m�>�v�J�J�
�
��	���������
���.�
��v�m�>�v�J�J�
�
�	
��s�2�
A+�*A&�&A+c����eZdZUdZejZeee	fe
d<ejZeee	fe
d<dZdZ
deddf�fd	�Zdefd
�Zdefd�Zde	fd�Zde	fd
�Zedefd���Z�xZS)�
DataSourceLXD�LXD�_network_config�_crawled_metadata)�
merged_cfg�user.meta-datarrT�ci_pkl_versionrNc�X��t���|��d|_dS)NT)rG�	_unpickle�skip_hotplug_detect)rKr|rLs  �r1r~zDataSourceLXD._unpickle�s)���
�����.�)�)�)�#'�� � � rAc��t��S)z@Check platform environment to report if this datasource may run.)�is_platform_viablerTs r1�_is_platform_viablez!DataSourceLXD._is_platform_viable�s��!�#�#�#rAc���|���st�d��dStjtjdt
���|_td|j�d����|_	|j�di��}|�di��}|rtd|��}t|j	t��s2tjtj
|j	��|g��|_	d|jvr|jd|_d	|jvr td	|jd	��|_d
|jvr|jd
|_dS)z=Crawl LXD socket API instance data and return True on successz+Not an LXD datasource: No LXD socket found.FzCrawl of metadata service)�logfunc�msg�func�	meta-datar=r{rrrT)r�r(r>r�log_time�
read_metadataryrt�get�metadatarkrl�
mergemanydictrm�userdata_rawrx�vendordata_raw)rKr=�
user_metadatas   r1�	_get_datazDataSourceLXD._get_data�sv���'�'�)�)�	��I�I�C�D�D�D��5�!%���I�+��"
�"
�"
���
3���/�3�3�K�@�@�
�
��
��'�+�+�H�b�9�9���
�
�#3�R�8�8�
��	�6� �-���M��$�-��.�.�	� �.����
�.�.�
�>���D�M��$�0�0�0� $� 6�{� C�D���t�5�5�5�#=� �$�"8�9I�"J�$�$�D� ��D�2�2�2�"&�"8��"G�D���trAc�D�d�tt���S)z.Return subplatform details for this datasourcez"LXD socket API v. {ver} ({socket}))�verrO)rp�LXD_SOCKET_API_VERSIONrbrTs r1�_get_subplatformzDataSourceLXD._get_subplatform�s$��3�:�:�&��;�
�
�	
rAc��ttj���}|�di��}t	|t
��st
j|��}|�d��|j�d��kS)z%Return True if instance_id unchanged.��
metadata_keysr�zinstance-id)	r��MetaDataKeys�	META_DATAr�rkrlrrmr�)rK�sys_cfg�response�mds    r1�check_instance_idzDataSourceLXD.check_instance_id�sp�� �|�/E�F�F�F��
�\�\�+�r�
*�
*���"�d�#�#�	$����#�#�B��v�v�m�$�$��
�(9�(9�-�(H�(H�H�HrAc��|jtjkr�|jtjkr|���t|jt��r�|j�d��r-t�	d��|jd|_nW|j�d��r=d�|jd�
��D��}t|��|_|jtjkr-t�	d��t��|_tt|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�devicesc�0�g|]\}}|ddk�|��S)r8�nicrf)�.0�k�vs   r1�
<listcomp>z0DataSourceLXD.network_config.<locals>.<listcomp>�s5��*�*�*� �A�q��V�9��-�-��-�-�-rAz8LXD datasource generating network config using fallback.)
rxr�UNSETryr�rkrlr�r(r>�itemsr@r)rKr�s  r1�network_configzDataSourceLXD.network_config�s;����7�=�0�0��%���6�6���� � � ��$�0�$�7�7�
L��)�-�-�.>�?�?�
L��I�I�L�M�M�M�+/�+A�(�,�D�(�(��+�/�/�	�:�:�L�*�*�$(�$:�9�$E�$K�$K�$M�$M�*�*�*�G�
,C�7�+K�+K�D�(���7�=�0�0��I�I�J�
�
�
�$;�#<�#<�D� ��D�$�.�/�/�/rA)rUrVrW�dsnamerr�rxr
r�str�__annotations__ry�sensitive_metadata_keysr�intr~�boolr�r�r�r��propertyrlr�rXrYs@r1rvrv�s2��������
�F�(/�
�O�U�4��9�%�5�5�5�*1�-��u�T�3�Y�'�7�7�7�����(��(��(�(�(�(�(�(�$�T�$�$�$�$� �4� � � � �D
�#�
�
�
�
�I�C�I�I�I�I��0��0�0�0��X�0�0�0�0�0rArvc��tj�t��r0t	jtjt��j��SdS)z=Return True when this platform appears to have an LXD socket.F)�os�path�existsrb�stat�S_ISSOCK�lstat�st_moderfrAr1r�r�
s;��	�w�~�~�o�&�&�@��}�R�X�o�6�6�>�?�?�?��5rAT�sessionrc�do_raisec���t|||��}	|���S#t$r4}tjd�||j�����|�d}~wwxYw)NzFUnable to process LXD config at {url}. Expected JSON but found: {resp})rc�resp)�_do_request�jsonrrrorp�text)r�rcr��url_responserss     r1�_get_json_responser�s����w��X�6�6�L��� � �"�"�"�������.�
/�/5�v��l�/�06�0�0�
�
�
�	��������s�'�
A%�/A � A%c���|�|��}t�d|j|��|r;|js4tjd�|j||j������|S)Nz[GET] [HTTP:%d] %sz3Invalid HTTP response [{code}] from {route}: {resp})�code�router�)	r�r(r>�status_code�okrrorpr�)r�rcr�r�s    r1r�r�#s����{�{�3���H��I�I�"�H�$8�#�>�>�>��
���
��.�A�H�H��)���]�
I�
�
�
�
�	
��OrAc�n�eZdZe��Ze��Ze��Ze��ZeezezZdS)r�N)	rUrVrWr�NONE�CONFIG�DEVICESr��ALLrfrAr1r�r�3sI�������4�6�6�D�
�T�V�V�F��d�f�f�G�����I�
�7�
�Y�
&�C�C�CrAr�c�H�eZdZefdefd�Zdejdefd�Z	de
defd�ZdS)	�_MetaDataReader�api_versionc�\�||_tjt|j��|_dSrN)r�r�combine_url�LXD_URL�_version_url)rKr�s  r1rHz_MetaDataReader.__init__<s(��&���&�2�7�D�<L�M�M����rAr�rc
�P�dii}tj|jd��}t||��}t	|��D]�}tjt
|��}t
||d���}|js(t�	d||j
|j���]|�d��d}|j|d|<|tvrVt||vr|j|t|<��t�d||�dd	d
������|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�zSkipping %s on [HTTP:%d]:%s�/���z,Ignoring LXD config %s in favor of %s value.�userz
cloud-initr5)rr�r�r��sortedr�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�cfg_keys	         r1�_process_configz_MetaDataReader._process_config@sX��!�"�~���+�D�,=�x�H�H�
�+�7�J�?�?�
�
#�=�1�1�!	�!	�L�)�5�g�|�L�L��$/��)�E�%�%�%�!�)�+�
��	�	�1�$�)�5�)�.�	����"�-�-�c�2�2�2�6�G�)>�(B�F�8��W�%��,�,�,�&�g�.�f�<�<�.�2��*�7�3����K�K�F�������a�@�@�����
�
rAr�c�"�tj��5}|�|jt	����d|ji}tj|vr2tj	|jd��}t||��j|d<tj|vr(|�
|�|����tj|vr-tj	|jd��}t!||��|d<|cddd��S#1swxYwYdS)N�_metadata_api_versionr�r�)�requests�Session�mountr�r`r�r�r�rr�r�r�r��updater�r�r�)rKr�r�r��md_routercs      r1�__call__z_MetaDataReader.__call__wsD��
�
�
�
�	�7��M�M�$�+�-=�-?�-?�@�@�@�/��1A�B�B��%��6�6�%�1��%�{����#.�g�x�"@�"@�"E��;���"�m�3�3��	�	�$�.�.�w�7�7�8�8�8��#�}�4�4� �,�T�->�	�J�J�� 2�7�C� @� @��9�
��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�C#D�D�DN)rUrVrWr�r�rHr�r�rlr�r�r�rfrAr1r�r�;s�������*@�N�N�C�N�N�N�N�5�x�'7�5�D�5�5�5�5�n���$������rAr�r�r�c�6�t|���|���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�s  r1r�r��s,��F4�?�{�3�3�3�#����rAc�6�tj|t��SrN)r�list_from_depends�datasources)�dependss r1�get_datasource_listr��s���$�W�k�:�:�:rA�__main__z*Query LXD metadata and emit a JSON object.)�descriptionr�rN)T)E�__doc__r�rOr��enumrr�json.decoderr�typingrrrr	r
rr��requests.adaptersr�urllib3.connectionr
�urllib3.connectionpoolr�	cloudinitr�loggingrrrr�
cloudinit.netr�	getLoggerrUr(rbr�r�r�r�r2r@rCr[r`rlrt�
DataSourcervr�r�r�r��Responser�r�r�r�r��DEP_FILESYSTEMr�r��argparser��ArgumentParser�parser�
parse_args�print�
json_dumpsrfrAr1�<module>rsX����
�	�	�	�
�
�
�
�������������(�(�(�(�(�(�9�9�9�9�9�9�9�9�9�9�9�9�9�9�9�9�����)�)�)�)�)�)�.�-�-�-�-�-�5�5�5�5�5�5�$�$�$�$�$�$�5�5�5�5�5�5�5�5�5�5�5�5�+�+�+�+�+�+��g���!�!��!����
��(�!1�+�!�+�%�
����c�����6!%�#�#�
�4��9�
�#�	�#�s�(�^�#�#�#�#�L,�,�,�,�,�>�,�,�,�6�6�6�6�6�-�6�6�6�5�5�5�5�5�{�5�5�5�
�c��d�����:g0�g0�g0�g0�g0�G�&�g0�g0�g0�T�D�����;?���
�
��$'��37����� ;?�
�
�
�
�
�$'�
�37�
�
��
�
�
�
� '�'�'�'�'�4�'�'�'�K�K�K�K�K�K�K�K�^.�".�"2�%�%��%��%�
�%�%�%�%�T�W�+�-�.���;�;�;��z����O�O�O�B�K�
$�X�
$��
=�
=�
=�F�
������	�E�/�$�/�-�-�l�6F�G�G�G�
H�
H�I�I�I�I�I�
�rA