File manager - Edit - /usr/lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceLXD.cpython-310.pyc
Back
o �Ad�D � @ sV d Z ddlZddlZddlZddlZddlmZmZ ddlm Z ddl mZmZm Z mZmZmZmZ ddlZddlmZ ddlmZ ddlmZ dd lmZ dd lmZmZmZmZ ddl m!Z! e�"e#�Z$dZ%d Z&dZ'ddddddd�Z(de)fdd�Z* d<dee e) dee)ef fdd�Z+G dd� de�Z,G dd� de�Z-G dd� de�Z.de)de/fd d!�Z0G d"d#� d#ej1�Z2de3fd$d%�Z4 &d=d'ej5d(e)d)e3fd*d+�Z6 &d=d'ej5d(e)d)e3dej7fd,d-�Z8G d.d/� d/e�Z9G d0d1� d1�Z:e&e9j;fd2e)d3e9de/fd4d5�Z<e2ej=ffgZ>d6d7� Z?e#d8k�r)ddl@Z@d9ZAe@jBeAd:�ZCeC�D� eEe�Fe<e9j;d;��� dS dS )>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://linuxcontainers.org/lxd/docs/master/dev-lxd � N)�Flag�auto)�JSONDecodeError)�Any�Dict�List�Optional�Tuple�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)�cloud-init.user-datazcloud-init.network-config�cloud-init.vendor-data�user.user-datazuser.network-config�user.vendor-data�returnc C s� d} t �d�rIz t � dg�\}}W n t jy, } zt�d|� | W Y d }~S d }~ww |�� dv rIt�� d d }|dkrAdS |d krGd S dS | 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 �nicsc C sF 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)r9 �name�subnets)�version�config)r r) �debugr4 )r5 �primary_nicr2 r2 r3 �generate_network_configI s$ �� ���rA c �$ e Zd Z� fdd�Zdd� Z� ZS )�SocketHTTPConnectionc s t � �d� || _d S �N� localhost)�super�__init__�socket_path��selfrH �� __class__r2 r3 rG p � zSocketHTTPConnection.__init__c C s$ t � t jt j�| _| j�| j� d S �N)�socket�AF_UNIX�SOCK_STREAM�sock�connectrH �rJ r2 r2 r3 rS t s zSocketHTTPConnection.connect)�__name__� __module__�__qualname__rG rS � __classcell__r2 r2 rK r3 rC o � rC c rB )�SocketConnectionPoolc s || _ t� �d� d S rD )rH rF rG rI rK r2 r3 rG z s zSocketConnectionPool.__init__c C s t | j�S rN )rC rH rT r2 r2 r3 � _new_conn~ s zSocketConnectionPool._new_conn)rU rV rW rG r[ rX r2 r2 rK r3 rZ y rY rZ c @ s e Zd Zddd�ZdS )�LXDSocketAdapterNc C s t t�S rN )rZ �LXD_SOCKET_PATH)rJ �url�proxiesr2 r2 r3 �get_connection� s zLXDSocketAdapter.get_connectionrN )rU rV rW r` r2 r2 r2 r3 r\ � s r\ � metadata_typec C sx t |t�r|S |du r i S zt�|�}W n ty+ } zt�dj| |d��|�d}~ww |du r:t�dj| |d���|S )a6 Convert 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)ra �metadata_value�parsed_metadata�excr2 r2 r3 �_raw_instance_data_to_dict� s. �������rm c s� e Zd ZU dZejZeee f e d<